web-dev-qa-db-ja.com

IPTables DNAT WANホストされたVMへのインターフェイスは失敗しますが、DNATからWAN IPは成功します

よろしくお願いします!

状況は次のとおりです。

1。 domain0には2つのNICがあります(LAN = enp1s0f0、WAN = enp1s0f1)
2。 domain0のvm0にはIP = 10.4.4.10があります
3。 ip_forward = 1ANDすべてのインターフェースforwarding = 1
4。 WAN(ISPからのdhcp)の事前ルーティング->インターフェイス<-10.4.4.10へのDNAT
5。 WANの事前ルーティング(ISPからのdhcp)-> IP <-DNAT to 10.4.4.10

問題は!LANです! domain.comへのHTTPトラフィックは、上記の(4)で失敗します。
そして!LAN! domain.comへのHTTPトラフィックは、上記の(5)で成功します。

次のことがあればいいでしょう:

 $ {IPTABLES} -t nat -A PREROUTING $ {STATE_NEW_TCP} -p tcp -i $ {if_WAN} --dport 80 -j DNAT --to-destination $ {ip_VM0}:80 
 
 $ {IPTABLES} -t nat -A PREROUTING $ {STATE_NEW_UDP} -p udp -i $ {if_WAN} --dport 80 -j DNAT --to-destination $ {ip_VM0}:80 



しかし、これは機能するだけです:

 MY_IP = 22.22.222.22/24
$ {IPTABLES} -t nat -A PREROUTING $ {STATE_NEW_TCP} -p tcp -d $ {MY_IP} --dport 80 -j DNAT --to-destination $ {ip_VM0}:80 $ {IPTABLES} -t nat -A PREROUTING $ {STATE_NEW_UDP} -p udp -d $ {MY_IP} --dport 80 -j DNAT --to-destination $ {ip_VM0}:80


Q。 !LANトラフィックを取得する正しい方法は何ですか! domain.com(VM0でホストされているWebサイト)へ?
現在、iptablesは(ISPから割り当てられたdhcp)WANインターフェイスから仮想マシンへのDNAT転送をPREROUTINGしています。
助けていただければ幸いです。 :)

注:CentOS 7(1611)の使用

((RESULTS FILTERED))=質問に関連する情報のみを提供します。

 Chain INPUT(policy DROP 2 packet、120 bytes)((RESULTS FILTERED))
 pkts bytes target prot opt in out source destination 
 0 0 ACCEPT tcp --enp1s0f1 * 0.0 .0.0/0 0.0.0.0/0 state NEW tcp dpt:80 
 0 0 ACCEPT udp --enp1s0f1 * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:80 
 0 0 ACCEPT tcp- * * 0.0.0.0/010.4.4.10状態NEWtcp dpt:80 
 0 0 ACCEPT udp- * * 0.0.0.0/010.4.4.10状態NEWudp dpt:80 
 
 Chain FORWARD(policy DROP 0 packet、0 bytes)((RESULTS FILTERED))
 pkts bytes target prot opt in out source destination 
 0 0 ACCEPT tcp- enp1s0f1 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 
 0 0 ACCEPT udp --enp1s0f1 * 0.0.0.0/0 0.0.0.0/0状態NEWudp dpt:80 
 0 0 ACCEPT tcp- * * 0.0.0.0/010.4.4.10状態NEWtcp dpt:80 
 0 0 ACCEPT udp- * * 0.0.0.0/0 10.4.4.10 state NEW udp dpt:80 
 
 Chain PREROUTING(policy ACCEPT 7 packet、689 bytes)((RESULTS FILTERED))
 pkts bytes target prot opt in out source destination 
 0 0 DNAT tcp --enp1s0f1 * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 to:10.4.4.10:80 
 0 0 DNAT udp --enp1s0f1 * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:80 to:10.4.4.10:80 
 1 60 DNAT tcp- * * 0.0.0.0/022.22.222.22状態NEW tcp dpt:80 to:10.4.4.10:80 
 0 0 DNAT udp- * * 0.0.0.0/022.22.222.22状態NEWudp dpt:80 to:10.4.4.10:80 
 [._ ___。] Chain POSTROUTING(policy ACCEPT 22181 packet、1435K bytes)
 pkts bytes target prot opt in out source destination 
 338K 73M MASQUERADE all- * enp1s0f1 10.2.2.0/24 0.0.0.0/ 0 
 16549 1086K MASQUERADE all- * enp1s0f1 10.4.4.0/24 0.0.0.0/0

domain0$ ip a((RESULTS FILTERED))
 2 :enp1s0f0:mtu 1500 qdisc mq state UP qlen 1000 
 link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff 
 inet10.2。 2.1/24 brd10.2.2.255スコープグローバルenp1s0f0 
 valid_lft forever Preferred_lft forever 
 3:enp1s0f1:mtu 1500 qdisc mq state UP qlen 1000 
 link/ether XX:XX:XX: XX:XX:XX brd ff:ff:ff:ff:ff:ff 
 inet 22.22.222.22/24 brd255.255.255.255スコープグローバルダイナミックenp1s0f1 
 valid_lft 87813sec Preferred_lft 87813sec 
 4:xenbr0:mtu 1500 qdisc noqueue state UP qlen 1000 
 link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff 
 inet 10.4.4.1/24 brd 10.4.4.255 scope global xenbr0 
 valid_lft forever Preferred_lftforever 
 9:vm0-emu:mtu 1500 qdisc pfifo_fast master xenbr0 state UNKNOWN qlen 1000 
 link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff 
 10:vm0:mtu 1500 qdisc mq master xenbr0 state UP qlen 32 
 link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff 
 
 domain0 $ brctl show 
 bridge name bridge id STP有効なインターフェイス
 xenbr08000.feffffffffff no vm0 
 vm0-emu 
 
 domain0 $ cat/proc/sys/net /ipv4/ip_forward
1

domain0$ cat/proc/sys/net/ipv4/conf/*/forwarding((RESULTS FILTERED))
 1 
 1 
 1 
 1 
 1 
 1 
 1 
 
 domain0 $ ls/proc/sys/net/ipv4/conf/-l((RESULTS FILTERED))
 dr-xr-xr-x。 1ルートルート05月2日15:31すべて
 dr-xr-xr-x。 1ルートルート05月2日15:31デフォルト
 dr-xr-xr-x。 1ルートルート05月2日18:08vm0 
 dr-xr-xr-x。 1ルートルート05月2日18:08vm0-emu 
 dr-xr-xr-x。 1ルートルート05月2日15:31enp1s0f0 
 dr-xr-xr-x。 1ルートルート05月2日15:31enp1s0f1 
 dr-xr-xr-x。 1ルートルート05月2日15:31xenbr0 
 
 domain0 $ uname -a((RESULTS FILTERED))
 Linuxホスト名4.9.13-22.el7.x86_64#1 SMP Sun Feb 26 22:15:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 
 
 vm0 $ ip a 
 2:eth0:mtu 1500 qdisc pfifo_fast state UP qlen 1000 
 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff 
 inet 10.4.4.10/24 brd10.4.4.255スコープグローバルeth0 
1
user413477

これは予想される動作です。

「-i $ {if_WAN}」は、「WAN」インターフェースのボックスに入るパケットにのみ一致します。 LANホストからのパケットはそのインターフェイスに入らないため、ルールに一致することはありません。

残念ながら、iptablesは「$ {if_WAN}のIPアドレス宛てのパケット」と一致するとは思わないため、iptablesルールにWAN IP)をハードコーディングする必要があります。

0
Peter Green