技术解析

请教 iptables 为某些 ip 段单独做 跳板 的配置办法
0
2021-06-24 20:27:27
idczone
看了半天文章,实在搞不懂。。。遂来求教

需求:
A 为跳板 111.111.111.111
B 为目标主机 222.222.222.222

A 作为日常使用代理,但不能访问某网站。
而 B 流量少,链路差,但可以访问某网站。
需求是 A 作代理访问某网站的 IP 段时(已知),转发至 B.

查到如下全部转发的办法,尝试了下可以正常工作。
iptables -t nat -A PREROUTING -p tcp --dport A 的端口 -j DNAT --to-destination B 的 IP:B 的端口
iptables -t nat -A POSTROUTING -p tcp -d B 的 IP --dport B 的端口 -j SNAT --to-source A 的 IP
iptables -t nat -A PREROUTING -p udp --dport A 的端口 -j DNAT --to-destination B 的 IP:B 的端口
iptables -t nat -A POSTROUTING -p udp -d B 的 IP --dport B 的端口 -j SNAT --to-source A 的 IP
如上的例子用 nginx 来做岂不是更好一些

没看太懂,但是好像 qtunnel 能满足需求

前几天刚刚做过类似的配置。
我们的场景是,A 要访问某个主机 C,但是由于某些原因 C 把 A 的流量 block 了,于是需要用 B 中转。
B 机
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source B 机 IP
iptables -A FORWARD -i eth0 -o eth0 -s A 机 IP -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
A 机
ip r add C 机 IP/32 dev eth0 via B 机 IP
当然我们是内网环境,所以没有加额外的保护,你用的话应该要加上 IP 限定。
但是反正就是 SNAT 的事情。

你这个需求在本地做 PAC 代理规则比较好……因为是 HTTP/HTTPS,iptables 起来比较烦,因为有各种 CDN 啊什么的
如果非要搞的话
-t nat -A PREROUTING -d [final_target_addr] -p tcp --dport [final-target-port] -j DNAT --to-destination [B-addr]:[B-port] />-t nat -A POSTROUTING -s [source_addr] -o [income_netdevice] -j MASQUERADE #返回的包让他自动搞去

直接加个 route 不就好了。。。
debian 语法:
route add -net 1.2.3.0/24 gw gateway.ip.address

感谢提供帮助的各位, 最终使用 shadowsocks-libev-redir 并配合 iptables 与 ipset 再做了层代理.
参考了该思路: https://medium.com/@terrancesiu/rixcloud%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-cf9d828f82fd

请问你有碰到这个问题么?如何解决?
whois -h riswhois.ripe.net -- '-i origin AS14618' | grep "route: " | awk '{print $NF}' | sort | /usr/local/sbin/listclean.sh >>/root/as14618.txt
-bash: /usr/local/sbin/listclean.sh: Permission denied
我用了 chmod 777 还是不行

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服