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

请教一条 iptables 转发

  •  
  •   zsj1029 · 191 天前 · 885 次点击
    这是一个创建于 191 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1 、当前主机 A 有一张物理网卡 eth0 ,ip 10.10.10.1
    2 、这台 A 主机新增一张虚拟网卡 vnet0 ,ip 10.10.10.10 ,外部测试以上两个 ip 均可以 ping 通
    目标:我用 10.10.10.50 主机 B ,访问 A 主机 vnet 10.10.10.10 时,将流量转发到另一台主机 c:10.10.10.20 ,同时限制-s 来源 ip 为我发起请求的这台主机 B

    目前
    iptables -t nat -A POSTROUTING -j MASQUERADE
    iptables -t nat -A PREROUTING -i vnet0 -s 10.10.10.50 -j DNAT --to-destination 10.10.10.20
    测试无效

    测试了一下午没有搞定,求大佬指路。

    或者有什么更好的方案
    目前是这样的需求,cli 客户端 B 向 A 发起请求 c 资源(很多 c ),A 批准后经过 A 路由流量转发到 c 上。
    访问 A 的虚拟网卡 vnet0 流量转发到 c1 ,访问 A 的虚拟网卡 vnet1 转发到 c2 ,依次类推,同时限制-s 来源为访问主机 ip
    8 条回复    2024-05-24 12:33:35 +08:00
    kiah
        1
    kiah  
       191 天前
    # 清除现有规则
    iptables -t nat -F

    # 配置 POSTROUTING 规则
    iptables -t nat -A POSTROUTING -j MASQUERADE

    # 配置 PREROUTING 规则,将特定源 IP 的流量转发到目标主机
    iptables -t nat -A PREROUTING -i vnet0 -s 10.10.10.50 -j DNAT --to-destination 10.10.10.20
    zsj1029
        2
    zsj1029  
    OP
       191 天前 via iPhone
    @kiah 我每次都清除才测试的,不行大佬,我测试下来如果把-i vnet0 去掉,就可以,但是做不到指定网卡流量转发了
    Yien
        3
    Yien  
       191 天前 via Android
    这问题我最近测试过,如果 .50 IP 主机的网关不是主机 A 的.1 IP 的话,无法实现重定向到 20
    zsj1029
        4
    zsj1029  
    OP
       191 天前 via iPhone
    @Yien 啊,那有什么其他方案吗?是不是虚拟网卡的问题呢
    Jirajine
        5
    Jirajine  
       191 天前
    你如果要只有目的地址为 10.10.10.10 的流量转发给 10.10.10.20 ,那你可以在写规则的时候匹配目的地址。网卡和 ip 没什么关系,从 eth0 进来的目的地址为 10.10.10.10 的包也会被接受,但匹配不到你的规则。

    如果你的需求是由 B 向 C 发起请求但是要经过 A ,那你直接在 B 添加静态路由,ip route add <dest_C> via <ip_of_A>,然后在 A 上配置规则决定谁能发给谁。
    zsj1029
        6
    zsj1029  
    OP
       191 天前
    已解决
    iptables -t nat -A PREROUTING -s 10.10.10.50 -d 10.10.10.10 -j DNAT --to-destination 10.10.10.20

    不要给 A 创建虚拟网卡,在单网卡上创建多个 ip ,主机 B 10.10.10.50 访问 A 的 10.10.10.10 ,转发到 c 的 10.10.10.20
    wumoumou
        7
    wumoumou  
       191 天前
    向大佬学习一下
    zsj1029
        8
    zsj1029  
    OP
       191 天前
    @wumoumou 好的 小同志
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2508 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 04:56 · PVG 12:56 · LAX 20:56 · JFK 23:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.