在同一个网络下有两个网关,旧的网关 ISP 线路端口已满,但是有台机子设了旧网关为默认网关,从外面进来的新网关数据如何原路返回?服务器是 centos 用了一张网卡,除了使用高级路由策略,双网卡双网段,还有什么好办法?
1
dark456852 OP 有大神在吗?
|
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 看应用还要想些其他办法 |
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 重启,齐活 |
4
nilai 2017-04-01 11:09:47 +08:00
NAT
|
5
Sh888 2017-04-01 11:20:01 +08:00
这个架构有点奇怪。为什么多 WAN 不在网关实现,而在客户端实现?
|
6
youyoumarco 2017-04-01 11:23:57 +08:00
@LoliconInside 666 膜拜啊
|
7
jasontse 2017-04-01 11:44:03 +08:00 via iPad
搜一下双线双 IP 配置 Windows 和 Linux 都有,基本上就是楼上说的那样。
|
8
ifaii 2017-04-01 14:17:58 +08:00 via iPhone
@LoliconInside 你这个方法还得在网关做双向 NAT 才行,如果只有单向 nat 是没法区分原地址的,主机收到的都是外部地址
|
9
LoliconInside 2017-04-01 14:30:04 +08:00
@ifaii 先试过再发言 我公司线上的双线服务器都这么配的用了很久了
|
10
dark456852 OP @LoliconInside 你说的这个方法我知道,但公司网络有些复杂,不能使用多网卡,使用多网卡后网络会更复杂, NEW_IP 和 OLD IP 只适用于机房吧?而我这里只有新网关和旧网关来分别出口和入口,无法区别是否有新 IP 和旧 IP ISP 线路。
|
11
LoliconInside 2017-04-05 10:25:06 +08:00
@dark456852 只适用于机房是什么意思?麻烦问题再描述的具体一些。
|
12
dark456852 OP @LoliconInside 因为内网没法将外网 IP 定义,只能定义网关,网关决定了外网的出入数据。
|
13
LoliconInside 2017-04-06 17:28:13 +08:00
@dark456852 如何定义外网 IP ?我认为不需要定义,上层网关已经将进来的路径决定了,你只需要将数据原路返回,这样不管是私网地址还是公网地址,实际上是一回事。不要觉得私网地址和外网地址不一样,路由原理是一样的,只是出公网有没有 NAT ,能不能直接被其他公网主机访问的区别。
|
17
aulong 2020-09-11 23:45:41 +08:00
@LoliconInside 你上面说新旧 ip 人家就一张网卡哪来的两个 ip
|