LINUX.ORG.RU
ФорумAdmin

IPtables и два канала


0

0

Есть сервак на Debian, три сетевухи, и два инет-канала. Надо чтобы через один канал шел только почтовый, веб- и bind траффик, а через другой народ в инете шарился.
Завел в rt_tables четыре таблицы.
Состряпал вот такой скрипт:
# Метим пакеты
$IPTABLES -A PREROUTING -t mangle -p tcp -s $LAN_IP_RANGE -d 0/0 --dport 25 -j MARK --set-mark 1
$IPTABLES -A PREROUTING -t mangle -p tcp -s $LAN_IP_RANGE -d 0/0 --dport 53 -j MARK --set-mark 2
$IPTABLES -A PREROUTING -t mangle -p udp -s $LAN_IP_RANGE -d 0/0 --dport 53 -j MARK --set-mark 2
# где $LAN_IP_RANGE = 192.168.1.0/24

ip rule add fwmark 1 table mail
ip rule add fwmark 2 table bind
ip rule add from 213.67.6.2 table sitek
ip rule add from 62.1.17.194 table mtu
# Определяем правила "откуда пришло-туда и ответило"
ip route add 213.67.6.0/29 dev eth1 src 213.67.6.2 table sitek
ip route add default via 213.67.6.1 table sitek
ip route add 62.1.17.192/26 dev eth2 src 62.1.17.194 table mtu
ip route add default via 62.1.17.193 table mtu
ip route add 213.67.6.0/29 dev eth1 src 213.67.6.2
ip route add 62.1.17.192/26 dev eth2 src 62.1.17.194
# Удаляем дефолтные гейты и определяем их снова
ip route del default via 213.67.6.1
ip route del default via 62.1.17.193
ip route add default via 62.1.17.193 table mail
ip route add default via 62.1.17.193 table bind
ip route add default via 213.67.6.1
ip route flush cache

В общих чертах - вроде работает. Но почта отправляется через 213.67.6.2, а не 62.1.17.194. BIND работает так как ему сказано. А Postfix не хочет. Что за засада ?


А постфикс на локальной машине стоит или у провайдера?
Если на локальной, то кажися правило:
-p tcp -s $LAN_IP_RANGE -d 0/0 --dport 25 -j MARK --set-mark 1
отрабатывает только для внутренних хостов и до внешних интерфейцев
и ихних таблиц маршрутов не доходит.

anonymous
()

У меня аналогичная проблема. Но хотел спросить как ты NAT делаешь. У меня в ip rule NAT не работает. (пиши kudr@monnet.ru)

anonymous
()
Ответ на: комментарий от anonymous

Сервер имеет три адреса (один внутренний, два внешних). Postfix стоит у меня же. Как же тут быть ?

Yakuza
() автор топика

в postfix есть такая штука что заставляет его использовать только определённый интерфейс вот поставь ето!!! и всё !!! В другую сеть он не полезит и будет пытаться отправить через тут которую тебе надо !!

anonymous
()
Ответ на: комментарий от Yakuza

Я может щас глупость скажу, а чо будет, если добавить такое правило:
$IPTABLES -A OUTPUT -t mangle -p tcp -s 0/0 -d 0/0 --dport 25 -j MARK --set-mark 1

Сам постфик, нутром чую, не умеет такие вещи делать, он умеет
(обязан уметь) просто кидать всю исходящую почту на один внешний
почтовик (провайдера), ведь это юзерспейс.

А чтобы на уровне ядра такие финты ушами крутить --
это надо именно царапать iptables/ip/итд.

anonymous
()
Ответ на: комментарий от anonymous

И еще обнаружился такая беда.

Из внутренней сети не пингуются внешние интерфейсы. Т.е. Все работает, но именно 213.67.6.2 и второй не пингуются. Из внешних сетей все замечательно.
C NATом плохо знаком, сейчас стоит вот так:
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $INET_IP
$IPTABLES -t nat -A POSTROUTING -o eth1 -j SNAT --to-source $INET_IP2

Так понимаю, что для внутренней сетки тоже надо что-то добавить. Подскажите что.

Yakuza
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.