LINUX.ORG.RU
ФорумAdmin

заруливания трафика на другой шлюз


0

0

Всем хорошего возникла такая ситуация есть сеть 10.1.65.0 в ней находиться шлюз 10.1.65.1 он смотрит в инет, и есть еще один шлюз 10.1.65.5 в этой же сети он смотрит в другую сеть 192.168.0.0. , нужно что бы все пакеты которые идут на 192.168.0.4 заварачивались на шлюз 10.1.65.5, то есть проходили через него, за 10.1.65.5 стоит 192.168.0.4 Помогите, подскажите каким правилом iptables разрулить данную проблему или может не iptables. Буду очень признателен и благодарен.


Ответ на: комментарий от Ru_Grey

а тебе и так нормально ответили. в порядке исключения:
route add -host 192.168.0.4 gw 10.1.65.5
или тебе надо, чтобы у клиентов был один default gw, а
трафик идущий на 192.168.0.4 приходил на 10.1.65.1 и уже
оттуда заворачивался на 10.1.65.5 и далее уже шел на 192.168.0.4 ?

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

> или тебе надо, чтобы у клиентов был один default gw, а трафик идущий на 192.168.0.4 приходил на 10.1.65.1 и уже оттуда заворачивался на 10.1.65.5 и далее уже шел на 192.168.0.4 ?

Может, лучше так не делать?

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

Прозрачно "через" получится только если на 10.1.65.5 организовать bridge. Вот про это и читай. Тогда и прослушать всё сможешь.

Anoxemian ★★★★★
()

По-моему для самого простого решения проблемы достаточно на шлюзе 10.1.65.1 всего лишь добавить маршрут к сети 192.168.0.0 через 10.1.65.5 и не запрещать ICMP redirect-ы (по умолчанию они обычно включены).
После этого все, кто будет слать пакеты к 192.168.0.4 через 10.1.65.1, получат от него ICMP redirect, в котором будет говорится, что слать надо не через 10.1.65.1, а через 10.1.65.5. Дале трафик пойдет через новый шлюз.
Единственный минус то, что это будет создавать некоторую бесполезную нагрузку на 10.1.65.1, но иначе, чтоб клиенты сами сразу знали через кого слать, придется добавлять маршруты на самих клиентах, без этого никак.

Да, bridge, как мне кажется, здесь не поможет: т.к. адреса сетей 10.1.65.0 и 192.168.0.0 разные, то клиенты (по умолчанию) по-любому будут пытаться слать через gw, а если на них явно прописывать маршруты к сети 192.168.0.0 напрямую, без всяких gw, то думаю на много проще указать gw и не заморачиваться с bridge-ами.

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

Это зависит от дистрибутива: в Red-Hat подобных - это либо /etc/sysconfig/static-routes, либо /etc/sysconfig/network-scripts/route-ethN (ethN - eth0, eth1, ...); в Gentoo - /etc/conf.d/net; про другие дистры не в курсе.

spirit ★★★★★
()

Где-то тут такое уже было. Тут нужен и iptables и iproute2.

Сначала метим все пакеты: iptables -t mangle -A PREROUTING -d 192.168.0.0/24 -j MARK --set-mark 0x10

Разумеется правила, по которым ставятся метки подредактируете под ваши нужды. Подробности man iptables

Потом заворачиваем это всё на другой рутер: echo "100 new_route" > /etc/iproute2/rt_tables ip route add default via 192.168.0.4 table new_route ip rule add fwmark 0x10 table new_route

Подробности man ip

Ну и напоследок надо всё это занатить:

iptables -t nat -A POSTROUTING -o интерфейс_с_которого_выходят_в_сетку_192.168.0.0 -j SNAT --to-source 192.168.0.4 Опять же, параметры можно подредактировать под себя.

shell-script ★★★★★
()
Ответ на: комментарий от spirit

Решил проблему так :-) добавил в таблицу маршрутизации правило route add -host ip "адрес до которого надо ходить" gw "шлюз за которым этот ip находиться" + прописал правило форвардинга в iptables так как по умолчанию политика DROP - iptables -A FORWARD -i eth1 -o eth1 -j ACCEPT

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