Jump to content
Калькуляторы

Прошу помочь с iproute простая задача

Задача:

 

Дано 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 одна и та же.

 

Чувствую, что решение на поверхности, но понять не могу. Прошу помощи. Заранее спасибо, что уделили мне свое время.

Share this post


Link to post
Share on other sites

Зачем здесь iproute? Трафик от 192.168.1.10 однозначно уйдёт через eth1, поскольку маршрут на этот адрес один-единственный. Маршрутизация по какому-то критерию нужна, если выбор маршрута неоднозначен, у Вас всё должно работать и без этого.

Share this post


Link to post
Share on other sites
поскольку маршрут на этот адрес один-единственный.

Маршрута для сети 192.168.1.0/24 два !

Share this post


Link to post
Share on other sites

А, в самом деле, не так прочёл :)

Share this post


Link to post
Share on other sites

Что-то типо такого:

 

# 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 by V1talya

Share this post


Link to post
Share on other sites
Что-то типо такого:

 

# 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 пометить можно.

Share this post


Link to post
Share on other sites
$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, но я с ним слабо знаком, с уверенностью говорить не могу.

А зачем вообще отправлять через тот же интерфейс, что и получено?

 

Share this post


Link to post
Share on other sites
А зачем вообще отправлять через тот же интерфейс, что и получено?

интерфейсы имеют различные физические характеристики (скорость).

Share this post


Link to post
Share on other sites
$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 by V1talya

Share this post


Link to post
Share on other sites

а нельзя на интерфейсы повесить две /30 сети и роутить по человечески?

 

Share this post


Link to post
Share on other sites
а нельзя на интерфейсы повесить две /30 сети и роутить по человечески?

Так вроде на интерфейсах и так /30 сетки

Share this post


Link to post
Share on other sites

виноват, не досмотрел.

 

Ну тогда в условии убрать -s 192.168.0.2, оставьте только интерфейс, с которого идет....

Share this post


Link to post
Share on other sites

Я такое делал. Как-то так:

 

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

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this