Как заставить DHCP клиента получать статические маршруты.

21 апреля 2010г. - Изменено для Fedora 12. Проверено у провайдера Волжский StarNet

Необходимо прописать в файле /etc/dhclient-eth0.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 клиента получать информацию о статических маршрутах.

Далее, создать файл /etc/dhcp/dhclient-exit-hooks и сделать его исполняемым:

if [ x"$new_rfc3442_classless_static_routes" != x"" ]; 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[*]}"
      logger "dhclient-exit-hooks: GateWay ${gateway[*]} for host ${net_address[*]}"
    else
      /sbin/route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
      logger "dhclient-exit-hooks: GateWay ${gateway[*]} for network ${net_address[*]}"
    fi
    IFS="$old_IFS"
    done
fi

Этот скрипт добавит статические маршруты.


Наверх