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

다리가 있기 때문에 두 번 나타납니다.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

(이것은 작동하지 않습니다. 핑에 응답이 없습니다.)

우분투 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

관련 정보