V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dark456852
V2EX  ›  Linux

局域下,有两个网关,数据想原路返回,有什么办法?

  •  
  •   dark456852 · 2017-04-01 10:13:04 +08:00 · 3107 次点击
    这是一个创建于 2797 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在同一个网络下有两个网关,旧的网关 ISP 线路端口已满,但是有台机子设了旧网关为默认网关,从外面进来的新网关数据如何原路返回?服务器是 centos 用了一张网卡,除了使用高级路由策略,双网卡双网段,还有什么好办法?

    17 条回复    2020-09-11 23:45:41 +08:00
    dark456852
        1
    dark456852  
    OP
       2017-04-01 10:13:35 +08:00
    有大神在吗?
    zwzmzd
        2
    zwzmzd  
       2017-04-01 10:53:35 +08:00 via iPhone
    策略路由,用 ip rule 区分数据包来源,再应用各自的路有表

    假设来自 192.168.1.10 的流量想从 192.168.1.10 发送出去:
    ip rule add from 192.168.1.10 table xxx
    ip route add default via 192.168.1.10 table xxx
    不过这个方法仅针对 tcp 协议有效, udp 看应用还要想些其他办法
    LoliconInside
        3
    LoliconInside  
       2017-04-01 11:06:13 +08:00
    嗨呀 不就是多线路由嘛 多大点事。
    编辑 /etc/iproute2/rt_tables ,在最后添加两行:
    251 old
    252 new

    然后编辑 /etc/rc.local ,在 exit 0 前面增加如下内容:
    OLD_GW="旧网关 IP"
    OLD_IP="旧 IP"
    NEW_GW="新网关 IP"
    NEW_IP="新 IP"

    ip route flush table old
    ip route add default via $OLD_GW dev 网卡名 src $OLD_IP table old
    ip rule add from $OLD_IP table old

    ip route flush table new
    ip route add default via $NEW_GW dev 网卡名 src $NEW_IP table new
    ip rule add from $NEW_IP table new

    重启,齐活
    nilai
        4
    nilai  
       2017-04-01 11:09:47 +08:00
    NAT
    Sh888
        5
    Sh888  
       2017-04-01 11:20:01 +08:00
    这个架构有点奇怪。为什么多 WAN 不在网关实现,而在客户端实现?
    youyoumarco
        6
    youyoumarco  
       2017-04-01 11:23:57 +08:00
    @LoliconInside 666 膜拜啊
    jasontse
        7
    jasontse  
       2017-04-01 11:44:03 +08:00 via iPad
    搜一下双线双 IP 配置 Windows 和 Linux 都有,基本上就是楼上说的那样。
    ifaii
        8
    ifaii  
       2017-04-01 14:17:58 +08:00 via iPhone
    @LoliconInside 你这个方法还得在网关做双向 NAT 才行,如果只有单向 nat 是没法区分原地址的,主机收到的都是外部地址
    LoliconInside
        9
    LoliconInside  
       2017-04-01 14:30:04 +08:00
    @ifaii 先试过再发言 我公司线上的双线服务器都这么配的用了很久了
    dark456852
        10
    dark456852  
    OP
       2017-04-03 14:55:01 +08:00
    @LoliconInside 你说的这个方法我知道,但公司网络有些复杂,不能使用多网卡,使用多网卡后网络会更复杂, NEW_IP 和 OLD IP 只适用于机房吧?而我这里只有新网关和旧网关来分别出口和入口,无法区别是否有新 IP 和旧 IP ISP 线路。
    LoliconInside
        11
    LoliconInside  
       2017-04-05 10:25:06 +08:00
    @dark456852 只适用于机房是什么意思?麻烦问题再描述的具体一些。
    dark456852
        12
    dark456852  
    OP
       2017-04-05 17:22:59 +08:00
    @LoliconInside 因为内网没法将外网 IP 定义,只能定义网关,网关决定了外网的出入数据。
    LoliconInside
        13
    LoliconInside  
       2017-04-06 17:28:13 +08:00
    @dark456852 如何定义外网 IP ?我认为不需要定义,上层网关已经将进来的路径决定了,你只需要将数据原路返回,这样不管是私网地址还是公网地址,实际上是一回事。不要觉得私网地址和外网地址不一样,路由原理是一样的,只是出公网有没有 NAT ,能不能直接被其他公网主机访问的区别。
    aulong
        14
    aulong  
       2020-09-11 22:42:33 +08:00
    @zwzmzd 这个 xxx 填什么啊 随便写吗
    aulong
        15
    aulong  
       2020-09-11 23:36:41 +08:00
    @zwzmzd 你这个方法实测不行啊 来源 ip 都是公网 IP 你指定个内网 ip 有啥用
    aulong
        16
    aulong  
       2020-09-11 23:42:19 +08:00
    @zwzmzd 要求是 服务端有两个公网 ip 客户端不管访问哪个都行 你这样设置变成只能访问一个了
    aulong
        17
    aulong  
       2020-09-11 23:45:41 +08:00
    @LoliconInside 你上面说新旧 ip 人家就一张网卡哪来的两个 ip
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3369 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:47 · PVG 19:47 · LAX 03:47 · JFK 06:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.