web-dev-qa-db-ja.com

複数のプライベートサブネットをNATする場合の正しいiptablesルールは何ですか?

ルーターとして機能するCentosミニマル6.5があります。 eth0はCiscoスイッチトランクポートに接続され、VLAN 200〜213を許可します。

このリンクが示唆しているように、私はいくつかのVLANインターフェースを持っています:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-networkscripts-interfaces_802.1q-vlan-tagging.html

また、IPv4転送があるため、200〜213のネットワークのすべてのネットワークデバイスは、このLinuxボックスをルーターとして使用して相互に通信できます。

問題は、インターネットにアクセスするためにそれらが必要なので、次のルールを追加しました。

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to 1.1.1.56

1.1.1.56は「外部」アドレスです。これは正常に機能し、内部ネットワークに接続されたデバイスはIntertnetアドレスにpingを実行できますが、サブネット間で相互に通信できなくなるため、192.168.211.55は8.8.8.8にpingを実行できますが、192.168.213.5とは通信できません。

ルールを削除するためにサービスiptablesを再起動するとすぐに、内部サブネット間での会話を再開できます。

複数のプライベートサブネットに対してNAT)を設定する正しい方法は何でしょうか?それとも転送を設定する正しい方法でしょうか?

2
Jose Mendez

また、ファイアウォールルールで、NATされるトラフィックの宛先インターフェイスを指定する必要があります。それ以外の場合は、すべてをNATしようとしますが、これまで見てきたように、それは機能しません。外の世界に向かうトラフィックのみをNAT変換する必要があります。

したがって、インターネットに接続されたすべてのトラフィックのデフォルトルートが送信されるとしましょうVLAN 200(指定しなかったため)、a VLAN専用)外部トラフィック。その場合、ファイアウォールルールに-o eth0.200を追加します。

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0.200 -j SNAT --to 1.1.1.56
4
Michael Hampton