_INF_ Posted April 1, 2010 Posted April 1, 2010 Задача: Дано 3 сетевых адаптера eth0 - смотрит в Internet, имеет ip адрес 10.10.10.1 и является NAT-ом для клиентов сети 192.168.1.0/24, ip адрес 10.10.10.2 является шлюзом по умолчанию. eth1 - 192.168.0.1 255.255.255.252, через данный интерфейс роутится сеть 192.168.1.0/24 eth2 - 192.168.0.5 255.255.255.252, тоже через данный интерфейс роутится сеть 192.168.1.0/24 хочется чтобы трафик клиентов возвращался через тот же сетевой интерфейс, что и пришел. т е например запрос клиента 192.168.1.10 пришел на интерфейс eth1 "занатился", добежал до однокласники.ru и вернулся в NAT, далее ушел обратно в eth1. LARTC , в части главы 4 читал, но там несколько иная ситуация, у меня сеть на интерфейсе eth1 и eth2 одна и та же. Чувствую, что решение на поверхности, но понять не могу. Прошу помощи. Заранее спасибо, что уделили мне свое время. Вставить ник Quote
EvilShadow Posted April 1, 2010 Posted April 1, 2010 Зачем здесь iproute? Трафик от 192.168.1.10 однозначно уйдёт через eth1, поскольку маршрут на этот адрес один-единственный. Маршрутизация по какому-то критерию нужна, если выбор маршрута неоднозначен, у Вас всё должно работать и без этого. Вставить ник Quote
_INF_ Posted April 1, 2010 Author Posted April 1, 2010 поскольку маршрут на этот адрес один-единственный. Маршрута для сети 192.168.1.0/24 два ! Вставить ник Quote
EvilShadow Posted April 1, 2010 Posted April 1, 2010 А, в самом деле, не так прочёл :) Вставить ник Quote
V1talya Posted April 1, 2010 Posted April 1, 2010 (edited) Что-то типо такого: # route ip rule add fwmark 3 table table1 ip rule add fwmark 4 table table2 ip route add default via 192.168.0.1 table table1 ip route add default via 192.168.0.5 table table2 # $IPT -t mangle -A OUTPUT -p ALL -s 192.168.0.1/32 -o eth2 -j MARK --set-mark 3 $IPT -t mangle -A OUTPUT -p ALL -s 192.168.0.5/32 -o eth1 -j MARK --set-mark 4 ?? Edited April 1, 2010 by V1talya Вставить ник Quote
_INF_ Posted April 1, 2010 Author Posted April 1, 2010 Что-то типо такого: # route ip rule add fwmark 3 table table1 ip rule add fwmark 4 table table2 ip route add default via 192.168.0.1 table table1 ip route add default via 192.168.0.5 table table2 # $IPT -t mangle -A OUTPUT -p ALL -s 192.168.0.1/32 -o eth2 -j MARK --set-mark 3 $IPT -t mangle -A OUTPUT -p ALL -s 192.168.0.5/32 -o eth1 -j MARK --set-mark 4 ?? Спасибо уважаемый, совсем забыл про то, что любой трафик через iptables пометить можно. Вставить ник Quote
EvilShadow Posted April 1, 2010 Posted April 1, 2010 $IPT -t mangle -A OUTPUT -p ALL -s 192.168.0.1/32 -o eth2 -j MARK --set-mark 3$IPT -t mangle -A OUTPUT -p ALL -s 192.168.0.5/32 -o eth1 -j MARK --set-mark 4 Трафика с 0.1 и 0.5 быть не должно, поскольку эти адреса висят на интерфейсах роутера.Лично я не вижу очевидного способа реализовать сабж. Возможно, поможет conntrack в iptables, но я с ним слабо знаком, с уверенностью говорить не могу. А зачем вообще отправлять через тот же интерфейс, что и получено? Вставить ник Quote
_INF_ Posted April 1, 2010 Author Posted April 1, 2010 А зачем вообще отправлять через тот же интерфейс, что и получено? интерфейсы имеют различные физические характеристики (скорость). Вставить ник Quote
V1talya Posted April 1, 2010 Posted April 1, 2010 (edited) $IPT -t mangle -A OUTPUT -p ALL -s 192.168.0.1/32 -o eth2 -j MARK --set-mark 3$IPT -t mangle -A OUTPUT -p ALL -s 192.168.0.5/32 -o eth1 -j MARK --set-mark 4 Трафика с 0.1 и 0.5 быть не должно, поскольку эти адреса висят на интерфейсах роутера.Лично я не вижу очевидного способа реализовать сабж. Возможно, поможет conntrack в iptables, но я с ним слабо знаком, с уверенностью говорить не могу. А зачем вообще отправлять через тот же интерфейс, что и получено? Вообще у меня "похожая" схема работает... и нормально :)( не учел нат, у меня при подкл. к данному серверу такая схема работает ) .Расскажешь потом как сделал. Edited April 1, 2010 by V1talya Вставить ник Quote
martin74 Posted April 1, 2010 Posted April 1, 2010 а нельзя на интерфейсы повесить две /30 сети и роутить по человечески? Вставить ник Quote
_INF_ Posted April 2, 2010 Author Posted April 2, 2010 а нельзя на интерфейсы повесить две /30 сети и роутить по человечески? Так вроде на интерфейсах и так /30 сетки Вставить ник Quote
martin74 Posted April 2, 2010 Posted April 2, 2010 виноват, не досмотрел. Ну тогда в условии убрать -s 192.168.0.2, оставьте только интерфейс, с которого идет.... Вставить ник Quote
Алексей Андриянов Posted April 2, 2010 Posted April 2, 2010 Я такое делал. Как-то так: iptables -t mangle -A PREROUTING -i eth0 -m connmark --mark 1 -j CONNMARK --restore-mark iptables -t mangle -A PREROUTING -i eth0 -m connmark --mark 2 -j CONNMARK --restore-mark iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-xmark 1 iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-xmark 2 ip rule add fwmark 1 table to_eth1 prio 100 ip rule add fwmark 2 table to_eth2 prio 100 ip route add 192.168.1.0/24 via 192.168.0.2 table to_eth1 ip route add 192.168.1.0/24 via 192.168.0.6 table to_eth2 Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.