LINUX.ORG.RU
 

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


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. Буду очень признателен и благодарен.

ЗАСТАВЬ КОМПЬЮТЕР ПОЛИВАТЬ ОГОРОД

автоматизация своими руками: электроприборы под контролем компьютера
beware of programmers who carry screwdrivers!
http://www.unicontrollers.com/products/unc01x

[#]  

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

man route

iptables тут не при чем.

***** ()
[#] Ответ на: Re: заруливания трафика на другой шлюз от Ru_Grey 24.10.2007 7:48:02  

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

а тебе и так нормально ответили. в порядке исключения:
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 ?

**** ()
[#] Ответ на: Re: заруливания трафика на другой шлюз от sasha999 24.10.2007 9:01:45  
Anoxemian

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

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

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

*** ()
[#] Ответ на: Re: заруливания трафика на другой шлюз от Ru_Grey 24.10.2007 9:58:28  
Anoxemian

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

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

*** ()
[#]  

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

По-моему для самого простого решения проблемы достаточно на шлюзе 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-ами.

***** ()
[#] Ответ на: Re: заруливания трафика на другой шлюз от Ru_Grey 24.10.2007 14:36:30  

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

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

***** ()
[#]  
shell-script

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

Где-то тут такое уже было. Тут нужен и 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 Опять же, параметры можно подредактировать под себя.

* ()
[#] Ответ на: Re: заруливания трафика на другой шлюз от spirit 24.10.2007 16:37:06  

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

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

* ()