IPtablesをVPNエッジとして機能するルータとして設定する

IPtablesをVPNエッジとして機能するルータとして設定する

パケットがVPNに出入りできるように、LinuxシステムでIPtablesを設定したいと思います。

これは3つのノードを持つ小規模ネットワークです。

  1. v1:VPN内部のLinuxマシン。 VPN サブネットは 10.10.100.0/22 です。
  2. out1: VPN 外部の Linux システムです。 VPN および VPN IP 内に存在するノードの数に関する情報が含まれますが、VPN 自体にはありません。
  3. r:ルーティング要件に従って設定されたiptablesを持つLinuxシステム。これはVPNにあり、out1もVPNにパケットを送信できます。だからそれは端にあります。したがって、rのeth0はout1と同じネットワークにあり、tun0はVPNインターフェイスです。

私はrを10.10.100.0/22に向けたout1を除くすべてのパケットの「次のホップ」にしました。だからパケットはrに入っています。 rの次の2つのiptablesルールを使用すると、out1はnetcatを介してv1と通信できます。

   iptables -t nat -A POSTROUTING --out-interface tun0 -j MASQUERADE
   iptables -A FORWARD --in-interface eth0 -j ACCEPT

MASQUERADE機能が必要なのはなぜですか?

v1 が out1 の ACK パケットを試みると、r に到着して破棄されます。 tcpdumpを使用して、v1がout1に向かうパケットを送信し、rに到達したが決してout1に到達しないことを確認しました。

ループをどのように閉じますか? out1はすでに宛先IPを知っているため、NATを実行する必要はありません。 r このパケットを eth0 から tun0 に移動し、次に tun0 から eth0 に移動したい。

ベストアンサー1

私はこれをしました

#Forward connections coming in from eth0 to tun0
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

#Masquerade packets leaving tun0
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

#Forward Stateful connections coming in from tun0 to eth0
iptables -A FORWARD -i tun0 -o eth0 -m state --state ESTABLISHED,RELATED \
             -j ACCEPT

おすすめ記事