与iproute2和多个VLAN多宿主

我目前负责build立我们的办公室的Linux路由器。 我们一直在使用两个VLAN(一个用于数据,一个用于语音)和一个WAN连接。 最近,我们在主要的广域网服务提供商方面遇到了问题,所以我们已经获得了一个更稳定的渠道,专门为我们的VOIPstream量提供了更less的带宽。 我在设置我们的CentOS机器正确执行多重归位时遇到了一些问题。 这是我们目前的布局:

eth0 – 硬件网卡
eth0.2 – 数据广域网提供商
eth0.3 – 语音WAN提供商
eth0.4 – 内部数据LAN
eth0.5 – 内部VoIP局域网

我目前有所有的stream量路由到eth0.2的默认网关。 我想要做的是确保用于我们的VoIP系统的stream量被路由到eth0.5,并且所有的VoIPstream量然后在eth0.3上出去。 我可能会过度复杂,但是我们需要在数据设备和语音设备之间进行VLAN分离,而且我不确定有更好的方法来做到这一点。 我的理解是,使用iproute2,我需要为特定路由创build两个表,然后确保语音stream量明确地设置为在eth0.3上出去。 我不知道从哪里开始寻找资源,而且我对CentOS世界相对较新,所以我甚至希望在一些基本的底层引擎上看看(我已经通过了iproute2,iptables和tc ,但这一切都超出了我的头)。 提前致谢!

首先build立基本的多宿:

echo -e "200\tuplink2" >> /etc/iproute2/rt_tables echo "default table uplink2 via GA.TE.WA.Y2" > /etc/sysconfig/network-scripts/route-eth1 echo "from IP.AD.DR.ES table uplink2" > /etc/sysconfig/network-scripts/rule-eth1 

之后,您需要创buildiptables规则来匹配和标记您的VOIPstream量:

iptables -A PREROUTING -t mangle <some voip matching> -j MARK --set-mark 0x1

并添加此规则以实际路由标记的数据包

echo "ip rule add from all fwmark 0x1 table uplink2" > /etc/sysconfig/network-scripts/rule-eth1

不要忘记重启networking:

 service network restart