VPNクライアントへのポート転送


0

OpenVPNサーバーを実行しているTomato(shibby)にルーターがあります(TAPを使用tap21しています。インターフェイスはルーター上にあります)。さまざまなリソース(一部のワークステーションを含む)がeth0このルーターで物理的に接続されています。全国に別の物理デバイスがあり、nginxやその他のサービスを実行しています。今、私はこれは素晴らしい地形セットアップされていない知っているが、不変の状況は、nginxのを実行しているデバイスがいることを必要としなければならないポート80に、このデバイスのインバウンドトラフィックとアウトバウンドトラフィックのすべてを、ルータ、VPNのクライアントとなると443本を通じてトンネルされなければなりませんVPN接続。

だから基本的に、起こる必要があるのは:

  1. example.comはルーター上のWANのIPに解決します
  2. ルーターはtap21nginxサーバーへのインターフェースを介してポート80と443を転送します
  3. nginxサーバーの応答が返されtap21、WAN経由で返されます

#2の部分は私が問題を抱えているものです。

サーバーは現在、サブネット上の他のデバイスと通信でき(VPN上の他のリソースeth0とルーターに物理的に接続されているリソースにpingを実行できます)、VPN経由でインターネットにアクセスできます。ただし、ポートをWANからVPN上のサーバーのアドレスに転送することはできませんでした。私が最初に試みたのは、単純にトマトのポート転送GUIを試すことでした(ただし、これはVPN上のIPでは機能せず、eth0または上のIPでのみ機能するようwlan0です)。それがうまくいかなかったとき、iptablesルールを追加しようとしましたが、iptablesにまだあまり不快であるため、この奇妙で問題のあるネットワーク設定に実際には関係のない質問に対する他の回答からスニペットを見つけることができました。私が試していることはnc次のとおりです(10000をリスニングのテストポートとして使用):

iptables -t nat -I PREROUTING -p tcp -m tcp --dport 10000 -j DNAT --to-destination 192.168.12.53:10000
iptables -I FORWARD -d 192.168.12.53 -p tcp --dport 10000 -j ACCEPT

ただし、この方法で再ルーティングされているパケットに何が起こっているのかわかりません。サーバーに到達していないのは確かです。基本的に、私の質問は、特定のポートの着信接続をVPNの特定のデバイスに転送する方法です。eth0もちろん、ルーターの他のリソースからのポート80および443のアウトバウンドトラフィックは影響を受けてはなりません。

あなたが提供できる助けをありがとう!

回答:


0

何度もいじくり回した後、私はそれを理解しました(これがなぜ機能しているのかを説明できるコメントは歓迎しますが)。第一に、POSTROUTINGルールがないことは、明らかに、サーバーにパケットを破棄させていました。調べることでiptablesトマトは、GUIを通じて作成したルールを、私はのために同様のエントリを作成しWANPREROUTINGwanin、とINPUT。なぜINPUTルールが必要なのか完全にはわかりません。おそらくそれを削除し、-mフラグを追加できますwaninか?

iptables -t nat -I WANPREROUTING -i vlan2 -p tcp -m tcp --dport 80 -j DNAT --to-destination {SERVER_IP}:80
iptables -I wanin -d {SERVER_IP} -i vlan2 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp -m tcp -i vlan2 --dport 80 -m state --state NEW -j shlimit

Tomato GUIはPOSTROUTINGルールを自動的に作成しないため、同様にルールを作成する必要がありました。

iptables -t nat -I POSTROUTING -p tcp -d {SERVER_IP} --dport 80 -o tun22 \! -s {GATEWAY_IP} -j SNAT --to-source {GATEWAY_IP}

ポート80と443に対してこのような一連のルールを実行し、インターネットからVPNを介してサーバーにアクセスできるようになりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.