URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 65372
[ Назад ]

Исходное сообщение
"NAT via iproute"

Отправлено tian , 04-Апр-06 15:09 
Ситуация: стандартная:
Есть шлюз на linux kernel 2.4.32+iptables1.3.5 c тремя eth0, eth1 eth2
по умолчанию шлюз на eht0
задача все маркированные макеты (скажем с меткой 10) отправлять на шлюз в eth1
Вроде все сделал как в манах:
Завел новую таблицу: echo 100 gw2 > /etc/iproute2/rt_tables
ip route add default via xxx.xxx.xxx.xxx dev eth1 table 100
(здесь xxx.xxx.xxx.xxx - ip-адрес шлюза для интерфейса eth1)
ip rule add fwmark 10 nat yyy.yyy.yyy.yyy table 100
(yyy.yyy.yyy.yyy - ip-адрес локального интерфейса eth1, который и должен использоваться как SNAT)
iptables -I PREROUTING 1 -t mangle -p icmp -j MARK --set-mark 10
ip route flush cache

ну и echo 0 в rp_filter (во все интерфейсы для проверки)(это как рекомендует Russell)
echo 1 > /proc/sys/ipv4/route/flush (это как рекомендует Russell)

Наблюдая вижу, что отправка пакета происходит все верно - на eth1, но вот NAT не выполняется вообще.
Может что забыл или это глюк ?
Хотелось бы NAT выполнять средставми iproute, а не iptables


Содержание

Сообщения в этом обсуждении
"NAT via iproute"
Отправлено tian , 04-Апр-06 17:00 
Забыл уточнить - в ядре при компиляции все включено.
Если через iptables делать SNAT - получается, но не хочеться так, так как логика нарушается.

"NAT via iproute"
Отправлено tian , 04-Апр-06 17:46 
>Забыл уточнить - в ядре при компиляции все включено.
>Если через iptables делать SNAT - получается, но не хочеться так, так
>как логика нарушается.

Мне тут подумалось, а может версия iproute2 глючная ?
у меня стоит ip utility, iproute2-ss040608
Кстати, я так понимаю, данный проект пока заморожен и новых версий нет ? На сайте последняя версия кажется от 2000 года. А у меня версия шла вместе с дистрибом slackware 10.1. Хотя.. iproute ведь лишь оболочка - все выполняет ядро.


"NAT via iproute"
Отправлено vvvua , 06-Апр-06 15:48 
А кто сказал, что при изменении маршрута включается NAT?
Всё правильно работает.
В конечном итоге и утилита ip в таблицу iptables добавит.
В ip есть

ACTION := [ table TABLE_ID ] [ nat ADDRESS ]

вот вроде его и нужно юзать.
Кроме того:
Warning:  Route  NAT is no longer supported in Linux 2.6.

Т.е. в 2.6 это нужно делать через iptables


"NAT via iproute"
Отправлено tian , 06-Апр-06 16:07 
>А кто сказал, что при изменении маршрута включается NAT?
>Всё правильно работает.
>В конечном итоге и утилита ip в таблицу iptables добавит.
>В ip есть
>
>ACTION := [ table TABLE_ID ] [ nat ADDRESS ]
>
>вот вроде его и нужно юзать.
>Кроме того:
>Warning:  Route  NAT is no longer supported in Linux 2.6.
>
>
>Т.е. в 2.6 это нужно делать через iptables

Т.е. сама утилита ip и добавляет в iptables (точнее в ядро) правила для NAT ?
В таком случае я их должен увидеть через iptables ?
Я полагал, что через ip тоже можно делать NAT, причем это будет происходить сразу же после введения правила, а не через какой-то неизвестный промежуток времени как в iptables.
А насчет прекращения поддержки nat в ip - это на 2.4 тоже. Однако я исходники смотрел ip - там просто пока что предупреждение, но на самом деле правило отрабатывается.
Но к сожалению не работает, как я и писал выше.
т.е. я изменяю маршрут и говорю, что нужно натить пакеты. (через директиву nat), но на самом деле вижу, что этого не происходит.
Пришлось малость обойти ситуацию - маркировать пакеты, а snat прописать в iptables статически и постоянно.
А правило маркировки пакетов добавлять и убирать когда надо - тут отрабатывается все быстро и без задержек.
Однако мне кажется что это или глюк или еще что - будет время буду глубже копать.