URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 40639
[ Назад ]

Исходное сообщение
"Перенаправление eth1 -> eth0"

Отправлено Serezha , 16-Фев-04 22:53 
Уже несколько дней без перерыва безуспешно пытаюсь настроить маршрутизацию из локалки 192.168.2.0 в сеть провайдера a.b.c.208/255.255.255.240 с помощью компьютера c RH8 и 2мя сетевыми карточками eth0 (смотрит в интернет) и eth1 (- в мою локалку). Советы, собранные в этой конференции в чем-то помогли, но мой "маршрутизатор" так и не заработал. Я застопорился на передаче пакетов c eth0 на eth1 ;( Теперь я надеюсь что мои неправильные настройки (приводятся ниже) будут скорректированы знающими товарищами.

ТОВАРИЩИ! Не поленитесь почЕркать мои ошибки, ну и конечно же вписать правильные строчки:

Кое-что мне все-таки удалось. Видимо, трансляция адресов у меня все-таки настроена правильно. Это можно пронаблюдать, включив "capture" в "Network analyzer" и запустив с машины, которую я пытаюсь сделать роутером, "traceroute www.rambler.ru -s 192.168.2.0", пронаблюдав затем все происходящее на интерфейсе eth0, а именно - прямую и обратную подстановку. Попытка открыть ту же страничку на подключенном к "неудавшемуся роутеру" через eth1 компьютере приводит лишь к тому что Network analyzer отмечает поступление пакета содержащего запрос DNS на интерфейс eth1. До eth0 ничего не доходит ;( Нужна помощь.

МОИ НЕПРАВИЛЬНЫЕ НАСТРОЙКИ (для чЕркания, исправления и добавления):

В iptables – все цепочки пустые кроме

iptables –t nat –L –n
...
Chain POSTROUTING (policy ACCEPT)
target   prot   opt   source   destination
SNAT  all     --  192.168.2.0  0.0.0.0/0  to:a.b.c.222

Здесь a.b.c.222 - адрес, выданный провайдером.

route -n
Destination  Gateway  Genmask    Flags  Metric  Ref   Use  Iface
192.168.2.0  192.168.2.1  255.255.255.0   UG  0  0   0 eth1
127.0.0.0  0.0.0.0  255.0.0.0   U  0  0   0 lo
0.0.0.0  a.b.c.209  0.0.0.0   UG  0  0   0 eth0

Здесь a.b.c.209 - адрес шлюза, выданный провайдером.

ifcfg-eth0:

DEVICE=eth0
BOOTPROTO=none
BROADCAST=a.b.c.223
IPADDR=a.b.c.222
NETMASK=255.255.255.240
NETWORK=a.b.c.208
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet

ifcfg-eth1:

DEVICE=eth1
BOOTPROTO=none
BROADCAST=192.168.2.255
IPADDR=192.168.2.1
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet


Содержание

Сообщения в этом обсуждении
"Перенаправление eth1 -> eth0"
Отправлено Nikolaev_D , 16-Фев-04 23:11 
>Уже несколько дней без перерыва безуспешно пытаюсь настроить

поздравляю.

Ставь FreeBSD и настрой ее хотя бы так http://www.artifact.spb.ru/labs/short/ipfw-iptables.shtml

Это занимает 20 минут чистого времени (без времени инсталяции и пересборки ядра - это кстати опционально можно сделать потом)


"Перенаправление eth1 -> eth0"
Отправлено Ham , 17-Фев-04 12:27 
>>Уже несколько дней без перерыва безуспешно пытаюсь настроить
>
>поздравляю.
>
>Ставь FreeBSD и настрой ее хотя бы так http://www.artifact.spb.ru/labs/short/ipfw-iptables.shtml
>
>Это занимает 20 минут чистого времени (без времени инсталяции и пересборки ядра
>- это кстати опционально можно сделать потом)

Eto ne reshenie probleby, a uhod ot nee.


"Перенаправление eth1 -> eth0"
Отправлено Serezha , 17-Фев-04 13:26 
>>Ставь FreeBSD и настрой ее хотя бы так
>Eto ne reshenie probleby, a uhod ot nee.

Именно.

Ustanovit router Zebra iz standartnogo paketa, ona lejit na 2-m diske

Она у меня есть. И теперь я ее запустил, однако все осталось как есть. Пакеты, приходящие на eth1 (локалка) не достигают eth0 ;(
Что делать?


"Перенаправление eth1 -> eth0"
Отправлено ovax , 17-Фев-04 01:56 
Вероятно, ты не включил форвардинг ?


echo 1 > /proc/sys/net/ipv4/ip_forward



"Перенаправление eth1 -> eth0"
Отправлено klez , 17-Фев-04 10:45 
>echo 1 > /proc/sys/net/ipv4/ip_forward
ето надо прописать в rc.d  а то при перегрузки нечего не будет :)
всмысли пресылки пакетов
потом есть хорошая вешь tcpdump -i eth*
какой надо интерфейс.
и смотришь есть ли запросы в инет на внешнем инрефейсе.
Символьные ссылки умеещь делать в rc.d???



"Перенаправление eth1 -> eth0"
Отправлено Serezha , 17-Фев-04 12:02 
>Символьные ссылки умеещь делать в rc.d???

Еще нет. Можно немножко разъяснить, прежде чем я это все попробую?
В man нет раздела rc.d, а хочется точно понимать, что делаю...

echo - это, кажется, вывод строки.
>echo 1 > /proc/sys/net/ipv4/ip_forward
Правильно ли я понимаю, что эта команда записывает "1" в файл ip_forward?
Сейчас этот файл у меня имеет нулевой размер. Означает ли это, что ip - форвардинг выключен?

>ето надо прописать в rc.d  а то при перегрузки нечего не
>будет :)

rc.d - это ж каталог. Там есть еще поддиректории /init.d, /rcn.d, n=0..6 и файлы *rc, *rc.local и т.д.

Я так понимаю, что номер соответствует уровню загрузки системы, а rc.local, судя по комментарию в нем, - это скрипт, выполняющийся после выполнения всех скриптов необходимого уровня.

Правильно ли я понимаю, что эту строку я должен впиндюрить в *rc.local?

>всмысли пресылки пакетов
>потом есть хорошая вешь tcpdump -i eth*
>какой надо интерфейс.
>и смотришь есть ли запросы в инет на внешнем инрефейсе.

Спасибо. Утилита замечательно работает.


"Перенаправление eth1 -> eth0"
Отправлено Serezha , 17-Фев-04 12:15 
echo 1 > /proc/sys/net/ipv4/ip_forward

После этой команды в ip_forward все равно ничего не записывается, т.е. в любой другой файл - пожалуйста, а в этот - нет. Что делать?


"Перенаправление eth1 -> eth0"
Отправлено Ham , 17-Фев-04 10:55 
dobavit
DEVICE=eth1
BOOTPROTO=none
BROADCAST=192.168.2.255
IPADDR=192.168.2.1
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
IP_FORWARD=yes
____________________________
DEVICE=eth0
BOOTPROTO=none
BROADCAST=a.b.c.223
IPADDR=a.b.c.222
NETMASK=255.255.255.240
NETWORK=a.b.c.208
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
IP_FORWARD=yes

potom /etc/ini.d/network restart

Ili proche
Ustanovit router Zebra iz standartnogo paketa, ona lejit na 2-m diske
i poton /etc/init.d/zebra start
vse budet routitsya na urovne kernel, vse chto ne nado zakroi iptables!


"Перенаправление eth1 -> eth0"
Отправлено MacroS , 17-Фев-04 11:10 
еще одна твоя ошибка
в -j SNAT --to-source
надо писать СВОЮ айпишку на eth0, в данном случае должно быть
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source a.b.c.208

"Перенаправление eth1 -> eth0"
Отправлено Serezha , 17-Фев-04 13:29 
>надо писать СВОЮ айпишку на eth0, в данном случае должно быть
>iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source a.b.c.208

Это я опечатался, когда набирал в конференцию. В таблице все набрано правильно.


"Перенаправление eth1 -> eth0"
Отправлено Serezha , 17-Фев-04 13:42 
>IP_FORWARD=yes
>
>potom /etc/ini.d/network restart
>
>Ili proche
>Ustanovit router Zebra iz standartnogo paketa, ona lejit na 2-m diske
>i poton /etc/init.d/zebra start
>vse budet routitsya na urovne kernel, vse chto ne nado zakroi iptables!
>

Зебру поставил - не помогло ;(

Может быть, это все-таки связано с файлом /proc/sys/net/ipv4/ip_forward? Например, klez пишет, что в нем что-то должно быть записано, чтобы перенаправление пакетов было возможным. Так ли это? У меня этот файл защищен так, что из под root к нему нет доступа на запись, а его размер равен 0.


"Перенаправление eth1 -> eth0"
Отправлено A Clockwork Orange , 17-Фев-04 13:44 
Офигительный подход, маршрутизатор с двумя интерфейсами не работает, надо поставить зебру, дамается маршрутизатор настроить по проще зебры будет...

"Перенаправление eth1 -> eth0 !!!Удалось!!!!, но..."
Отправлено Serezha , 17-Фев-04 15:11 
>potom /etc/ini.d/network restart
>Ustanovit router Zebra

Получилось! Оно роутится и без зебры, но почему-то для того, чтобы начался роутинг, нужно сначала запустить зебру, апотом выключить ее ;) Просто, глупость какая-то. Такое впечатление, что при запуске зебры включается что-то нужное, что без нее выключено, а после выключения зебры оно остается включенным. Иннтересно, что бы это могло быть?

Ну, не оставлять же в rc.local "...zebra start", "...zebra stop", если сама zebra - то и не нужна ;)


