Страница 1 из 4

маршрутизатор на linux

Добавлено: 28 мар 2006, 14:37
cranium
Прошу помощи у народа по данному вопросу. Посоветуйте что почитать, какие man, т.к. вобще не знаю с чего начать.
Проблема в том, чтобы организовать маршрутизацию трафика между двумя подсетями (10.0.0.0/8 и 10.5.5.0/25). Попробую предположить (поправте, если буду неточен): набиваются таблицы маршрутизации вручную к примеру, ну а поверх работает файервол (iptables какой-нить), что дает возможность очень тонко производить конфигурацию.
Про iptables есть какие-то представления, а вот что нужно для переадресации между сетевыми интерфейсами трафика, и как это все осуществить, для меня загадка, просветите, плиз

Добавлено: 28 мар 2006, 14:53
Llama

Добавлено: 28 мар 2006, 22:11
cranium
Llama, сенк

Добавлено: 29 мар 2006, 15:22
cranium

Код: Выделить всё

(subnet1)----------(eth0)-|Linux Router|-(eth1)--------------------(subnet2)
(10.5.5.0/25)         (10.5.5.100)     ^     (192.168.1.100)  (192.168.1.0/24) 
                                    (eth2)
                                (172.16.1.100)
                                       ^
                                       ^
                                 |ADSL Modem|
                                (172.16.1.1)

Хотелось бы настроить маршрутизацию. Хотя бы для начала можно откинуть eth2 интерфейс. Остаются eth0 и eth1, которые будут соединять 2 подсети( 10.5.5.0/25 и 192.168.1.0/24). Вроде делаю все как надо, а именно (все интерфейсы подняты и работают). Из subnet2 пингуется eth1 сервера, а из subnet1 пингуется eth0 сервера. Но никакие пинги не проходят к машинам из subnet1 в subnet2.

* 1)$ ip ro

10.5.5.0/25 dev eth0 proto kernel scope link src 10.5.5.100
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.100

*Примечание:
#Т.е. как я здесь понимаю: пакет пришел например из сети 10.5.5.0/25 с адресом назначения например 192.168.1.10 (маска 192.168.1.0./24)
#исходя из этого ядро принимает пакет, считывает адрес назначения и перенаправляет его на eth1 (в нужную подсеть). Так?

* 2) $ iptables -L

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
LOG all -- anywhere anywhere LOG level warning

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
LOG all -- anywhere anywhere LOG level warning

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

*Примечание:
#Пересылаемые пакеты все разрешены... Все вроде просто (iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT и наоборот -i eth1 -o eth0)
#Что касается логов /var/log/messages, то там ничего особого не пишется (я имею ввиду входящие пакеты или перенаправленые), вобще не
#видно подобных правил. Есть толкьо пару записей насчет 127.0.0.1

* 3) $ ip ru

0: from all lookup local
32763: from 192.168.1.0/24 to 10.5.5.0/25 lookup main
32764: from 10.5.5.0/25 to 192.168.1.0/24 lookup main
32765: from 10.254.10.10 lookup main
32766: from all lookup main
32767: from all lookup default

* 4) $ cat /proc/sys/net/ipv4/ip_forward

1

*Примечание:
#Т.е. поддержка ip_forward в ядре включена

Сомнения возникают насчет способности ядра к маршрутизации (ядро 2.4.26). Объясните, какие опции должны быть в нем включены для этого?[/code]

Добавлено: 29 мар 2006, 15:51
Llama
echo 1 >/proc/sys/net/ipv4/ip_forward

Добавлено: 29 мар 2006, 19:21
cranium
Включена опция ip_forward уже была:
* 4) $ cat /proc/sys/net/ipv4/ip_forward

1
Кстати как глянуть логи сетевой активности, ну к примеру какие пакеты приходили на какой интерфейс машины и когда?

Добавлено: 29 мар 2006, 19:35
Llama
cranium, на клентах-то маршрутизация настроена? Если настроена - то каким образом?

Добавлено: 29 мар 2006, 19:41
cranium
ситуация такова: стоит у меня сервак, в нем пока 2 сетевухи, и линк от моей домашней машины и 2 линка сервака идут в один свич.
Я периодически меняю у себя ип на 192.168.1.10 (255.255.255.0), шлюз: 192.168.1.100. Ip шлюза при этом пингуется, но напр модем который в 10.5.5.0/25 (ip 10.5.5.1) не пингуется.

Добавлено: 29 мар 2006, 19:43
Llama
cranium, а на модеме как маршрутизация настроена? Посмотри в сторону MAQSUERADE в iptables...

Добавлено: 29 мар 2006, 19:49
cranium
Настройки модема: ip: 10.5.5.1
mask: 255.255.255.128
gateway: 10.5.5.100 (eth0 сервера)
Но насколько я понимаю, модем здесь играет роль не совсем свойственную ему. Т.е. с таким же успехом я мог пинговать любой другой хост сети.

Добавлено: 29 мар 2006, 19:55
Llama
cranium, для того чтобы работала маршрутизация между двумя произвольными хостави по разные стороны маршрутизатора должны быть нормально настроены таблицы маршрутизации на этих хостах. Маршрутизатор вообще трогать не надо, в случае с linux будут работать настройки маршрутизации по умолчанию, надо только разрешить пережачу пакетов между интерфейсами, что как я понял уже сделано.
PS: echo 1 > /proc/..... имет смысл только до перезагрузки

Добавлено: 29 мар 2006, 20:00
cranium
Опаа...
Тока что искал файл где прописана автоматическая подгрузка ip_forward при старте системы, так обнаружил что в /etc/network/options есть такой параметр ip_forward=no
мот тут была проблема, сечас попробую

Добавлено: 29 мар 2006, 20:06
cranium
Супер, люблю этот форум), все работает!!!8)
Llama, спасибо за помощь

Добавлено: 31 мар 2006, 09:22
cranium
хотел поинтересоваться, может кто работал с протоколом PPPoE.
Хочу сделать вот что: (см. рис. 4-го поста). ADSL модем в сети работает в режиме bridge (инет провайдер раздает по протоколу PPPoE). Нужно сделать таким образом, чтобы этот мост, подключенный к интерфейсу сервера eth2 обменивался только с subnet1 (eth0). Связь eth2 <-> eth1 запрещена.
До недавних пор смутно представлял как PPPoE работает, благо в RFC2516 все подробно расписано.
Насколько я понимаю, трафик, идущий с eth0 нужно неким образом "отбирать" по определенному критерию, критерию принадлежности к PPPoE сессии (т.е. он предназначается в eth2). C eth2 трафик можно смело "заворачивать" на eth0. Пока что видится 2 способа:
1) Извлекать содержимое поля ETHER_TYPE (2 байта) из заголовка кадра Ethernet. Оно может принимать только 2 значения (rfc2516): 0x8863 (для поиска PPPoE-сервера) и 0x8864 (для установленной PPPoE-сессии). И только эти кадры перенаправлять с eth0 на eth2.
2) По mac-адресам. MAC сервера провайдера известен. Только протокол работает следующим образом: при обнаружении PPPoE-сессии, первый посылаемый кадр является широковещательным (0xffffffffffff). Т.е. можно все broadcast`ы прокинуть с eth0 на eth2, и далее, зная mac PPPoE-сервера, прокидывать пакеты, подходящие под этот критерий также на модем.

Господа, как быть? У кого какие соображения?

Добавлено: 31 мар 2006, 09:26
Llama
посмотри в сторону ebtables