POSTROUTING チェーンにはパケットは表示されません。

POSTROUTING チェーンにはパケットは表示されません。

私のiptables設定:

$ sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -j LOG --log-prefix "forward:"
$ sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N DOCKER
-A POSTROUTING -j LOG --log-prefix "postrouting:"
$ cat /proc/sys/net/ipv4/ip_forward
1

ping()を開始すると、ping 192.168.0.73ICMPパケットは次の場所に表示されます。今後チェーンは期待どおりに動作します。

[439971.459934] forward:IN=cb-localnet OUT=cb-localnet PHYSIN=cg.co92 PHYSOUT=cg-localnet MAC=ce:33:5a:f8:20:2c:36:fd:f6:30:12:b5:08:00 SRC=192.168.50.42 DST=192.168.0.73 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=36065 DF PROTO=ICMP TYPE=8 CODE=0 ID=29 SEQ=1 
[439971.459972] forward:IN=cc-localnet OUT=wlp2s0 MAC=ce:33:5a:f8:20:2c:36:fd:f6:30:12:b5:08:00 SRC=192.168.50.42 DST=192.168.0.73 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=36065 DF PROTO=ICMP TYPE=8 CODE=0 ID=29 SEQ=1

足があるので2回現れます。CB-ローカルネットワーク)関連。

転送されたTCPトラフィック(telnet 192.168.0.73 2222)の場合も同様です。今後チェーン:

[440712.683183] forward:IN=cb-localnet OUT=cb-localnet PHYSIN=cg.co92 PHYSOUT=cg-localnet MAC=ce:33:5a:f8:20:2c:36:fd:f6:30:12:b5:08:00 SRC=192.168.50.42 DST=192.168.0.73 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=20623 DF PROTO=TCP SPT=59052 DPT=2222 WINDOW=64240 RES=0x00 SYN URGP=0 
[440712.683222] forward:IN=cc-localnet OUT=wlp2s0 MAC=ce:33:5a:f8:20:2c:36:fd:f6:30:12:b5:08:00 SRC=192.168.50.42 DST=192.168.0.73 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=20623 DF PROTO=TCP SPT=59052 DPT=2222 WINDOW=64240 RES=0x00 SYN URGP=0 

ただし、これらの転送されたパケットは表示されません。背面配線チェーン。この問題をどのように解決できますか?マスカレーディングを有効にしたいので、問題を解決したいと思います。

$ sudo iptables -t nat -A POSTROUTING -o wlp2s0 -j MASQUERADE

(これはうまくいきません。pingには応答がありません。)

Ubuntu 18.04を使用しています。

答え1

Linux 5.4.0では、特定のパケットが通過しないようにいくつかの最適化を行ったようです。背面配線

ロギング操作を実行するソリューションは次のとおりです。背面配線チェーン。次のいずれかの操作(除く-j LOG):

$ sudo iptables -t nat -A POSTROUTING -o . -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -o . -j NETMAP --to 0

その後もすべてのパケットが記録されるわけではありません。たとえば、最初の項目のみ(シーケンス=0)ICMPエコー要求と最初のTCPパケット(SYNを含む)のみが記録されます。


-j MASQUERADE以下を実行して、実際のNAT問題(動作しない)を解決できました。

$ echo 0 | sudo tee /proc/sys/net/bridge/bridge-nf-call-iptables

関連情報