LINUX.ORG.RU
решено ФорумAdmin

Маршрутизация трафика в определенном порядке

 


0

1

Всем добрый день. Кто сможет - помогите пожалуйста. Есть задача по сети - в целом для тех кто шарит, я думая простая. У меня запотык!! Куда двигаться - дальше не знаю.

Описание задачи:

Есть хост A с Linux debian. У него один сетевой интерфейс: eth1, ip 152.2/24. Первые два (192.168) октета для упрощения убираю. Шлюз 151.1.

Есть хост B с Linux debian. У него два сетевых интерфейса: eth1, ip 30.4/24. Шлюз 30.1. eth2, ip 31.5.

Есть маршрутизатор R1. Три сетевых интерфейса eth1, eth2, eth3. Три VLANа соответственно - VLAN151, VLAN130, VLAN131. eth1 хоста A подключен к eth1 R1. eth1 хоста B подключен к eth2 R1. eth2 хоста B подключен к eth3 R1.

Нужно сделать «прямые» соединения для трафика, как-будто прямые провода. :) Т.е. нужно чтоб:

ping от хоста A:

ping 192.168.30.4 шел по маршруту: (eth1 A) - (eth1 R1) - (eth2 R1) - (eth1 B), Ответ возвращался строго в обратном порядке по этому же маршруту.

И: ping от хоста А:

ping 192.168.31.5 шел по маршруту: (eth1 A) - (eth1 R1) - (eth3 R1) - (eth2 B), Ответ возвращался строго в обратном порядке по этому же маршруту.

Понимаю, что задача простой статической маршрутизацией не решается. Тут нужна смесь ip route + iptables. Что-то с forward трафика. Вот только как - знаний не хвататет.

В реалии нужно будет пробрасывать трафик на ПО по портам, которое будет отвечать обратно также. Но я упростил задачу только для ping, чтоб понять суть.

Помогите пожалуйста, кто сможет.

Есть на форуме вот такой пользователь: https://www.linux.org.ru/people/vel/profile

У него была одна тема по сети: Трафик идет через другой интерфейс

Предполагаю, что он шарит в этом. Но как напрямую написать ему - тоже не знаю.

Вот схема сети: https://www.linux.org.ru/images/22215/original.jpg



Последнее исправление: ganimed (всего исправлений: 1)

ip 152.2/24.
Шлюз 151.1

Не взлетит.

Есть на форуме вот такой пользователь: www.linux.org.ru/people/vel/profile
Предполагаю, что он шарит в этом. Но как напрямую написать ему - тоже не знаю.

На лоре нет лички, можно только скастовать в эту тему.

www.linux.org.ru/help/lorcode.md - Ссылка на профиль пользователя
или
www.linux.org.ru/help/markdown.md - Упоминание пользователя сайта

anc ★★★★★
()

Тут нужна смесь ip route + iptables.

Зачем для таких простых задач все хотят приплести iptables. Если у компа B два физически разных интерфейса, просто настраивайте PBR по src-ip. Какой у ip-пакета src-ip, в тот интерфейс и пихать.

И, для надёжности, прописать arp_ignore=2 на интерфейсах. https://sysctl-explorer.net/net/ipv4/arp_ignore/

В реалии нужно будет пробрасывать трафик на ПО по портам

Вот лучше сразу описывать реальную задачу, а не упрощённую.

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

Может ТС уже до onlink маршрутов дошёл? :)

Судя по стилю изложения сомневаюсь... хотя... он же трищ скрытный... известную тему не раскрыл :)

Хотя, больше на опечатку похоже, но так не интерестно.

Если допустить, что это опечатка, то все остальное тоже можно считать одной большой опечаткой.

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

В реалии нужно будет пробрасывать трафик на ПО по портам

Вот лучше сразу описывать реальную задачу, а не упрощённую.

В контексте задачи ТС это как раз правильное изложение, сначала PBR, а потом прикручиваем к нему бантики в виде портов и другой вкусноты.

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

Да и вобще весь этот форум одна большая опечатка чат-бота, который начал сам себе сообщения отправлять.

Но, на картике ТС нарисовал 151.2, правда там этот ip и у хоста и у маршрутизатора. Но vlan151, можно предположить, что там сеть 192.168.151.0/24. Хотя на vlan130 у него сеть 192.168.30.0/24.

mky ★★★★★
()

нифига непонятно, что ты хочешь, и схему сети я не вижу, но по-моему, тебе нужно, чтобы когда src ip на хосте B был 31.5, то маршрутизация работала иначе

echo "200 lor" >> /etc/iproute2/rt_tables
ip rule add from 192.168.31.0/24 table lor
ip route add default 192.168.31.1 dev eth2 table lor

man ip-rule.

anonymous
()

Первый ping IMHO будет работать сразу.

Для втрого пинга анонимус уже подсказал решение которое нужно применить на хосте В.

Не забывайте про правило from all lookup main suppress_prefixlength 0"
которое должно быть сразу после правила 0: from all lookup local
Без него пакеты c .31.5 адресованные хостам в сети 30.0/24 (кроме .30.4) будут идти кривым маршрутом.
Можно обойтись без этого правила (suppress_prefixlength 0), но тогда в дополнительной таблице маршрутизации нужно продублировать прямые маршруты из main.

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

Добрый день.

Всем спасибо. задачу решил.

Отдельное спасибо vel, anonymous и mky.

mky как написал PBR - я тут все вспомнил. делал эту задачу года четыре назад - просто забыл.

Еще раз спасибо большое всем.

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