双网卡,双网关

上次采购了一批2U的机器,每台机器有5个以太网卡,我插了3个。一个是IPMI,还有2个分别接在不同的网络内,一个接内网(192.168.109.2),一个接公网(218.2.18.194)。我之前以为很简单,没什么特别需要注意的,后来发现怎么设置默认网关是个麻烦事。

本来我把默认网关设置成了192.168.109.1。路由表就是这样:

Destination Gateway Genmask Flags Metric Ref Use Iface
218.2.18.192 0.0.0.0 255.255.255.192 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

后来发现有问题了。假设目的IP是218.2.18.194:从内网来的请求,直接从192.168.1.0的上一级路由转给了目的(218.2.18.194),没有问题。但是从公网来的请求,在218.2.18.194看都是处于SVN_RECV的状态。我猜是因为回去的包走默认网关192.168.1.1出去的,于是出不去。

后来在网上搜了一下,改成这样,根据来源判断答复包的下一跳,就好了。

ip route flush table 70
ip route add table 70 to 192.168.1.0/24 dev eth0
ip route add table 70 to default via 192.168.1.1 dev eth0

ip route flush table 80
ip route add table 80 to 218.2.18.192/26 dev eth1
ip route add table 80 to default via 218.2.18.193 dev eth1

ip rule add from 192.168.1.0/24 table 70 priority 70
ip rule add from 218.2.18.192/26 table 80 priority 80

ip route flush cache

我当时应该抓包查一下到底是SYN-ACK的包被192.168.1.1丢弃了,还是到目的地后被丢弃了,还是在哪被丢弃了。

不知道他们做电信网通双线双IP服务器的时候,是不是也是这样的方法。

呃,昨天那个问题,就是那个三层vlan的问题,我还是没想明白为什么。

此博客中的热门博文

在windows下使用llvm+clang

少写代码,多读别人写的代码

tensorflow distributed runtime初窥