(dnat|redirect)与伪装不起作用

(dnat|redirect)与伪装不起作用

我遇到了一个问题,不久之前它还运行良好。但是现在,它不工作了,但在另一台测试服务器上它运行良好

我强制所有流量都流向 tor,这部分工作正常。我认为问题出在伪装上,因为它在收到响应后不会将 dnat/重定向端口 9040 改回原始端口 80/443

  • http://ipinfo.io:9040

  • 软件:

    • 1.6.1-2ubuntu2
    • ubuntu 16.04/18.04 结果相同
    • tor 0.3.2.9-1build1
  • 联网

    • virbr1 - 192.168.2.0/24 - 仅主机
    • eno1-192.168.1.0/24-互联网
  • Iptables:

    • /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 PREROUTING -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 [已确保] 标记=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 [已确保] 标记=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 [已确保] 标记=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 [已确保] 标记=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 [已确保] 标记=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 [已确保] 标记=0 使用=1

PS 在另一台具有相同操作系统、iptables 版本和 iptables 规则的服务器上,它运行正常

提前致谢

答案1

好的,我已经解决了这个问题。

它与 docker 更新和内核网络过滤器的更改有关,更多详细信息请参见此处 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

谢谢

相关内容