[Comm] static-routes нифига не прописываются на алиасы.
Dmitry Lebkov
=?iso-8859-1?q?dima_=CE=C1_sakhalin=2Eru?=
Ср Авг 25 06:37:08 MSD 2004
On Wed, 25 Aug 2004 04:06:41 +0400
rcc-of на penza.com.ru wrote:
> Здравствуйте, Dmitry.
>
> Вы писали 24 августа 2004 г., 15:39:45:
>
> >> >> Есть VLAN интерфейс eth0.5, есть на нем еще и алиас eth0.5:0
> >> >>
> >> >> Есть в /etc/sysconfig/static-routes запись типа
> >> >>
> >> >> eth0.5:0 net 192.168.10.1 gw 192.168.1.10
> >> > Написать вот так:
> >>
> >> > eth0.5 net 192.168.10.1 gw 192.168.1.10
> >> Ага, и исходящий адрес пакетов будет от интерфейса eth0.5
> >> оно мне надо?
>
> > Кто тебе сказал, что исходящий адрес будет таким? Адрес будет
> > выбран в зависимости от маршрута.
> Мда.... торможу, адрес будет от интерфейса eth0.5 только если
> указать dev eth0.5.
Не так. Если у тебя есть интерфейс с двумя IP-адресами (один на
самом интерфейсе, а второй на алиасе), то в таблице маршрутизации
у тебя будут два маршрута для connected-сетей. Допустим:
eth0 - 192.168.0.1/24
eth0:0 - 192.168.1.1/24
В таблице маршрутизации имеем:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Если добавишь два маршрута:
route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.50 dev eth0
route add -net 10.0.1.0 netmask 255.255.255.0 gw 192.168.1.50 dev eth0
то пакеты, идущие от твоего хоста в сеть 10.0.0.0/24 будут иметь
src IP = 192.168.0.1, а если в сеть 10.0.1.0/24 - то 192.168.1.1.
Это стандартное поведение TCP/IP-стека, при условии, что не используются
никакие дополнительные механизмы для подмены src IP пакетов.
> > Внимательно изучаем скрипт ifup-routes и видим, что имя интерфейса
> > используется только для того, чтоб поднимать соответствующие маршруты
> > из static-routes в момент поднятия соответствующего интерфейса.
> Все, понял идею. т.е. в ALT Linux в таблице статического роутинга
> надо указывать физический интерфейс, а если надо извратиться то
> указывать dev.
Нет, неверно понял. Это не ALT-specific. В свое время я ходил по этим
граблям в RedHat и в BlackCat. В таблице маршрутизации ядра _всегда_
используются названия _физических_ интерфейсов, а не alias'ов.
Добавлять dev нужно было потому, что при разборе static-routes скриптом
ifup-routes, в параметры route передавалась вся строка (за исключением
первого поля) и после нее дописывалось имя интерфейса. В какой-то версии
route не отрабатывал вот такую запись:
# route add -net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.1 eth0
ругаясь на отсутствие dev (хотя в man route и указано, что в таком
случае dev можно не использовать). Отсюда и пошло добавление dev
в static-routes.
> Дело в том, что на одной из Машин я пользую спутниковый DVB интернет
> и в свое время помучался с тем, что в static-routes нельзя было
> прописать alias, а мне нужно было выдавать в исходящий интерфейс
> пакеты с исходящим адресом от алиаса. Теперь что надо было указывать
> имя реального интерфейса и добавлять dev от alias-а.
>
> Вообще меня выбило из колеи то, что до этого стоял Mandrake и в нем
> конструкции с алиасами в static-routes прокатывали совершенно
> спокойно.
Скорее всего в Мандраковских net-скриптах просто обрабатывается ситуация
с именами алиасов в static-routes. Может быть удобно, но не принципиально.
> > Так, сразу не увидел. Если ты пытаешся добавить маршрут на сеть, то
> > необходимо указывать маску. А если на хост - то и указывать, что
> > это хост. Т.е. выглядеть должно вот так:
>
> > eth0.5 host 192.168.10.1 gw 192.168.1.10 dev
>
> > или (предположив что маршрутится вся /24 сеть)
>
> > eth0.5 net 192.168.10.0 netmask 255.255.255.0 gw 192.168.1.10 dev
> Я обычно пользую 192.168.10.0/24 - просто когда писал письмо забыл
> дописать, у меня ведь в реальности другие адреса и другие маски.
>
>
> В общем огромное спасибо, буду копать в очерченных направлениях.
Ну и основы TCP/IP неплохо бы покопать ... ;) Когда-то мне встречалась
замечательная книжка "UNIX internetworking with TCP/IP". В свое время
очень помогла ... %)
--
WBR, Dmitry Lebkov
Подробная информация о списке рассылки community