Уже несколько дней без перерыва безуспешно пытаюсь настроить маршрутизацию из локалки 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=Ethernetifcfg-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
>Уже несколько дней без перерыва безуспешно пытаюсь настроитьпоздравляю.
Ставь FreeBSD и настрой ее хотя бы так http://www.artifact.spb.ru/labs/short/ipfw-iptables.shtml
Это занимает 20 минут чистого времени (без времени инсталяции и пересборки ядра - это кстати опционально можно сделать потом)
>>Уже несколько дней без перерыва безуспешно пытаюсь настроить
>
>поздравляю.
>
>Ставь FreeBSD и настрой ее хотя бы так http://www.artifact.spb.ru/labs/short/ipfw-iptables.shtml
>
>Это занимает 20 минут чистого времени (без времени инсталяции и пересборки ядра
>- это кстати опционально можно сделать потом)Eto ne reshenie probleby, a uhod ot nee.
>>Ставь FreeBSD и настрой ее хотя бы так
>Eto ne reshenie probleby, a uhod ot nee.Именно.
Ustanovit router Zebra iz standartnogo paketa, ona lejit na 2-m diske
Она у меня есть. И теперь я ее запустил, однако все осталось как есть. Пакеты, приходящие на eth1 (локалка) не достигают eth0 ;(
Что делать?
Вероятно, ты не включил форвардинг ?
echo 1 > /proc/sys/net/ipv4/ip_forward
>echo 1 > /proc/sys/net/ipv4/ip_forward
ето надо прописать в rc.d а то при перегрузки нечего не будет :)
всмысли пресылки пакетов
потом есть хорошая вешь tcpdump -i eth*
какой надо интерфейс.
и смотришь есть ли запросы в инет на внешнем инрефейсе.
Символьные ссылки умеещь делать в rc.d???
>Символьные ссылки умеещь делать в 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*
>какой надо интерфейс.
>и смотришь есть ли запросы в инет на внешнем инрефейсе.Спасибо. Утилита замечательно работает.
echo 1 > /proc/sys/net/ipv4/ip_forwardПосле этой команды в ip_forward все равно ничего не записывается, т.е. в любой другой файл - пожалуйста, а в этот - нет. Что делать?
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=yespotom /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!
еще одна твоя ошибка
в -j SNAT --to-source
надо писать СВОЮ айпишку на eth0, в данном случае должно быть
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source a.b.c.208
>надо писать СВОЮ айпишку на eth0, в данном случае должно быть
>iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source a.b.c.208Это я опечатался, когда набирал в конференцию. В таблице все набрано правильно.
>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.
Офигительный подход, маршрутизатор с двумя интерфейсами не работает, надо поставить зебру, дамается маршрутизатор настроить по проще зебры будет...
>potom /etc/ini.d/network restart
>Ustanovit router ZebraПолучилось! Оно роутится и без зебры, но почему-то для того, чтобы начался роутинг, нужно сначала запустить зебру, апотом выключить ее ;) Просто, глупость какая-то. Такое впечатление, что при запуске зебры включается что-то нужное, что без нее выключено, а после выключения зебры оно остается включенным. Иннтересно, что бы это могло быть?
Ну, не оставлять же в rc.local "...zebra start", "...zebra stop", если сама zebra - то и не нужна ;)
Всем доброго времени!Чувствую, что приближаюсь к решению пролемы после недельной битвы за запуск маршрутизации ;) Удалось настроиться, но...
Почему-то для того, чтобы начался роутинг (пересылка пакетов от одного и-фейса, например eth1 к другому (eth0)), приходится сначала запустить зебру, а потом выключить ее ;) Просто, глупость какая-то. Такое впечатление, что при запуске зебры включается что-то нужное, что без нее выключено, а после выключения зебры оно остается включенным. Иннтересно, что бы это могло быть?
Ну, не оставлять же в rc.local "...zebra start", "...zebra stop", если сама zebra - то и не нужна ;)
Неправильный подход на мой взгляд
>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
>Запиши в rc.local
>последней коммандой
>eсho "1">/proc/sys/net/ipv4/ip_forwardА к чему это должно приводить? В ip_forward запишется "1"? Почему туда нельзя записать эту единичку вручную, каким-нть редактором?
Все работает, СПАСИБО!>А где
>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. Вроде бы это файл, но у него нулевой размер. Объясните ж, наконец, мне безграмотному, товарищи... А?
>Все работает, СПАСИБО!
>
>>А где
>>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)
Практически все, что лежит в /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'у уже не надо.