forum.wfido.ru

forum.wfido.ru (http://forum.wfido.ru/index.php)
-   RU.UNIX.BSD (http://forum.wfido.ru/forumdisplay.php?f=36)
-   -   Маршрутизация: две сетевых, static и dhcp (http://forum.wfido.ru/showthread.php?t=77612)

Dmitry Kolvakh 27.12.2018 17:21

Маршрутизация: две сетевых, static и dhcp
 
Dmitry Kolvakh написал(а) к All в Dec 18 17:56:44 по местному времени:


Нi All!

Еще один нубский вопрос.

Имеется две сетевых карты, на первой адрес задан статически, на второй DНCP.
В rc.conf указан defaultrouter в сети первой карты.

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

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


--
Good Luck! - Dmitry V. Kolvakh aka Keu

--- GoldED+/W32-MINGW 1.1.5-b20060703

Dmitriy Smirnov 27.12.2018 18:02

Маршрутизация: две сетевых, static и dhcp
 
Dmitriy Smirnov написал(а) к Dmitry Kolvakh в Dec 18 18:54:08 по местному времени:

hi, Dmitry!

27 Dec 18 17:56, Dmitry Kolvakh wrote to All:


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

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

думаю тебе поможет man dhclient.conf

interface "ep0" {
send host-name "andare.fugue.com";
send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
send dhcp-lease-time 3600;
supersede domain-name "fugue.com rc.vix.com home.vix.com";
prepend domain-name-servers 127.0.0.1;
> request subnet-mask, broadcast-address, time-offset,
> routers,
> domain-name, domain-name-servers, host-name;
> require subnet-mask, domain-name-servers;
> script "/etc/dhclient-script";
media "media 10baseT/UTP", "media 10base2/BNC";
}

запрашиваешь что хочешь и через скрипт дорисовываешь что угодно.

wbr, Dmitriy.
---

Eugene Grosbein 28.12.2018 02:41

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)
add[b]new_resolv[/b]conf() {
return 0
}

# При получении нового IP выполнять то же,
# что и стандартный add[b]new[/b]address, но не трогать
# default route; плюс добавлять свои маршруты
add[b]new[/b]address() {
# добавить адрес к интерфейсу
eval "$IFCONFIG $interface \
inet $new[b]ip[/b]address \
netmask $new[b]subnet[/b]mask \
broadcast $new[b]broadcast[/b]address \
$medium"
# сохранить адрес шлюза в interface description
eval '$IFCONFIG $interface description "gw $new_routers"'

$LOGGER "New IP Address ($interface): $new[b]ip[/b]address"
$LOGGER "New Subnet Mask ($interface): $new[b]subnet[/b]mask"
$LOGGER "New Broadcast Address ($interface): $new[b]broadcast[/b]address"
$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)

Evgeny Chevtaev 28.12.2018 21:21

Маршрутизация: две сетевых, static и dhcp
 
Evgeny Chevtaev написал(а) к Dmitriy Smirnov в Dec 18 22:33:22 по местному времени:

Нi Dmitriy!

Thursday December 27 2018 18:54, Dmitriy Smirnov wrote to Dmitry Kolvakh:

DK>> И тогда уж, есть ли возможность в статических маршрутах задавать
DK>> не IP-адрес, а имя интерфейса? (т.к. неизвестно, что придет по
DK>> dhcp). Типа так: static[b]routes="blabla" route[/b]blabla="-net
DK>> 192.168.0.1/24 em1" При попытке применить получаю ошибку "bad
DK>> address em1". Как надо правильно и можно ли вообще?
DS> думаю тебе поможет man dhclient.conf
>> request subnet-mask, broadcast-address, time-offset,
>> routers,
>> domain-name, domain-name-servers, host-name;
>> require subnet-mask, domain-name-servers;

Я эту байлалу специально проверил по наставлению man'ов. Думал человеку умно отвечу-помогу. Но что-то нифига, всё равно дефолт переписывает.

With best regards,
Evgeny
--- GoldED+/BSD 1.1.5-b20180707

Dmitriy Smirnov 29.12.2018 05:52

Маршрутизация: две сетевых, static и dhcp
 
Dmitriy Smirnov написал(а) к Evgeny Chevtaev в Dec 18 06:42:06 по местному времени:

hi, Evgeny!

27 Dec 18 22:33, Evgeny Chevtaev wrote to Dmitriy Smirnov:

DK>>> И тогда уж, есть ли возможность в статических маршрутах задавать
DK>>> не IP-адрес, а имя интерфейса? (т.к. неизвестно, что придет по
DK>>> dhcp). Типа так: static[b]routes="blabla" route[/b]blabla="-net
DK>>> 192.168.0.1/24 em1" При попытке применить получаю ошибку "bad
DK>>> address em1". Как надо правильно и можно ли вообще?
DS>> думаю тебе поможет man dhclient.conf
>>> request subnet-mask, broadcast-address, time-offset,
>>> routers,
>>> domain-name, domain-name-servers, host-name;
>>> require subnet-mask, domain-name-servers;

EC> Я эту байлалу специально проверил по наставлению man'ов. Думал
EC> человеку умно отвечу-помогу. Но что-то нифига, всё равно дефолт
EC> переписывает.

лет 10 назад эта байда точно работала, по крайней мере у меня на домашнем серванте.

wbr, Dmitriy.
---

Dmitry Kolvakh 29.12.2018 12:21

Маршрутизация: две сетевых, static и dhcp
 
Dmitry Kolvakh написал(а) к Evgeny Chevtaev в Dec 18 13:14:02 по местному времени:


Нi Evgeny!

27 Dec 18, Evgeny Chevtaev wrote to Dmitriy Smirnov:


EC> Я эту байлалу специально проверил по наставлению man'ов. Думал
EC> человеку умно отвечу-помогу. Но что-то нифига, всё равно дефолт
EC> переписывает.

А я думал, что это я тупой и не работает только у меня :(

--
Good Luck! - Dmitry V. Kolvakh aka Keu

--- GoldED+/W32-MINGW 1.1.5-b20060703

Dmitry Kolvakh 29.12.2018 14:12

Маршрутизация: две сетевых, static и dhcp
 
Dmitry Kolvakh написал(а) к Eugene Grosbein в Dec 18 14:16:46 по местному времени:


Нi Eugene!

28 Dec 18, Eugene Grosbein wrote to Dmitry Kolvakh:


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

Единственный заметный эффект - работа вот этой строчки:

EG> eval '$IFCONFIG $interface description "gw $new_routers"'

В выводе ifconfig появляется ожидаемый description. Эффект стойкий, строчку комментируем, дескрипшн исчезает, активируем - снова появляется.

EG> $LOGGER "New IP Address ($interface): $new[b]ip[/b]address"

И более ничего не заметно. Даже в лог не пишет.

Дописал в самом конце строчку $LOGGER "script debug", результат ее работы увидел только один раз, что вообще совсем странно.

ЧЯ могу ДНТ?

И кстати, как правильно переполучить адрес по dhcp с выполнением всех процедур? service netif restart вызывает только потерю адреса интерфейсом.

--
Good Luck! - Dmitry V. Kolvakh aka Keu

--- GoldED+/W32-MINGW 1.1.5-b20060703

Eugene Grosbein 29.12.2018 14:32

Re: Маршрутизация: две сетевых, static и dhcp
 
Eugene Grosbein написал(а) к Dmitry Kolvakh в Dec 18 17:15:06 по местному времени:

29 дек. 2018, суббота, в 14:16 NOVT, Dmitry Kolvakh написал(а):

EG>> Создаёшь скрипт /etc/dhclient-enter-hooks и пишешь в него:
DK> Единственный заметный эффект - работа вот этой строчки:
EG>> eval '$IFCONFIG $interface description "gw $new_routers"'

На самом деле работают все строчки.

DK> В выводе ifconfig появляется ожидаемый description. Эффект стойкий, строчку
DK> комментируем, дескрипшн исчезает, активируем - снова появляется.
EG>> $LOGGER "New IP Address ($interface): $new[b]ip[/b]address"
DK> И более ничего не заметно. Даже в лог не пишет.

А ты в syslog.conf скомандовал писать строчки от dhclient в файл?
В какой именно?

DK> Дописал в самом конце строчку $LOGGER "script debug", результат ее работы
DK> увидел только один раз, что вообще совсем странно.
DK> ЧЯ могу ДНТ?

syslog по дефолту не пишет в файл одинаковые строчки, если они идут подряд.

DK> И кстати, как правильно переполучить адрес по dhcp с выполнением всех процедур?
DK> service netif restart вызывает только потерю адреса интерфейсом.

Я делаю просто killall dhclient; sleep 1; dhclient -b re0

Eugene
--- slrn/1.0.3 (FreeBSD)

Dmitry Kolvakh 29.12.2018 14:42

Маршрутизация: две сетевых, static и dhcp
 
Dmitry Kolvakh написал(а) к Eugene Grosbein в Dec 18 15:30:12 по местному времени:


Нi Eugene!

29 Dec 18, Eugene Grosbein wrote to Dmitry Kolvakh:

EG> На самом деле работают все строчки.

По логике вещей они не могут не работать, но эффекта от работы не видно. Шлюз по умолчанию как переопределялся, так и переопределяется.

EG> А ты в syslog.conf скомандовал писать строчки от dhclient в файл?
EG> В какой именно?

Ничего не командовал, по дефолту *.notify летит в /var/log/messages, и иногда таки долетает.

DK>> Дописал в самом конце строчку $LOGGER "script debug", результат
DK>> ее работы увидел только один раз, что вообще совсем странно. ЧЯ
DK>> могу ДНТ?

EG> syslog по дефолту не пишет в файл одинаковые строчки, если они идут
EG> подряд.

Так я передергивал dhcp ребутом всей бабуш^W виртуалки, там журнал всего старта системы между этими строчками.

DK>> И кстати, как правильно переполучить адрес по dhcp с выполнением
DK>> всех процедур? service netif restart вызывает только потерю
DK>> адреса интерфейсом.

EG> Я делаю просто killall dhclient; sleep 1; dhclient -b re0

ОК, спасибо, попробую.

--
Good Luck! - Dmitry V. Kolvakh aka Keu

--- GoldED+/W32-MINGW 1.1.5-b20060703

Dmitry Kolvakh 29.12.2018 16:11

Маршрутизация: две сетевых, static и dhcp
 
Dmitry Kolvakh написал(а) к Eugene Grosbein в Dec 18 16:38:32 по местному времени:


Нi Eugene!

29 Dec 18, Eugene Grosbein wrote to Dmitry Kolvakh:

EG> На самом деле работают все строчки.

Докладываю:

Нагуглил [url]http://www.macfreek.nl/memory/DНCP[b]Client_Script[/b]Examples[/url]
Процедуру add[b]new[/b]address деактивировал и
сделал по инструкции оттуда:

# Determine gateway from routers
# extract first IP address and replace all . with " "
gateway=`echo "${new_routers%% *}" | sed 's/\./ /g'`
new[b]classless[/b]routes="23 192 168 0 $gateway 23 10 0 2 $gateway 24 10 0 1 $gateway"
unset new_routers

И это у меня заработало.

--------------------

PS эхотаг 12.0

Почему не работало по твоему рецепту - неясно. Ты же его не с потолка взял.



--
Good Luck! - Dmitry V. Kolvakh aka Keu

--- GoldED+/W32-MINGW 1.1.5-b20060703


Текущее время: 22:37. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot