双线机房UDP Server实现根据来源接口返回数据的方案

By | 2014 年 12 月 16 日

前一阵子,由于业务需要,要将UDP Server改造成支持双线

经过查阅多方资料,确定并测试通过了如下方案(测试环境:centos)

一、增加rule的配置

打开文件/etc/iproute2/rt_tables

新增如下内容

201 card1
202 card2

其中card1和card2可以自定义名称,代表两张网卡

二、增加路由配置

执行如下命令

ip route flush table card1
ip route add default via 172.16.0.11 dev eth0 src 172.16.0.12 table card1
ip rule add from 172.16.0.12 lookup card1
ip rule add to 172.16.0.12 lookup card1

ip route flush table card2
ip route add default via 172.17.0.11 dev eth1 src 172.17.0.12 table card2
ip rule add from 172.17.0.12 lookup card2
ip rule add to 172.17.0.12 lookup card2

其中上半部分为第一块网卡对应的配置,下半部分为第二块网卡对应的配置
172.16.0.12为第一块网卡地址,172.16.0.11为第一块网卡的网关地址,eth0为第一块网卡
172.17.0.12为第二块网卡地址,172.17.0.11为第二块网卡的网关地址,eth1为第二块网卡

三、应用程序需要注意的地方

应用程序必须分别绑定两块网卡的ip,不能绑定0.0.0.0
同时,客户端发送的数据包所到达的本地socket需要记录,之后向此客户端发送数据时,使用此socket发送,即可实现从对应的接口发送数据。

四、其他

使用本解决方法,理论上应该支持多个网卡,但未经过测试。

发表评论