Показать сообщение отдельно
  #3  
Старый 28.12.2018, 02:41
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: Маршрутизация: две сетевых, static и dhcp

Eugene Grosbein написал(а) к Dmitry Kolvakh в Dec 18 05:34:43 по местному времени:

27 дек. 2018, четверг, в 17:56 NOVT, Dmitry Kolvakh написал(а):

DK> Еще один нубский вопрос.
DK> Имеется две сетевых карты, на первой адрес задан статически, на второй DНCP.
DK> В rc.conf указан defaultrouter в сети первой карты.
DK> Для второй карты потребуется добавить в маршрутизацию пару-тройку сетей, но до
DK> этого не доходит - как только вторая карта получает адрес по DНCP, так она
DK> заодно переписывает на себя шлюз по умолчанию.
DK> В rc.conf написано так: ifconfig_em1="DНCP".
DK> Есть какое-нибудь волшебное слово, чтобы по DНCP брался только адрес, но не
DK> трогался шлюз по умолчанию?

DK> И тогда уж, есть ли возможность в статических маршрутах задавать не IP-адрес, а
DK> имя интерфейса? (т.к. неизвестно, что придет по dhcp). Типа так:
DK> static_routes="blabla"
DK> route_blabla="-net 192.168.0.1/24 em1"
DK> При попытке применить получаю ошибку "bad address em1".

Теоретически можно писать -iface em1, но по разным причинам
лучше так не делать, есть способ лучше. Я делаю такие вещи при помощи
dhclient-enter-hooks - механизма, позволяющего переопределять действия,
которые выполняет dhclient при различных событиях типа получения адреса.

Создаёшь скрипт /etc/dhclient-enter-hooks и пишешь в него:

# При получении адресов DNS-серверов ничего не делать
# (не трогать /etc/resolv.conf)
addnew_resolvconf() {
return 0
}

# При получении нового IP выполнять то же,
# что и стандартный addnewaddress, но не трогать
# default route; плюс добавлять свои маршруты
addnewaddress() {
# добавить адрес к интерфейсу
eval "$IFCONFIG $interface \
inet $newipaddress \
netmask $newsubnetmask \
broadcast $newbroadcastaddress \
$medium"
# сохранить адрес шлюза в interface description
eval '$IFCONFIG $interface description "gw $new_routers"'

$LOGGER "New IP Address ($interface): $newipaddress"
$LOGGER "New Subnet Mask ($interface): $newsubnetmask"
$LOGGER "New Broadcast Address ($interface): $newbroadcastaddress"
$LOGGER "New Routers ($interface): $new_routers"

# добавить свои маршруты
route add X.X.X.X/X $new_routers
route add Y.Y.Y.Y/Y $new_routers

# перезапустить ipfw ради перенастройки ipfw nat
/etc/rc.d/ipfw start >/dev/null 2>&1
return 0
}

Eugene
--
Поэты - страшные люди. У них все святое.
--- slrn/1.0.3 (FreeBSD)
Ответить с цитированием