"Перенаправление, где включить?"
Отправлено Serezha , 17-Фев-04 15:31 
Всем доброго времени!

Чувствую, что приближаюсь к решению пролемы после недельной битвы за запуск маршрутизации ;) Удалось настроиться, но...

Почему-то для того, чтобы начался роутинг (пересылка пакетов от одного и-фейса, например eth1 к другому (eth0)), приходится сначала запустить зебру, а потом выключить ее ;) Просто, глупость какая-то. Такое впечатление, что при запуске зебры включается что-то нужное, что без нее выключено, а после выключения зебры оно остается включенным. Иннтересно, что бы это могло быть?

Ну, не оставлять же в rc.local "...zebra start", "...zebra stop", если сама zebra - то и не нужна ;)


"Перенаправление, где включить?"
Отправлено A Clockwork Orange , 17-Фев-04 15:45 
Неправильный подход на мой взгляд

"Перенаправление eth1 -> eth0"
Отправлено flusher , 17-Фев-04 15:46 
>iptables –t nat –L –n
>...
>Chain POSTROUTING (policy ACCEPT)
>target   prot   opt   source  
>destination
>SNAT  all     --  192.168.2.0  0.0.0.0/0
> to:a.b.c.222
>
>Здесь a.b.c.222 - адрес, выданный провайдером.

