Получение маршрутов через dhcp в Мандриве (не работает dhclient)
Модератор: Bizdelnick
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Получение маршрутов через dhcp в Мандриве
Положил в /etc 2 файла: dhclient.conf и dhclient-exit-hooks. После перезагрузки Мандривы маршруты стали получаться через DHCP. Если в NetApplet выключить и снова включить сетевую карту, то маршруты более не получаются через DHCP. Перезапуск сетевых служб через service network restart или /etc/init.d/network restart не помогает восстановить получение маршрутов через DHCP, помогает лишь перезагрузка.
Быть может в Мандриве есть какие-то особенности, которые я не знаю, отличные от других линуксов?
Необходимо, чтобы перезапуск сетевой карты не приводил к потере маршрутов, полученных по DHCP.
Прилагаются файлы dhclient.conf и dhclient-exit-hooks.
ничего они не получаются через dhcp, они в rc.local у меня были, а я проморгал. не работает dhcp.
Быть может в Мандриве есть какие-то особенности, которые я не знаю, отличные от других линуксов?
Необходимо, чтобы перезапуск сетевой карты не приводил к потере маршрутов, полученных по DHCP.
Прилагаются файлы dhclient.conf и dhclient-exit-hooks.
ничего они не получаются через dhcp, они в rc.local у меня были, а я проморгал. не работает dhcp.
Консоль на мыло. Надо развивать графику.
-
SinClaus
- Сообщения: 1952
- Статус: Мучитель Мандривы
- ОС: Arch,BSD
Re: Получение маршрутов через dhcp в Мандриве
man dhclient-script читал? У тебя ВРОДЕ обрабатывается условие $reason == BOUND, а условий для вызова может быть (и бывает):
MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, STOP, RELEASE, NBI and TIMEOUT
т.е. обрабатывается только ситуация первого подключения подключения.
MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, STOP, RELEASE, NBI and TIMEOUT
т.е. обрабатывается только ситуация первого подключения подключения.
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
SinClaus писал(а): ↑01.12.2009 15:55man dhclient-script читал? У тебя ВРОДЕ обрабатывается условие $reason == BOUND, а условий для вызова может быть (и бывает):
MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, STOP, RELEASE, NBI and TIMEOUT
т.е. обрабатывается только ситуация первого подключения подключения.
какое же поставить условие? уже все перебрал - результат одинаковый-никакой.
или какую команду выполнить, чтобы вернуть маршруты без перезагрузки?
Консоль на мыло. Надо развивать графику.
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
во тему поднял. 83 человека посмотрело и написал только один.
Консоль на мыло. Надо развивать графику.
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
romkaromka писал(а): ↑01.12.2009 11:05Положил в /etc 2 файла: dhclient.conf и dhclient-exit-hooks. После перезагрузки Мандривы маршруты стали получаться через DHCP. Если в NetApplet выключить и снова включить сетевую карту, то маршруты более не получаются через DHCP. Перезапуск сетевых служб через service network restart или /etc/init.d/network restart не помогает восстановить получение маршрутов через DHCP, помогает лишь перезагрузка.
Быть может в Мандриве есть какие-то особенности, которые я не знаю, отличные от других линуксов?
Необходимо, чтобы перезапуск сетевой карты не приводил к потере маршрутов, полученных по DHCP.
Прилагаются файлы dhclient.conf и dhclient-exit-hooks.
ничего они не получаются через dhcp, они в rc.local у меня были, а я проморгал. не работает dhcp.
Консоль на мыло. Надо развивать графику.
-
SinClaus
- Сообщения: 1952
- Статус: Мучитель Мандривы
- ОС: Arch,BSD
Re: Получение маршрутов через dhcp в Мандриве
Во первых, скрипт dhclient-exit-hooks должен исполняться bash'ем? Тогда почему нет "зачина" в начале файла - #!/bin/sh ?
Или точно не нужно?
Во вторых - обрабатывать нужно не какое-то одно событие, а ВСЕ, т.е. прописывать ветку действий на каждое из них.
Или точно не нужно?
Во вторых - обрабатывать нужно не какое-то одно событие, а ВСЕ, т.е. прописывать ветку действий на каждое из них.
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
lease {
interface "eth0";
fixed-address 10.213.73.169;
option subnet-mask 255.255.248.0;
option routers 10.213.72.1;
option dhcp-lease-time 604800;
option dhcp-message-type 5;
option domain-name-servers 213.234.192.8,85.21.192.3;
option dhcp-server-identifier 10.133.34.33;
option dhcp-renewal-time 302400;
option dhcp-rebinding-time 529200;
option domain-name "corbina.net";
renew 6 2009/12/05 10:01:33;
rebind 2 2009/12/08 11:51:31;
expire 3 2009/12/09 08:51:31;
}
У меня получается вот такая билиберда, а маршрутов нету
"зачин" в начале файла - #!/bin/sh в инете смотрел-кто-то пишет, кто-то нет
Консоль на мыло. Надо развивать графику.
-
ATIpro
- Сообщения: 614
- ОС: Arch Linux x86_64
Re: Получение маршрутов через dhcp в Мандриве
romkaromka писал(а): ↑02.12.2009 12:28"зачин" в начале файла - #!/bin/sh в инете смотрел-кто-то пишет, кто-то нет
Вообще его хорошо бы сделать. Он запускает этот скрип в отдельном процессе sh и если в момент выполнения допустим скрип зависнет, можно будет этот новый процесс закрыть без каких-либо проблем для текущей сессии. Работать будет и без него, но просто так принято.
-
SinClaus
- Сообщения: 1952
- Статус: Мучитель Мандривы
- ОС: Arch,BSD
Re: Получение маршрутов через dhcp в Мандриве
Кстати о птичках - а почему используется dhclient-exit-hooks?
В мане же ясно написано "On after defining the make_resolv_conf function, the client script checks for the presence of an executable
/etc/dhclient-enter-hooks script, and if present, it invokes the script inline, using the Bourne shell '.' command.
Это второй абзац описания HOOKS, т.е. как раз юзерской части dhcp скриптов.
В мане же ясно написано "On after defining the make_resolv_conf function, the client script checks for the presence of an executable
/etc/dhclient-enter-hooks script, and if present, it invokes the script inline, using the Bourne shell '.' command.
Это второй абзац описания HOOKS, т.е. как раз юзерской части dhcp скриптов.
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
Положил в /etc и dhclient-exit-hooks, и dhclient-enter-hooks с одинаковым содержанием, только с разными именами - и никакого результата.
Код: Выделить всё
#!/bin/sh
if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then
case $reason in BOUND|RENEW|REBIND|REBOOT)
rfc_routes=($new_rfc3442_classless_static_routes)
for(( i=0; i < ${#rfc_routes[@]}; )); do
net_length=${rfc_routes[$i]}
((i++))
net_address=(0 0 0 0)
for(( j=0; j < $[$net_length / 8 + \
($net_length % 8 ? 1 : 0)]; j++, i++)); do
net_address[$j]=${rfc_routes[$i]}
done
gateway=(0 0 0 0)
for (( j=0; j < 4; j++, i++ )); do
gateway[$j]=${rfc_routes[$i]}
done
old_IFS="$IFS"
IFS='.'
if [ x"$net_length" == x"32" ]; then
/sbin/route add -host "${net_address[*]}" gw "${gateway[*]}"
else
/sbin/route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
fi
IFS="$old_IFS"
done
esac
fiКонсоль на мыло. Надо развивать графику.
-
vuln
- Сообщения: 9
- ОС: mandriva 2010
Re: Получение маршрутов через dhcp в Мандриве
тоже хочу получение маршрутов через dhcp , но не получается(
romkaromka во эти два файла просто в etc/ кинуть?
какой нибудь пакет устанавливать надо?
romkaromka во эти два файла просто в etc/ кинуть?
какой нибудь пакет устанавливать надо?
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
По идее только кинуть, пакеты уже все по умолчанию стоят, а именно dhclient, но SinClaus ничего толком не объясняет, только ходит вокруг да около. Я и провайдера мучаю этим вопросом - но и он тоже ходит вокруг да около.
Консоль на мыло. Надо развивать графику.
-
SinClaus
- Сообщения: 1952
- Статус: Мучитель Мандривы
- ОС: Arch,BSD
Re: Получение маршрутов через dhcp в Мандриве
Что значит "только ходит вокруг да около"? Пока не научишься читать маны и понимать ответы на свои вопросы, взрослым не станешь. Если ждёшь, что кто-то будет за тебя делать всё - зря.
Ты же делаешь вид что программируешь что-то, следовательно должен знать как обрабатывать варианты.
Я в отличие от многих участников форума к учебному процессу отношения не имею, более того, большинство своих знаний в области вычислительной техники приобрёл самостоятельно. Из чего сделал естественный вывод, что это вполне возможный процесс.
Ты же делаешь вид что программируешь что-то, следовательно должен знать как обрабатывать варианты.
Я в отличие от многих участников форума к учебному процессу отношения не имею, более того, большинство своих знаний в области вычислительной техники приобрёл самостоятельно. Из чего сделал естественный вывод, что это вполне возможный процесс.
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
так ведь все же сделано чего надо было сделать - а результата-то нет. все маны перештудированы вдоль и поперек.
куда еще копать - вообще без понятия.
да, я знаю паскаль, но совсем не знаю bash. могли бы и помочь немного, поправить чего не так написал.
куда еще копать - вообще без понятия.
да, я знаю паскаль, но совсем не знаю bash. могли бы и помочь немного, поправить чего не так написал.
Консоль на мыло. Надо развивать графику.
-
SinClaus
- Сообщения: 1952
- Статус: Мучитель Мандривы
- ОС: Arch,BSD
Re: Получение маршрутов через dhcp в Мандриве
Я тут давал ссылку на книжку решений для bash'а и программирования в шелле. Лень читать?
Ты пойми, мы взрослые люди и у каждого куча собственных дел.
Ты пойми, мы взрослые люди и у каждого куча собственных дел.
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
Если бы это было нужно только мне, а то ведь получение маршрутов через dhcp - всего лишь одна из функций нашей с akdengi программы vpnpptp. Это нужно пользователям. Да и просто без программы vpnpptp нужно многим. Это было бы необычайно удобно для пользователей. Автоматическое получение маршрутов - ведь это будущее интернет-технологии. Я же тоже не могу за все ухватиться и все сам написать, на изучение программирования в шелле у меня уйдут годы, мне этот язык совсем не понятен и далек, а в английской документации разбираться - вообще жесть. Программа vpnpptp модульная и по возможности если кто-то мог бы написать какую-то функцию как эту (получение маршрутов через dhcp), то с миру по нитке - и голому рубаха.
В проекте vpnpptp я принимал участие как тестировщик, но в какой-то момент оказалось, что пользователи мандривы остались без такого востребованного пакета. Я не мог этого допустить, совесть бы замучила. Я подключил провайдера, который лично мне вообще не нужен, с одной лишь целью - создать продукт для людей, потому что понимал, что кроме меня просто некому и я знал алгоритм, потому что прошел все стадии написания этой программы. И проект возродился.
Спасибо omerta13 - он взялся за один из скриптов, спасибо akdengi, который всегда отвечает на все мои вопросы, на какую бы тематику они не были заданы, собирает пакеты, помогая чем может. Спасибо тестировщикам, выявляющим недостатки. Низкий поклон таким людям.
Я прошу Вас, SinClaus, от имени тех пользователей, кому требуется получение маршрутов через dhcp, написать необходимые скрипты и файл настроек. Я знаю, Вы можете и кроме Вас просто некому, как некому когда-то было возродить умерший vpnpptp. Умрет ли получение маршрутов через dhcp? Вам, SinClaus, решить.
В проекте vpnpptp я принимал участие как тестировщик, но в какой-то момент оказалось, что пользователи мандривы остались без такого востребованного пакета. Я не мог этого допустить, совесть бы замучила. Я подключил провайдера, который лично мне вообще не нужен, с одной лишь целью - создать продукт для людей, потому что понимал, что кроме меня просто некому и я знал алгоритм, потому что прошел все стадии написания этой программы. И проект возродился.
Спасибо omerta13 - он взялся за один из скриптов, спасибо akdengi, который всегда отвечает на все мои вопросы, на какую бы тематику они не были заданы, собирает пакеты, помогая чем может. Спасибо тестировщикам, выявляющим недостатки. Низкий поклон таким людям.
Я прошу Вас, SinClaus, от имени тех пользователей, кому требуется получение маршрутов через dhcp, написать необходимые скрипты и файл настроек. Я знаю, Вы можете и кроме Вас просто некому, как некому когда-то было возродить умерший vpnpptp. Умрет ли получение маршрутов через dhcp? Вам, SinClaus, решить.
Консоль на мыло. Надо развивать графику.
-
SinClaus
- Сообщения: 1952
- Статус: Мучитель Мандривы
- ОС: Arch,BSD
Re: Получение маршрутов через dhcp в Мандриве
Я растроган до слёз 
У меня нет VPN, тестится не на чем, заводить специально для отладки подключения возможности не имею.
Это не будущее - это настоящее. При установлении подключения клиент получает адрес гейта и адреса NS серверов, всего-то нужно засунуть их в нужное место.
Тогда нечего делать в Линуксе вообще.
Насчёт шелла - я не шелл-программер, каждый раз, когда нужен скрипт, лезу в тот самый сборник. В данный момент, до Нового года по крайней мере, свободного времени на такие занятия у меня не предвидятся.
У меня нет VPN, тестится не на чем, заводить специально для отладки подключения возможности не имею.
Автоматическое получение маршрутов - ведь это будущее интернет-технологии.
Это не будущее - это настоящее. При установлении подключения клиент получает адрес гейта и адреса NS серверов, всего-то нужно засунуть их в нужное место.
в английской документации разбираться - вообще жесть
Тогда нечего делать в Линуксе вообще.
Насчёт шелла - я не шелл-программер, каждый раз, когда нужен скрипт, лезу в тот самый сборник. В данный момент, до Нового года по крайней мере, свободного времени на такие занятия у меня не предвидятся.
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
Как сможете - тогда и сделаете
Желающих тестировать предостаточно.
В самом же первом посте я все делал как то предложено в скрипте для Корбины от mr. Peabody. Провайдер утверждает, что со своей стороны он мне маршруты передает, но я их не вижу. Чудеса.
Консоль на мыло. Надо развивать графику.
-
pingus
- Сообщения: 104
- ОС: Mandriva 2010.1
Re: Получение маршрутов через dhcp в Мандриве
Решил немного обновить трэд
А что можно предпринять для получения "статических безклассовых" маршрутов? Точнее даже так - в конфиг клиента /etc/dhclient.conf добавлена строчка "option rfc3442-classless-static-routes code 249 = array of unsigned integer 8;" В файле аренды /var/lib/dhcp/dhclient.leases появляется ответ сервера на данный запрос и при первом запуске клиента оно отлично срабатывает( маршруты прописываются). Зато при последующих запусках клиента, маршруты не прописываются. Помогает только ручное удаление файла аренды и повторный запуск клиента
Как я понимаю это проблема именно клиента, но может кто знает как побороть?
А что можно предпринять для получения "статических безклассовых" маршрутов? Точнее даже так - в конфиг клиента /etc/dhclient.conf добавлена строчка "option rfc3442-classless-static-routes code 249 = array of unsigned integer 8;" В файле аренды /var/lib/dhcp/dhclient.leases появляется ответ сервера на данный запрос и при первом запуске клиента оно отлично срабатывает( маршруты прописываются). Зато при последующих запусках клиента, маршруты не прописываются. Помогает только ручное удаление файла аренды и повторный запуск клиента
Как я понимаю это проблема именно клиента, но может кто знает как побороть?
-
romkaromka
- Сообщения: 1064
- ОС: Mageia
Re: Получение маршрутов через dhcp в Мандриве
pingus огромное внимание уделил поднятой в этой и в других темах проблеме, в итоге имеем:
1) необходимо поменять опцию "option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;" с 121 на 249, так как несмотря на спецификацию, на практике работает не по спецификации,
2) дополнить условия получения маршрутов не только BOUND, но и добавить REBOOT,
3) особое внимание обратить на то, что dhclient необходимо вызывать самим при изменении состояния интерфейса.
Итак, файл /etc/dhclient.conf принял вид:
Файл /etc/dhclient-exit-hooks принял вид:
И перезапустить командой (под root):
Или командой (под root):
где N-сетевой интерфейс, на котором требуется получить маршруты по DHCP
За основу была взята тема http://homenet.corbina.net/index.php?showtopic=170180
Начало положено. Теперь подлежит решить вопросы оптимизации и автоматики без необходимости перезапуска dhclient.
1) необходимо поменять опцию "option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;" с 121 на 249, так как несмотря на спецификацию, на практике работает не по спецификации,
2) дополнить условия получения маршрутов не только BOUND, но и добавить REBOOT,
3) особое внимание обратить на то, что dhclient необходимо вызывать самим при изменении состояния интерфейса.
Итак, файл /etc/dhclient.conf принял вид:
Код: Выделить всё
# Configuration file for /sbin/dhclient, which is included in Debian's
# dhcp3-client package.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
# man page for more information about the syntax of this file
# and a more comprehensive list of the parameters understood by
# dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
# not leave anything out (like the domain name, for example), then
# few changes must be made to this file, if any.
#
#send host-name "<hostname>";
#send dhcp-client-identifier fe80::208:a1ff:fe7d:40e9/64;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.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,
# netbios-name-servers, netbios-scope;
#require subnet-mask, domain-name-servers;
timeout 30;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/etc/dhclient-exit-hooks";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;
#alias {
# interface "eth0";
# fixed-address 192.5.5.213;
# option subnet-mask 255.255.255.255;
#}
#lease {
# interface "eth0";
# fixed-address 192.33.137.200;
# medium "link0 link1";
# option host-name "andare.swiftmedia.com";
# option subnet-mask 255.255.255.0;
# option broadcast-address 192.33.137.255;
# option routers 192.33.137.250;
# option domain-name-servers 127.0.0.1;
# renew 2 2000/1/12 00:00:01;
# rebind 2 2000/1/12 00:00:01;
# expire 2 2000/1/12 00:00:01;
#}
option rfc3442-classless-static-routes code 249 = array of unsigned integer 8;
#option ms-classless-static-routes code 249 = array of unsigned integer 8;
request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes;
#ms-classless-static-routes;
#supersede domain-name-servers 91.210.204.1Файл /etc/dhclient-exit-hooks принял вид:
Код: Выделить всё
#!/bin/bash
RUN="yes"
if [ "$RUN" = "yes" ]; then
echo "EXIT HOOK REACHED"
if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then
if [ x"$reason" == x"BOUND" -o x"$reason" == x"REBOOT" ]; then
# if [ x"$reason" == x"BOUND" ]; then
rfc_routes=($new_rfc3442_classless_static_routes)
for(( i=0; i < ${#rfc_routes[@]}; )); do
net_length=${rfc_routes[$i]}
((i++))
net_address=(0 0 0 0)
for(( j=0; j < $[$net_length / 8 + \
($net_length % 8 ? 1 : 0)]; j++, i++)); do
net_address[$j]=${rfc_routes[$i]}
done
gateway=(0 0 0 0)
for (( j=0; j < 4; j++, i++ )); do
gateway[$j]=${rfc_routes[$i]}
done
old_IFS="$IFS"
IFS='.'
if [ x"$net_length" == x"32" ]; then
/sbin/route add -host "${net_address[*]}" gw "${gateway[*]}"
else
/sbin/route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
fi
IFS="$old_IFS"
done
fi
fi
fiИ перезапустить командой (под root):
Код: Выделить всё
dhclientИли командой (под root):
Код: Выделить всё
dhclient ethNгде N-сетевой интерфейс, на котором требуется получить маршруты по DHCP
За основу была взята тема http://homenet.corbina.net/index.php?showtopic=170180
Начало положено. Теперь подлежит решить вопросы оптимизации и автоматики без необходимости перезапуска dhclient.
Консоль на мыло. Надо развивать графику.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Получение маршрутов через dhcp в Мандриве
не на практике, а в продуктах ms.
но дело не в конкретной компании. само соответствие стандартам — финансово невыгодно. такова селява.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог