Получение маршрутов через dhcp в Мандриве (не работает dhclient)

PCLinuxOS

Модератор: Bizdelnick

Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

Положил в /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 в Мандриве

Сообщение SinClaus »

man dhclient-script читал? У тебя ВРОДЕ обрабатывается условие $reason == BOUND, а условий для вызова может быть (и бывает):
MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, STOP, RELEASE, NBI and TIMEOUT
т.е. обрабатывается только ситуация первого подключения подключения.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

SinClaus писал(а):
01.12.2009 15:55
man dhclient-script читал? У тебя ВРОДЕ обрабатывается условие $reason == BOUND, а условий для вызова может быть (и бывает):
MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, STOP, RELEASE, NBI and TIMEOUT
т.е. обрабатывается только ситуация первого подключения подключения.

какое же поставить условие? уже все перебрал - результат одинаковый-никакой.
или какую команду выполнить, чтобы вернуть маршруты без перезагрузки?
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

во тему поднял. 83 человека посмотрело и написал только один.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

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 в Мандриве

Сообщение SinClaus »

Во первых, скрипт dhclient-exit-hooks должен исполняться bash'ем? Тогда почему нет "зачина" в начале файла - #!/bin/sh ?
Или точно не нужно?
Во вторых - обрабатывать нужно не какое-то одно событие, а ВСЕ, т.е. прописывать ветку действий на каждое из них.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

SinClaus писал(а):
02.12.2009 06:51
Во первых, скрипт dhclient-exit-hooks должен исполняться bash'ем? Тогда почему нет "зачина" в начале файла - #!/bin/sh ?
Или точно не нужно?
Во вторых - обрабатывать нужно не какое-то одно событие, а ВСЕ, т.е. прописывать ветку действий на каждое из них.

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 в Мандриве

Сообщение ATIpro »

romkaromka писал(а):
02.12.2009 12:28
"зачин" в начале файла - #!/bin/sh в инете смотрел-кто-то пишет, кто-то нет

Вообще его хорошо бы сделать. Он запускает этот скрип в отдельном процессе sh и если в момент выполнения допустим скрип зависнет, можно будет этот новый процесс закрыть без каких-либо проблем для текущей сессии. Работать будет и без него, но просто так принято.
Спасибо сказали:
Аватара пользователя
SinClaus
Сообщения: 1952
Статус: Мучитель Мандривы
ОС: Arch,BSD

Re: Получение маршрутов через dhcp в Мандриве

Сообщение SinClaus »

Кстати о птичках - а почему используется 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 скриптов.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

Положил в /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 в Мандриве

Сообщение vuln »

тоже хочу получение маршрутов через dhcp , но не получается(
romkaromka во эти два файла просто в etc/ кинуть?
какой нибудь пакет устанавливать надо?
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

vuln писал(а):
04.12.2009 23:18
тоже хочу получение маршрутов через dhcp , но не получается(
romkaromka во эти два файла просто в etc/ кинуть?
какой нибудь пакет устанавливать надо?

По идее только кинуть, пакеты уже все по умолчанию стоят, а именно dhclient, но SinClaus ничего толком не объясняет, только ходит вокруг да около. Я и провайдера мучаю этим вопросом - но и он тоже ходит вокруг да около.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Аватара пользователя
SinClaus
Сообщения: 1952
Статус: Мучитель Мандривы
ОС: Arch,BSD

Re: Получение маршрутов через dhcp в Мандриве

Сообщение SinClaus »

Что значит "только ходит вокруг да около"? Пока не научишься читать маны и понимать ответы на свои вопросы, взрослым не станешь. Если ждёшь, что кто-то будет за тебя делать всё - зря.
Ты же делаешь вид что программируешь что-то, следовательно должен знать как обрабатывать варианты.
Я в отличие от многих участников форума к учебному процессу отношения не имею, более того, большинство своих знаний в области вычислительной техники приобрёл самостоятельно. Из чего сделал естественный вывод, что это вполне возможный процесс.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

так ведь все же сделано чего надо было сделать - а результата-то нет. все маны перештудированы вдоль и поперек.
куда еще копать - вообще без понятия.
да, я знаю паскаль, но совсем не знаю bash. могли бы и помочь немного, поправить чего не так написал.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Аватара пользователя
SinClaus
Сообщения: 1952
Статус: Мучитель Мандривы
ОС: Arch,BSD

Re: Получение маршрутов через dhcp в Мандриве

Сообщение SinClaus »

Я тут давал ссылку на книжку решений для bash'а и программирования в шелле. Лень читать?
Ты пойми, мы взрослые люди и у каждого куча собственных дел.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

Если бы это было нужно только мне, а то ведь получение маршрутов через dhcp - всего лишь одна из функций нашей с akdengi программы vpnpptp. Это нужно пользователям. Да и просто без программы vpnpptp нужно многим. Это было бы необычайно удобно для пользователей. Автоматическое получение маршрутов - ведь это будущее интернет-технологии. Я же тоже не могу за все ухватиться и все сам написать, на изучение программирования в шелле у меня уйдут годы, мне этот язык совсем не понятен и далек, а в английской документации разбираться - вообще жесть. Программа vpnpptp модульная и по возможности если кто-то мог бы написать какую-то функцию как эту (получение маршрутов через dhcp), то с миру по нитке - и голому рубаха.
В проекте vpnpptp я принимал участие как тестировщик, но в какой-то момент оказалось, что пользователи мандривы остались без такого востребованного пакета. Я не мог этого допустить, совесть бы замучила. Я подключил провайдера, который лично мне вообще не нужен, с одной лишь целью - создать продукт для людей, потому что понимал, что кроме меня просто некому и я знал алгоритм, потому что прошел все стадии написания этой программы. И проект возродился.
Спасибо omerta13 - он взялся за один из скриптов, спасибо akdengi, который всегда отвечает на все мои вопросы, на какую бы тематику они не были заданы, собирает пакеты, помогая чем может. Спасибо тестировщикам, выявляющим недостатки. Низкий поклон таким людям.
Я прошу Вас, SinClaus, от имени тех пользователей, кому требуется получение маршрутов через dhcp, написать необходимые скрипты и файл настроек. Я знаю, Вы можете и кроме Вас просто некому, как некому когда-то было возродить умерший vpnpptp. Умрет ли получение маршрутов через dhcp? Вам, SinClaus, решить.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Аватара пользователя
SinClaus
Сообщения: 1952
Статус: Мучитель Мандривы
ОС: Arch,BSD

Re: Получение маршрутов через dhcp в Мандриве

Сообщение SinClaus »

Я растроган до слёз :(
У меня нет VPN, тестится не на чем, заводить специально для отладки подключения возможности не имею.
Автоматическое получение маршрутов - ведь это будущее интернет-технологии.

Это не будущее - это настоящее. При установлении подключения клиент получает адрес гейта и адреса NS серверов, всего-то нужно засунуть их в нужное место.
в английской документации разбираться - вообще жесть

Тогда нечего делать в Линуксе вообще.

Насчёт шелла - я не шелл-программер, каждый раз, когда нужен скрипт, лезу в тот самый сборник. В данный момент, до Нового года по крайней мере, свободного времени на такие занятия у меня не предвидятся.
Спасибо сказали:
Аватара пользователя
romkaromka
Сообщения: 1064
ОС: Mageia

Re: Получение маршрутов через dhcp в Мандриве

Сообщение romkaromka »

SinClaus писал(а):
07.12.2009 07:21
Насчёт шелла - я не шелл-программер, каждый раз, когда нужен скрипт, лезу в тот самый сборник. В данный момент, до Нового года по крайней мере, свободного времени на такие занятия у меня не предвидятся.

Как сможете - тогда и сделаете
Желающих тестировать предостаточно.
В самом же первом посте я все делал как то предложено в скрипте для Корбины от mr. Peabody. Провайдер утверждает, что со своей стороны он мне маршруты передает, но я их не вижу. Чудеса.
Консоль на мыло. Надо развивать графику.
Спасибо сказали:
Аватара пользователя
pingus
Сообщения: 104
ОС: Mandriva 2010.1

Re: Получение маршрутов через dhcp в Мандриве

Сообщение pingus »

Решил немного обновить трэд :)
А что можно предпринять для получения "статических безклассовых" маршрутов? Точнее даже так - в конфиг клиента /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 в Мандриве

Сообщение romkaromka »

pingus огромное внимание уделил поднятой в этой и в других темах проблеме, в итоге имеем:
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 в Мандриве

Сообщение sash-kan »

romkaromka писал(а):
12.04.2010 22:42
на практике работает не по спецификации
не на практике, а в продуктах ms.
но дело не в конкретной компании. само соответствие стандартам — финансово невыгодно. такова селява.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: