基于策略的路由

基于策略的路由

我在以下网址找到了一篇关于负载平衡的非常好的文章http://www.diegolima.org/wordpress/?p=36..但我无法实现它,因为我的要求与纯负载平衡略有不同。

我们有两个 ISP 连接。我已将这两个路由器分别连接到 eth0(公共 IP 121.XXX.XX.XXX)和 eth1(192.168.129.XXX)上的 Linux 服务器,我们的内部网络位于 eth2(192.168.1.XXX)上。

我已经决定我们的 FTP 应该使用 eth1 接口,Squid 应该使用 eth0,Sendmail 应该使用 eth0,并且一些用户应该使用 eth0,而其他一些用户应该使用 eth1。

有人能告诉我这是否可行吗?如何使用 iptables 和 iproute2 实现这一点?非常感谢分步帮助。提前致谢。

答案1

配置 IPROUTE2

echo "4        sendmail" >> /etc/iproute2/rt_tables
ip route add 121.XXX.XX.XXX/MASK dev eth0 src 121.XXX.XX.XXX table sendmail
ip route add 192.168.1.XXX/24 dev eth2 table sendmail
ip route add default via GATEWAY1 table sendmail
ip ru add from 121.XXX.XX.XXX lookup sendmail
ip ru add fwmark 2 table sendmail
ip route flush cache

配置 IPTABLES

iptables -t mangle -I OUTPUT -p tcp --dport 25 -j MARK --set-mark 0x2
iptables -t mangle -I PREROUTING -i eth2 -p tcp --dport 25 -j MARK --set-mark 0x2

iptables -t nat -I POSTROUTING -s 192.168.1.XXX/24 -o eth0 -j SNAT --to-source 121.XXX.XX.XXX

答案2

我使用 shorewall 做了类似的事情。
一切都基于标记和过滤数据包并对其应用一些规则。一切都应该在 larc howt 中解释: http://lartc.org/howto/index.html 过程应该是这样的(我必须重新阅读一些东西,几个月前我就这样做过):

  • 数据包来自内网

  • netfilter 在流量上应用一些 MARK

  • 基于标记的规则将数据包路由到正确的设备

相关内容