2 интерфейса и динамическая конфигурация в Linux
Всем привет! Недавно столкнулся с проблемой на своем домашнем сервачке:
default 192.168.1.1 0.0.0.0 UG 100 0 0 eth1
default 10.2.77.1 0.0.0.0 UG 100 0 0 eth0
Разумеется при таком положении дел работать как надо маршрутизация не
будет. Все дело в том, что eth1 - смотрит в мою локальную сеть, а eth0 в
сеть провайдера и оба получают ip адреса по dhcp.
Первое что пришло на ум - это дабавить в настроки команду:
post-up route del default
на соответствующем интерфейсе, но косяк этого костыля в том, что в
процессе работы службы dhclient заново запросит у сервера параметры и
все вернется на круги своя.
Дальше я стал читать man interfaces и вычитал вот что:
metric metric
Routing metric for default gateway (integer)
Добавил в конфиг и получил:
default 192.168.1.1 0.0.0.0 UG 200 0 0 eth1
default 10.2.77.1 0.0.0.0 UG 100 0 0 eth0
После этого все заработало, так я подумал. Да таблица маршрутизации
стала работать как надо, но по dhcp передаются еще такие параметры как
name-server, ntp-server и так далее. Разумеется это у меня как не
работало так и не работало.
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
10.0.0.162 .INIT. 16 u - 64 0 0.000 0.000 0.000
Время за неделю ушло на минуту, я уже молчу про днс, он вообще
резолвил каждый раз у провайдера, на что тратил драгоценные милисекунды.
И тут я подумал, что надо решать проблему там где она есть, а не
искать обходные пути. А проблема была в dhcp протоколе, точнее в демоне
dhclient. Первый же прочитанный ман решил все проблемы. Открываем на
редактирование файл /etc/dhcp3/dhclient.conf и добавляем в него примерно вот что:
interface "eth0"{
request subnet-mask, broadcast-address, time-offset,
domain-name, host-name, interface-mtu,
rfc3442-classless-static-routes;
}
Все просто, по умолчанию dhclient принимает и обрабатывает
для всех подвласных ему интерфейсов почти все опции, мне же нужно только
адрес, маску, мту и прочии мелочи для надежности. И мне точно не надо
шлюз, NTP сервер и DNS сервер. После этого в файле interfaces делаем
настройки по умолчанию, т.е. Просто на всех интерфейсах убираем лишнии
строки, Post-up и метрик, рестартуем сеть:
/etc/init.d/networking restart
и радуемся тому, что все работает.
Все опции нужные и не нужные можно узнать тут man dhcp-options.
Можно было просто написать 2 последних абзаца и успокоится, но мне
показалось, что тогда всем не будет понятно почему именно так а не иначе
нужно делать.
http://linuxcenter.kz/page/2-%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0-%D0%B8-%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F-%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D1%8F-%D0%B2-linux
|