Alexey Boyko пишет:
> В сообщении от 26 September 2007 16:53 Maxim Tyurin написал(a):
> 
>> Alexey Boyko пишет:
>>> Кажись это.
>>> http://www.ietf.org/rfc/rfc3442.txt
>> а в Debian поддержка этого
>> дела реализуется простеньким скриптом и добавлением одного параметра в
>> конфиг dhcp
> 
> Э-э, Намекни хотя бы как.

Настройки клиента:

В файл /etc/dhcp3/dhclient.conf пишем следующие опции:

 option rfc3442-classless-static-routes code 121 = 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;

то есть определяем массив для получаемых маршрутов и дописываем в
запросы dhcp-клиента запрос на получение rfc3442 маршрутов.

Теперь создадим скрипт, который будет создавать сами маршруты в таблице
/etc/dhcp3/dhclient-exit-hooks.d/rfc3442-classless-routes :

 RUN="yes"

 if [ "$RUN" = "yes" ]; then

          if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then

                 if [ x"$reason" == x"BOUND" ] || [ x"$reason" ==
x"REBOOT" ]; then
                         rfc_routes=($new_rfc3442_classless_static_routes)

                         for(( i=0; i < [EMAIL PROTECTED]; )); 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


-- 

With Best Regards, Maxim Tyurin
JID:    [EMAIL PROTECTED]
                        

Attachment: signature.asc
Description: OpenPGP digital signature

Ответить