web-dev-qa-db-ja.com

IPTablesマルチVLAN NAT複数のIPへ

NATセットアップに少し問題があります。

私がやろうとしていること:

2つのVLAN(この例では100と200)があり、それらが別々のIPを介してネットワークにアクセスできるようにしたいと考えています。これは、iptablesNATによって実現する必要があります。このセットアップはpf(FreeBSD)で作成しましたが、残念ながら、使用する必要のあるハードウェアには互換性がありません。メインルーター内でそれを望んでいますが、CPUはそのような負荷を処理できません。 IP-Tablesなどで私はただの初心者です;)スキーマ:

VLAN 100(10.100.0.0/24)-> 10.100.0.1 NAT xxx.yyy.zzz.6->ネットワーク上のユーザー

VLAN 200(10.200.0.0/24)-> 10.200.0.1 NAT xxx.yyy.zzz.7->ネットワーク上のユーザー

これらすべてが同じ物理インターフェイス上にあり、VLANインターフェイスなどがあります。

これは私の現在の設定です:/ etc/network/interfaces

 lo .... 
 
 iface ens2f3 inet static 
アドレスxxx.yyy.zzz.6 
ネットマスク255.255.252.0 
 
 auto ens2f3.100 
 iface ens2f3.100 inet static 
アドレス10.100.0.1 
ネットマスク255.255.255.0 
 vlan-raw-device ens2f3 
 
 iface ens2f3 inet static 
アドレスxxx.yyy.zzz.7 
ネットマスク255.255.252.0 
 
 autoens2f3.200 
 iface ens2f3.200 inet static 
アドレス10.200.0.1 
ネットマスク255.255.255.0 
 vlan-raw-device ens2f3 

/etc/iptables/rules.v4(自動ロード)

#NAT TABLE 
 * nat 
:PREROUTING ACCEPT [0:0] 
:INPUT ACCEPT [0:0] 
:OUTPUT ACCEPT [ 0:0] 
:POSTROUTING ACCEPT [0:0] 
-POSTROUTING-s 10.100.0.0/24 -o ens2f3 -j SNAT --to-source xxx.yyy.zzz.6 
-POSTROUTING -s 10.200.0.0/24 -o ens2f3 -j SNAT --to-source xxx.yyy.zzz.7 
 
 COMMIT 
 
#一般テーブル
 * filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [0 :0] 
 COMMIT 
 
#この設定は非常に安全ではないことを私は知っています! NAT動作中
になったときにサーバーをロックダウンします

問題は、10.100.0.100で取得できることです。NAT経由で取得する必要のあるIPではなく、まさにこのIP(10.100.0.100;不可能なはずです)を使用してxxx.yyy.zzy.1に接続できます。

また、パッケージがインターフェイスに到着したときにパッケージにマークを付けて、個別のルーティングテーブルを用意してみました。上記の問題は存在しませんが、どこにも接続できません

LinuxベースのOSでこれを実現するためのヒントを教えてください。必要に応じて、別の10Gインターフェイスを利用できます

2
WhoAmI

私はすべてを分析していませんが、ステップ1はこれを修正することです:

-o ens2f3

postROUTINGであるため、ルーティングの決定が行われ、パケットは別のインターフェイスを介してゲートウェイxxx.yyy.zzz.1に直接送信されると思います。

-o enp3s0
2
kubanczyk