到目前为止我想到的方法是让一个实例redsocks监听localhost并将所有传出请求重定向到我想转移到该redsocks实例的IP地址.我添加了以下iptables规则:
iptables -t nat -A PREROUTING -p tcp -d 1.2.3.4 -j DNAT --to-destination 127.0.0.1:12345
显然,linux内核将来自非127.0.0.0 / 8地址的数据包视为“Martian数据包”并将其丢弃为127.0.0.0/8地址.然而,有效的方法是让redsocks监听eth0而不是lo,然后让iptables将数据包转换为eth0地址(或使用REDIRECT规则).这个问题是我的网络上的每台计算机都可以使用redsocks实例连接到互联网上的每个主机,但我想将其使用限制在一组特定的IP地址.
有没有办法让iptables DNAT包到127.0.0.1?否则,有没有人知道如何在不向所有人开放隧道的情况下实现我的目标?
更新:我还尝试更改数据包的来源,但没有成功:
iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 1.2.3.4 -j SNAT --to-source 127.0.0.1iptables -t nat -A POSTROUTING -p tcp -s 192.168.1.0/24 -d 127.0.0.1 -j SNAT --to-source 127.0.0.1解决方法@H_301_17@ 您无法使用127/8网络执行此 *** 作,因为它在linux内核中特别处理.但您可以创建虚拟网络接口,为其分配IP地址,将您的服务绑定到此地址并执行NAT.
root@vm8583:~# ip link add bogus type dummyroot@vm8583:~# sysctl net.ipv4.conf.eth0.arp_ignore=3root@vm8583:~# ip addr add 10.0.0.1/32 bogus scope hostroot@vm8583:~# ip link set bogus uproot@vm8583:~# ip link show bogus4: bogus: <broADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNowN mode DEFAulT link/ether 5e:8b:38:f3:46:ce brd ff:ff:ff:ff:ff:ff
注意,您可能需要设置net.ipv4.conf.eth0.arp_ignore = 3以便您的server won’t answer to ARP requests for 10.0.0.1 incoming via eth0:
arp_ignore - INTEGER define different modes for sending replIEs in response to received ARP requests that resolve local target IP addresses:. . . 3 - do not reply for local addresses configured with scope host,only resolutions for global and link addresses are replIEd 4-7 - reserved总结
以上是内存溢出为你收集整理的linux – DNAT到127.0.0.1,带有用于透明SOCKS代理的iptables /目标访问控制全部内容,希望文章能够帮你解决linux – DNAT到127.0.0.1,带有用于透明SOCKS代理的iptables /目标访问控制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)