LINUX.ORG.RU
ФорумAdmin

Хитрый NAT

 ,


0

1

Есть роутер на Linux. Он раздаёт интернет в локальную сеть. На нём есть два входящих сетевых интерфейса - проводной (eth0) и 3G-модем (ppp0). Хочу, чтобы HTTP-трафик шёл через ppp0, а всё остальное через eth0. Делаю правила iptables:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp --dport 80 -o ppp0 -j MASQUERADE

И оно не работает (весь трафик идёт через eth0). Писать сначала второе правило, а потом первое тоже пробовал - не помогло.

Где я напутал?

★★★★★

Где я напутал?

В понимании правил. Эти правила не определяют, куда девать трафик, они определяют, что делать с трафиком, который удовлетворяет условию.

AS ★★★★★ ()
Ответ на: комментарий от KivApple

как-то так:

iptables -t mangle -A OUTPUT -p tcp –dport 80 -j MARK –set-mark 0×1
ip route add default dev ppp0 scope link table WEB proto static
ip rule add fwmark 1 lookup WEB priority 500
Slavaz ★★★★★ ()
Ответ на: комментарий от Slavaz

Я правильно понимаю, что перед этим надо настроить обычный NAT на eth0, а просто пакеты на 80-ый порт будут на выходе перенаправляться на другой интерфейс?

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

да, надо настроить NAT. И, пожалуй, пакеты на 80-й порт надо маскировать под ppp0 интерфейс.

Slavaz ★★★★★ ()
Ответ на: комментарий от KivApple

что перед этим надо настроить обычный NAT на eth0, а просто пакеты на 80-ый порт будут на выходе перенаправляться на другой интерфейс

Такой НАТ (snat либо MASQUERADE) выполняется последним, сначала заворачиваем на нужный гейт через нужный интерфейс, а потом NAT'ом приводим в соответствие, чтобы адрес источника соответствовал адресу интерфейса, с которого уходит пакет. Поэтому ната должно быть 2, как в первом посте, единственное прописывать порт во втором нате лишнее, по параметру "-o" присваиваем тот или иной адрес. Так более строгое соответствие, не важно что мы решили отправлять через второй интерфейс, сегодня - одно, завтра - другое.

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