技术解析

局域下,有两个网关,数据想原路返回,有什么办法?
0
2021-06-22 12:48:45
idczone

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


有大神在吗?

策略路由,用 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 看应用还要想些其他办法

嗨呀 不就是多线路由嘛 多大点事。
编辑 /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
重启,齐活

NAT

这个架构有点奇怪。为什么多 WAN 不在网关实现,而在客户端实现?

666 膜拜啊

搜一下双线双 IP 配置 Windows 和 Linux 都有,基本上就是楼上说的那样。

你这个方法还得在网关做双向 NAT 才行,如果只有单向 nat 是没法区分原地址的,主机收到的都是外部地址

先试过再发言 我公司线上的双线服务器都这么配的用了很久了

你说的这个方法我知道,但公司网络有些复杂,不能使用多网卡,使用多网卡后网络会更复杂, NEW_IP 和 OLD IP 只适用于机房吧?而我这里只有新网关和旧网关来分别出口和入口,无法区别是否有新 IP 和旧 IP ISP 线路。

只适用于机房是什么意思?麻烦问题再描述的具体一些。

因为内网没法将外网 IP 定义,只能定义网关,网关决定了外网的出入数据。

如何定义外网 IP ?我认为不需要定义,上层网关已经将进来的路径决定了,你只需要将数据原路返回,这样不管是私网地址还是公网地址,实际上是一回事。不要觉得私网地址和外网地址不一样,路由原理是一样的,只是出公网有没有 NAT ,能不能直接被其他公网主机访问的区别。

这个 xxx 填什么啊 随便写吗

你这个方法实测不行啊 来源 ip 都是公网 IP 你指定个内网 ip 有啥用

要求是 服务端有两个公网 ip 客户端不管访问哪个都行 你这样设置变成只能访问一个了

你上面说新旧 ip 人家就一张网卡哪来的两个 ip

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