Политика на основе маршрутизации

Я нашел очень хорошую статью о балансировке нагрузки на http://www.diegolima.org/wordpress/?p=36. Хотя я не смог ее реализовать, поскольку мое требование немного отличается от чистого распределения нагрузки.

У нас есть два интернет-провайдера. Я подключил оба этих маршрутизатора к серверу Linux на eth0 (публичный ip 121.XXX.XX.XXX) и eth1(192.168.129.XXX) соответственно, и наша внутренняя сеть находится на eth2 (192.168.1.XXX).

Я решил, что наш FTP должен использовать интерфейс eth1, Squid должен использовать eth0, Sendmail должен использовать eth0, а некоторые пользователи должны использовать eth0, а некоторые другие пользователи должны использовать eth1.

Кто-нибудь может сказать, если это возможно, как я могу добиться этого с помощью iptables и iproute2? Шаг за шагом помощь высоко ценится. Заранее спасибо.

2 ответа

Настроить 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

Я сделал нечто подобное, используя shorewall.
Все основано на маркировке и фильтрации пакетов и применении к ним некоторых правил. Все должно быть объяснено на языке larc howt: http://lartc.org/howto/index.html Процесс должен быть таким (я должен перечитать что-то, я сделал это несколько месяцев назад):

  • пакет приходит из внутренней сети

  • netfilter применить на трафик некоторые МАРКИ

  • правила, основанные на метках, направляют пакет через правильное устройство

Другие вопросы по тегам