Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
yongw520
V2EX  ›  Linux

请教 iptables 为某些 ip 段单独做 跳板 的配置办法

  •  
  •   yongw520 · Feb 22, 2018 · 5506 views
    This topic created in 3022 days ago, the information mentioned may be changed or developed.
    看了半天文章,实在搞不懂。。。遂来求教

    需求:
    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
    7 replies    2018-04-06 09:46:56 +08:00
    defunct9
        1
    defunct9  
       Feb 22, 2018 via iPhone
    如上的例子用 nginx 来做岂不是更好一些
    Geoion
        2
    Geoion  
       Feb 22, 2018
    没看太懂,但是好像 qtunnel 能满足需求
    msg7086
        3
    msg7086  
       Feb 22, 2018   ❤️ 2
    前几天刚刚做过类似的配置。
    我们的场景是,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 的事情。
    mingl0280
        4
    mingl0280  
       Feb 22, 2018
    你这个需求在本地做 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 #返回的包让他自动搞去
    scegg
        5
    scegg  
       Feb 22, 2018
    直接加个 route 不就好了。。。
    debian 语法:
    route add -net 1.2.3.0/24 gw gateway.ip.address
    yongw520
        6
    yongw520  
    OP
       Feb 22, 2018
    感谢提供帮助的各位, 最终使用 shadowsocks-libev-redir 并配合 iptables 与 ipset 再做了层代理.
    参考了该思路: https://medium.com/@terrancesiu/rixcloud%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-cf9d828f82fd
    Abby11
        7
    Abby11  
       Apr 6, 2018
    @yongw520 请问你有碰到这个问题么?如何解决?
    # 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 还是不行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5020 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 93c8b4a0 · 62ms · UTC 09:46 · PVG 17:46 · LAX 02:46 · JFK 05:46
    ♥ Do have faith in what you're doing.