iptablesはWANからVMに転送しません。

iptablesはWANからVMに転送しません。

2つのネットワークインターフェイスを備えたゲートウェイのように動作するコンピュータがあります。

  • eth0LAN:192.168.1.0/24
  • eth1WAN:(XXX.XXX.XXX.XXX私の公開IP)

このマシンにはvirtualboxに3つのVMゲストがあります。これらのすべてにはブリッジネットワークがあり、DNSが提供する静的IPがあります。

私は次のようなiptablesを持っています

*filter
    -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i eth0 -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# Rules a webserver VM
*nat
    -A POSTROUTING -o eth1 -j MASQUERADE
    -A PREROUTING -d XXX.XXX.XXX.XXX/32 -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.100
    -A POSTROUTING -s 192.168.1.100/32  -j SNAT --to-source XXX.XXX.XXX.XXX

LANは仮想マシンにアクセスできますが、WANから仮想マシンにアクセスしようとすると機能しません。何が問題なの?

答え1

フィルタテーブルのFORWARDのデフォルトポリシーがDROPであると仮定するのは正しいですか? (そうでない場合はとにかくすべてを受け入れるので、これら2つのフィルタリングルールは意味がありません。)

この仮定が正しい場合、問題は新しいパケットを仮想マシンに転送するためのACCEPTルールがないことです。次のルールを追加してください。

iptables -A FORWARD -i eth1 -o eth0 -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT

ところで、VMからの着信パケットのSNATルールは冗長です。すでにeth1を通過するすべてのパケットをなりすましています。

関連情報