Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   [решено] Помогите пожалуйста с роутингом (http://forum.oszone.net/showthread.php?t=113636)

alive_corpse 06-08-2008 15:29 869486

Помогите пожалуйста с роутингом
 
Прошу прощения, проблема избитая, но сам разобраться так и не смог. :(

Предположим, есть две подсети и машина с двумя интерфейсами в обеих подсетях, для простоты и чтобы не путаться - 192.168.1.0/24 на интерфейсе eth1 (192.168.1.1) и 192.168.2.0/24 на интерфейсе eth2 (192.168.2.1). Эта же машина выдаёт через dhcp default gateway'ями в обе подсети адреса на своих интерфейсах, то есть, 192.168.1.1 и 192.168.2.1 соответственно.

Форвардинг включен:
Код:

monitor:~# cat /proc/sys/net/ipv4/ip_forward
1

Из обоих подсетей пингуются оба адреса на обоих интерфейсах машины. То есть, из подсети 192.168.1.0/24 я могу пинговать и 192.168.1.1 и 192.168.2.1 и наоборот.

Вопрос: как сделать роутинг между подсетями через эту машину без маскардинга? Для этого ведь не надо делать ip тунеллей? Или надо? Если да, то как?

route add -net 192.168.1.0/24 gw 192.168.2.1 и route add -net 192.168.2.0/24 gw 192.168.1.1 - не помогает.

Так же пытался делать (по аналогии с http://www.linux.org.ru/view-message.jsp?msgid=21652):

route add -net 192.168.1.0/24 dev eth2
route add -net 192.168.2.0/24 dev eth1

С тем же результатом. :(

В обоих вариантах при попытке пинговать узлы одной сети из другой, получается следующее:
Код:

From 192.168.1.1: icmp_seq=1 Redirect Host(New nexthop: 192.168.1.2)
From 192.168.1.1 icmp_seq=1 Destination Host Unreachable
From 192.168.1.1: icmp_seq=2 Redirect Host(New nexthop: 192.168.1.2)
From 192.168.1.1: icmp_seq=3 Redirect Host(New nexthop: 192.168.1.2)
From 192.168.1.1: icmp_seq=4 Redirect Host(New nexthop: 192.168.1.2)
From 192.168.1.1 icmp_seq=4 Destination Host Unreachable

С самого роутера 192.168.1.2 прекрасно пингуется.

alive_corpse 07-08-2008 09:40 870025

Большое спасибо моему знакомому Skiv'у, который подсказал, что нужно сделать. Проблема решается двумя правилами в iptables:
Код:

iptables -A FORWARD -i eth1 -o eth2 -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth1 -s 192.168.2.0/24 -d 192.168.1.0/24 -j ACCEPT

Для чистоты эксперимента цепочка форвард у меня была пуста и политикой по умолчанию был ACCEPT, я думал, что этого достаточно для прохождения всех пакетов, оказалось, для роутинга этого недостаточно и правило разрешающее прохождение пакетов между сетями должно быть задано явно и в обе стороны.

ruslandh 07-08-2008 16:40 870416

По-моему роутинг надо настраивать на клиентах, а не на шлюзе. При включённом разрешении форвардинга, всё должно и так проходить (если только файерволл не поднят).

alive_corpse 08-08-2008 13:47 871096

Роутинг, имхо, надо настраивать на роутере (он же шлюз), ибо это машина, которая принимает решение по прохождении пакетов по тому или иному маршруту. Клиенту в идеале должно хватать адреса дефолтного гейтвея, выдаваемого дхцп.


Время: 14:25.

Время: 14:25.
© OSzone.net 2001-