V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
LitterGopher
V2EX  ›  问与答

如何把 iptables 当代理用

  •  
  •   LitterGopher · 2023-09-21 10:11:29 +08:00 · 993 次点击
    这是一个创建于 433 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有 A,B,C 三台机器,AB 、BC 互通,AC 不通,A IP 不确定,BC IP 确定,。现在希望通过 B 来实现让 A 访问 C 的 1234 UDP 端口。如果使用 IP tables 应该如何配置?

    (不使用 nginx )
    8 条回复    2023-09-22 09:06:28 +08:00
    LitterGopher
        2
    LitterGopher  
    OP
       2023-09-21 10:20:39 +08:00
    @sujin190 是端口转发,但问题在于这些教程如果解决了我的问题我还需要用这种第效率的方法么(前两页的所有内容都看过了)?
    tool2d
        3
    tool2d  
       2023-09-21 10:34:18 +08:00
    听起来不难,就是在 B 上设置条件。

    1. 判断所有从 A 发起的 UDP 包,通过 iptables 修改 DNAT ,目标地址为 C
    2. 判断所有从 C 返回的 UDP 包,通过 iptables 修改 SNAT ,目标地址为 A

    只是从理论上可行,具体有什么大坑就不清楚了。
    sujin190
        4
    sujin190  
       2023-09-21 10:55:37 +08:00   ❤️ 1
    @LitterGopher #2 第一条说的就是没问题的

    iptables -t nat -A PREROUTING -p udp --dport 1234 -j DNAT --to-destination C 的 IP
    iptables -t nat -A POSTROUTING -s A 的 IP -p udp --dport 1234 -j SNAT --to-source B 的 IP

    就是这样啊,但是需要调整 A 的路由表在 A 访问 C 是下一跳是 B

    脾气不要这么差
    sujin190
        5
    sujin190  
       2023-09-21 10:56:29 +08:00   ❤️ 1
    A 的 IP 不确定,第二条可以不写就是了

    iptables -t nat -A POSTROUTING -p udp --dport 1234 -j SNAT --to-source B 的 IP
    gulugu
        6
    gulugu  
       2023-09-21 11:00:46 +08:00   ❤️ 1
    sudo iptables -t nat -A PREROUTING -i eth0 -p udp -d A_IP --dport 1234 -j DNAT --to-destination C_IP:1234
    sudo iptables -A FORWARD -i eth0 -o eth0 -p udp -d C_IP --dport 1234 -j ACCEPT
    vi /etc/sysctl.conf
    net.ipv4.ip_forward=1
    sudo sysctl -p
    LitterGopher
        7
    LitterGopher  
    OP
       2023-09-21 11:15:09 +08:00
    @sujin190 确实没注意情绪,十分抱歉。
    bowser1701
        8
    bowser1701  
       2023-09-22 09:06:28 +08:00 via iPhone   ❤️ 1
    如果 A B 不是二层互通的做不到,如果是二层互通的直接 A 加路由 通过 B ,在 B 上加 MASQUERADE 就可以了。

    如果只需要访问到 C ,那可以在 A 上直接访问 B 的某个端口,B 转发到 C 的目的端口。前提是可以在 A 上把 C 改成 B 的地址。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5275 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.