多网卡与 公网 IP 下的网络配置,肯定是离不开策略路由的。策略路由保证了数据包怎么来的就怎么回的,还保证了以某公网 IP 为源的包,可以正确送到对应的网关上头。Linux 下这方面的功能是通过 iproute2 里的 ip rule 配合 /etc/iproute2/rt_tables 配置实现的。
这里有一个细节问题,就是两块网卡分到的公网 IP 属于同一个段,这时在 ARP 方面会有与期望不一致的现象。如果存在这种情况,需要单独处理下。Linux 是弱端类型的网络,默认的,只看 IP 属不属于当前主机,不看属不属于网卡。当然,这种情况正确的实现方式,是把同一网段的 IP 都加到同一块网卡,然后通过设置默认路由的 src 属性来指定那块网卡默认用哪个源 IP 出去。