Ubuntuボックス(「ホスト」と呼びます)に接続されているデバイス(「ターゲット」と呼びます)からリモートオフィスのサーバーにトラフィックをルーティングしようとしています。
ホストは、NIC efix
と呼ばれる)を介して接続されたRacoon IPSec VPNを使用します。これにより、IPアドレスefix:0
を持つ192.168.190.132
と呼ばれるエイリアスIFが作成されます。サーバーに到達できます。
ホストとターゲット間のリンクはイーサネットリンクであり、ホストの場合はIF eusb
のIPアドレス10.0.0.1
を使用し、ターゲットの場合はIF 10.0.0.2
のeth0
を使用します。
次のルートとiptablesエントリを設定しました。
目標通り:
10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
default 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
ホスト上:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to 192.168.190.132
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT
Wiresharkを使用してHTTPGETを監視すると、ターゲットからのSYN
パケットがサーバーに到達するのを確認できますが、サーバーのSYNACK
パケットはホストで停止し、ターゲットに転送されません。 。ここで何かが足りませんか? SNATは接続を追跡することになっているのではありませんか?
問題は、フォワードルールがSNATに依存してリターンパケットに対してすでに発生している可能性があります。 「iptables-AFORWARD -d 10.0.0.0/24」と言うと、NATを介してすでに変更されているトラフィックに依存します。これはafter転送です。最初のパケットが着信すると、宛先としてNATされたIPアドレス(192.168.190.32)があります。
おそらくあなたが望むのはこのようなルールです:
iptables -A forward -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A -i efix -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.190.132
最初のルールは、「ホスト」からのSNATされた接続からのリターントラフィックなど、既存の接続に関連するトラフィックを許可します。 2つ目は、「ホスト」からのトラフィックを受け入れます(レイアウトを理解している場合、「ホスト」はトラフィックを「etho0」インターフェイス上のNATファイアウォールに渡しますよね?)。さらに、正確なニーズに応じて、「-d192.168.190.0/24」でそのルールを制限することもできます。
最後のルールは、トラフィックをSNATするように指示する、既に投稿したものです。