Вроде правильно... Если это всё...

>route -n
>Destination  Gateway  Genmask    Flags  Metric  
>Ref   Use  Iface
>192.168.2.0  192.168.2.1  255.255.255.0   UG  0  0
>  0 eth1
>127.0.0.0  0.0.0.0  255.0.0.0   U  0  0
>  0 lo
>0.0.0.0  a.b.c.209  0.0.0.0   UG  0  0
>  0 eth0
>
А где
a.b.c.0 a.b.c.222 255.255.255.0 UG 0 0 0 eth0 (или подобное для сети провайдера)?

Запиши в rc.local
последней коммандой
eсho "1">/proc/sys/net/ipv4/ip_forward


"Перенаправление eth1 -> eth0"
Отправлено Serezha , 17-Фев-04 15:53 
>Запиши в rc.local
>последней коммандой
>eсho "1">/proc/sys/net/ipv4/ip_forward

А к чему это должно приводить? В ip_forward запишется "1"? Почему туда нельзя записать эту единичку вручную, каким-нть редактором?


"Перенаправление eth1 -> eth0, РАБОТАЕТ, СПАСИБО"
Отправлено Serezha , 17-Фев-04 16:54 
Все работает, СПАСИБО!

>А где
>a.b.c.0 a.b.c.222 255.255.255.0 UG 0 0 0 eth0 (или подобное для сети
>провайдера)?

Это вроде бы и не нужно.

>Запиши в rc.local
>последней коммандой
>eсho "1">/proc/sys/net/ipv4/ip_forward

А это я вписал. Раньше я то же писал без ковычек - почему-то не работало.
А все-таки, что такое ip_forward. Вроде бы это файл, но у него нулевой размер. Объясните ж, наконец, мне безграмотному, товарищи... А?



"Перенаправление eth1 -> eth0, РАБОТАЕТ, СПАСИБО"
Отправлено flusher , 17-Фев-04 17:10 
>Все работает, СПАСИБО!
>
>>А где
>>a.b.c.0 a.b.c.222 255.255.255.0 UG 0 0 0 eth0 (или подобное для сети
>>провайдера)?
>Это вроде бы и не нужно.

А где у тебя маршрут, определяющий сеть прова?

>>Запиши в rc.local
>>последней коммандой
>>eсho "1">/proc/sys/net/ipv4/ip_forward
>
>А это я вписал. Раньше я то же писал без ковычек -
>почему-то не работало.
С кавычками попробуй...
>А все-таки, что такое ip_forward. Вроде бы это файл, но у него
>нулевой размер. Объясните ж, наконец, мне безграмотному, товарищи... А?


Отредактировать редактором его нельзя.. можно посмотреть. Это не файл в нормальном понимании... Это отображение состояния устройств и настроек с помощю procfs (man procfs)


"Перенаправление eth1 -> eth0, РАБОТАЕТ, СПАСИБО"
Отправлено McDuck , 18-Фев-04 14:26 
Практически все, что лежит в /proc и глубже - это не файлы (на диске), а "трубы" (pipes) в/из ядро/системные области памяти/процессы/и т.п. прибамбасы. Поэтому и "длина файла" = 0.

В частности, параметр (труба) /proc/sys/net/ipv4/ip_forward отвечает за передачу пакетов между интерфейсами (если их > 1).

Посмотреть параметр можно с помощью команды cat:
cat /proc/sys/net/ipv4/ip_forward
Если увидишь "0" - передача запрещена, если "1" - разрешена.
Соответственно, разрешить передачу пакетов можно командой
echo 1 > /proc/sys/net/ipv4/ip_forward , а запретить -
echo 0 > /proc/sys/net/ipv4/ip_forward .

Скорее всего, zebra при старте устанавливает ip_forward в 1 (так, на всякий случай :), а при стопе - не снимает в 0.
Прописав вышеуказанную команду в rc.local, стартовать и стопать zebr'у уже не надо.