dhclient и 2 локалки.

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
hedgehog
сержант
Сообщения: 220
Зарегистрирован: 2010-01-26 11:47:05
Откуда: Kharkiv, Ukraine
Контактная информация:

dhclient и 2 локалки.

Непрочитанное сообщение hedgehog » 2010-02-10 16:07:27

здравствуйте. возникла проблема в плане "подружить дхсп клиент с двумя провайдерами". я подключен к двум локалкам:
isp1 через интерфейс vr0 (статика)
isp2 через интерфейс nfe0 (dhcp)

OS - FreeBSD 8.0

проблема заключается в том, что ACL у dhcp isp2 базируется на времени получения адреса, т.е. статически вбить настройки для него я не могу. маршруты, приходящие по дхсп, также не устраивают, т.к. конфликтуют с маршрутами isp1. dhclient-script модифицировать вроде как не по-джедайски, через supersede routers в dhclient.conf удалось добавить только дефолт. в rc.conf присутствует строка:

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

ifconfig_nfe0="DHCP"
после чего маршруты добавляются статикой. но они добавляются в то время, когда интерфейс еще не получил адрес, в результате - network unreachable. присвоить интерфейсу адрес и маршруты до запуска дхсп клиента же ни к чему не приводит: при запуске dhclient отваливаются все маршруты на указанном интерфейсе (в данном случае - nfe0). сам роутинг в моем понимании выглядит так:

10.0.0.0/16 ходит через isp1
10.0.0.0/8 - через isp2, т.к. адреса здесь используют второй октет (10.x.x.x), кроме впн серверов, находящихся в подсети:
10.0.0.0/27 - впн-серверы провайдера isp2

если после получения адреса я все это дело впишу ручками, все работает и ходит кудой надо, дхсп клиент висит в процессах и периодически пинает сервер, не трогая маршрутов:

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

Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
10.0.0.0/27        isp2-gateway       UGS         2   283397   nfe0 =>
10.0.0.0/16        isp1-gateway       UGS         0        0    vr0 =>
10.0.0.0/8         isp2-gateway        UGS         1     2644   nfe0
собственно, идея в том, чтобы все это дело прописывалось автоматом при запуске dhclient

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hedgehog
сержант
Сообщения: 220
Зарегистрирован: 2010-01-26 11:47:05
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: dhclient и 2 локалки.

Непрочитанное сообщение hedgehog » 2010-02-10 17:21:22

мде, убил кучу времени на поиск решения, отписался на форум, а потом нашел инфо про скрипт dhclient-enter-hooks , упоминания которого в мануалах dhclient и dhclient.conf нет вообще...

сделал так, чуть-чуть откусив код от dhclient-script:

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

$ cat /etc/dhclient-enter-hooks
#!/bin/sh
add_new_routes() {
        for router in $new_routers; do
                if [ "$interface" = "nfe0" ]; then

                        if [ "$new_ip_address" = "$router" ]; then
                                route add default -iface $router >/dev/null 2>&1
                        else
                                route add -net 10.0.0.0/8 $router >/dev/null 2>&1
                                route add -net 10.0.0.0/27 $router >/dev/null 2>&1
                        fi
                fi
                # 2nd and subsequent default routers error out, so explicitly
                # stop processing the list after the first one.
                break
        done
}
в итоге при запуске dhclient я получаю нужные мне маршруты, если используется на интерфейсе nfe0, и могу пользоваться обеими локалками. плюс ко всему не появляется приезжающий от провайдера дефолтный маршрут, который мне только мешал бы. правда, выглядит все это как грабля :)