문제가 있습니다. 조금 전까지만 해도 잘 작동했습니다. 지금은 작동하지 않지만 다른 테스트 서버에서는 잘 작동합니다.
모든 트래픽을 Tor로 강제 적용했는데 이 부분은 잘 작동합니다. 문제는 가장 무도회에 있습니다. 응답 수신 후 dnat/redirect 포트 9040을 원본 포트 80/443으로 다시 변경하지 않기 때문에 생각합니다.
소프트웨어:
- 1.6.1-2우분투2
- 우분투 16.04/18.04 동일한 결과
- 토르 0.3.2.9-1build1
네트워킹
- virbr1 - 192.168.2.0/24 - 호스트 전용
- eno1 - 192.168.1.0/24 - 인터넷
IP테이블:
- /sbin/iptables -t nat -A POSTROUTING -o virbr1 -j MASQUERADE
- /sbin/iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE # 다른 서버에서는 그것 없이도 작동합니다. 이것은 단지 테스트용이었습니다.
- /sbin/iptables -t nat -A 사전 설정 -p udp --source 192.168.2.6 ! --destination 192.168.2.1 -j DNAT --to-destination 192.168.2.1:9040 # 테스트됨 REDIRECT --to-ports 9040, 동일
*filter :INPUT ACCEPT [174876:86417485] :FORWARD DROP [0:0] :OUTPUT ACCEPT [170612:89138010] :DOCKER - [0:0] :DOCKER-ISOLATION - [0:0] :DOCKER-USER - [0:0] -A FORWARD -d 192.168.2.8/32 -i virbr1 -o virbr1 -j ACCEPT -A FORWARD -s 192.168.2.8/32 -i virbr1 -o virbr1 -j ACCEPT -A FORWARD -d 192.168.2.0/24 -o virbr1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.2.0/24 -i virbr1 -j ACCEPT -A FORWARD -i virbr1 -o virbr1 -j ACCEPT -A OUTPUT -s 192.168.2.8/32 -j DROP COMMIT # Completed on Tue Feb 20 09:32:11 2018 # Generated by iptables-save v1.6.1 on Tue Feb 20 09:32:11 2018 *nat :PREROUTING ACCEPT [193:19723] :INPUT ACCEPT [193:19723] :OUTPUT ACCEPT [129:12889] :POSTROUTING ACCEPT [124:11792] :DOCKER - [0:0] -A PREROUTING -s 192.168.2.8/32 -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.2.1:5353 -A PREROUTING -s 192.168.2.8/32 -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.2.1:5353 -A PREROUTING -s 192.168.2.8/32 ! -d 192.168.2.1/32 -p tcp -j DNAT --to-destination 192.168.2.1:9040 -A PREROUTING -s 192.168.2.8/32 ! -d 192.168.2.1/32 -p udp -j DNAT --to-destination 192.168.2.1:9040 -A POSTROUTING -o tun5 -j MASQUERADE -A POSTROUTING -o virbr1 -j MASQUERADE COMMIT # Completed on Tue Feb 20 09:32:11 2018 # Generated by iptables-save v1.6.1 on Tue Feb 20 09:32:11 2018 *mangle :PREROUTING ACCEPT [3538365:1832890486] :INPUT ACCEPT [3538362:1832890258] :FORWARD ACCEPT [3:228] :OUTPUT ACCEPT [3495644:1711746305] :POSTROUTING ACCEPT [3496898:1711973811] -A POSTROUTING -o virbr1 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill -A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill -A POSTROUTING -o virbr1 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill COMMIT
/proc/sys/net/ipv4/ip_forward로 설정되어 있습니다1
모니터링
conntrack -L
- tcp 6 431973 확립됨 src=192.168.2.6 dst=172.217.16.4 sport=49215 dport=443 src=192.168.2.1 dst=192.168.2.6 sport=9040 dport=49215 [ASSURED] mark=0 사용=1
- tcp 6 431983 설정됨 src=192.168.2.6 dst=104.81.60.33 sport=49226 dport=80 src=192.168.2.1 dst=192.168.2.6 sport=9040 dport=49226 [ASSURED] mark=0 사용=1
- tcp 6 431972 확립됨 src=192.168.2.6 dst=64.233.184.154 sport=49211 dport=443 src=192.168.2.1 dst=192.168.2.6 sport=9040 dport=49211 [ASSURED] mark=0 사용=1
- tcp 6 431972 확립됨 src=192.168.2.6 dst=54.192.185.106 sport=49216 dport=80 src=192.168.2.1 dst=192.168.2.6 sport=9040 dport=49216 [ASSURED] mark=0 사용=1
- tcp 6 431973 설정됨 src=192.168.2.6 dst=216.58.208.46 sport=49194 dport=80 src=192.168.2.1 dst=192.168.2.6 sport=9040 dport=49194 [ASSURED] mark=0 사용=1
- tcp 6 74 TIME_WAIT src=192.168.2.6 dst=178.255.83.1 sport=49190 dport=80 src=192.168.2.1 dst=192.168.2.6 sport=9040 dport=49190 [ASSURED] mark=0 use=1
동일한 OS, iptables 버전, iptables 규칙을 사용하는 다른 서버의 PS는 정상적으로 작동합니다.
미리 감사드립니다
답변1
알았어 문제를 해결했어.
도커 업데이트 및 커널 네트워크 필터 변경과 관련이 있습니다. 자세한 내용은 여기를 참조하세요. https://forums.fedoraforum.org/showthread.php?312824-Bridge-broken-after-docker-install&p=1785664#post1785664
0으로 설정하면 내 문제가 해결되는 것 같습니다.
net.bridge.bridge-nf-call-ip6tables=0 net.bridge.bridge-nf-call-iptables=0 net.bridge.bridge-nf-call-arptables=0
감사해요