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
Этот скрипт добавит статические маршруты.