ハイパーバイザーで複数の公開IP中シングルネットワークインターフェース、2セットの仮想マシンがあります。
- グループAメンバーのパブリックIPは、ホストインターフェイスを介して(ルーティングが確立されたブリッジを介して)そのメンバーに直接ルーティングされます。 [1]
- グループ B のメンバーは NAT が設定されたブリッジにあるため、プライベート IP を取得し、その接続は特定のパブリック IP を介して NAT されます。私たちはこれを共有アドレスと呼びます
IPb
。 [2]
特定のポートからの着信接続は、IPb
特定のグループBメンバーに転送されます。私が経験している問題は、DNAT(Port Forward)ルールが経由の着信パケットだけでなく、IPb
他のパブリックIPからの着信パケットにも適用されることです。
DNATルールをに転送されるパケットに制限するにはどうすればよいですかIPb
?
頑張った-dst
IPb
ただし、これにより、PREROUTING
実際にはルールはまったくトリガーされません(ポート転送は停止します)。 [サム]
ありがとう
[1]
auto eth0
iface eth0 inet static
address <eth0-main-ip>/32
gateway <gateway-ip>
pointopoint <gateway-ip>
#GroupA Bridge:
auto vmbr12
iface vmbr12 inet static
address <eth0-main-ip>/32
bridge-ports none
bridge-stp off
bridge-fd 0
up ip route add <Public-IPa>/32 via <eth0-main-ip> dev vmbr12
down ip route del <Public-IPa>/32 via <eth0-main-ip> dev vmbr12
.
.
.
[2]
#GroupB Bridge:
auto vmbr4
iface vmbr4 inet static
address 10.0.0.1/16
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/16' -o eth0 -j MASQUERADE
post-up iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 22 -j DNAT --to 10.0.101.1:22
post-up iptables -A FORWARD -p tcp -d 10.0.101.1 --dport 22 -j ACCEPT
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/16' -o eth0 -j MASQUERADE
post-down iptables -D PREROUTING -t nat -i eth0 -p tcp --dport 22 -j DNAT --to 10.0.101.1:22
post-down iptables -D FORWARD -p tcp -d 10.0.101.1 --dport 22 -j ACCEPT
.
.
.
[3]
#Using IPb in PREROUTING rule
<snip>
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/16' -o eth0 -j MASQUERADE
post-up iptables -A PREROUTING -t nat -i eth0 -p tcp -dst IPb --dport 22 -j DNAT --to 10.0.101.1:22
post-up iptables -A FORWARD -p tcp -d 10.0.101.1 --dport 22 -j ACCEPT
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/16' -o eth0 -j MASQUERADE
post-down iptables -D PREROUTING -t nat -i eth0 -p tcp -dst IPb --dport 22 -j DNAT --to 10.0.101.1:22
post-down iptables -D FORWARD -p tcp -d 10.0.101.1 --dport 22 -j ACCEPT
</snip>
ベストアンサー1
PREROUTINGルールで-dst IPbを試みましたが、実際にはルールがまったくトリガーされませんでした(ポート転送が停止しました)。 [サム]
しかし、これが正しいアプローチであることがわかりました。IPb
〜しなければならないサブネットの長さを含みます。この場合、私はちょうど使用しましたが、期待どおりに機能しIPb/32
ました。