How can I configure my DHCP server to distribute IP routes?
I have a DHCP server (Linux, IPCop, dnsmasq) running on my default gateway server 192.168.0.1. I have a VPN endpoint on another server in the network (192.168.0.4). Is it possible to configure the DHCP server so it sends not only the default gateway but also routing information for the VPN (192.168.1.*) to DHCP clients when they request an IP address? The DHCP clients run Windows and Linux. I tried to find something in the official documentation (http://www.ipcop.org/2.0.0/en/admin/html/custom-dnsmasq-local.html) but failed. The existence of RFC3442 indicates that it might be possible somehow.
2 Answers 2
This can be done by adding the following lines to dhcpd.conf :
option rfc3442-classless-static-routes code 121 = array of integer 8; option rfc3442-classless-static-routes 24, 192, 168, 1, 192, 168, 0, 4; option ms-classless-static-routes code 249 = array of integer 8; option ms-classless-static-routes 24, 192, 168, 1, 192, 168, 0, 4;
This distributes a route entry for network 192.168.1.0/24 using the gateway 192.168.0.4.
The meaning of the bytes is (in brackets the value from the example above):
WW, D1, D2, D3, R1, R2, R3, R4 WW = destination network mask width (24) D1..D3 = destination network address (192.168.1.*) R1..R4 = router address (192.168.0.4)
Note: The number of D1..DN bytes varies depending on the network mask. See RFC3442 for details.
Статические маршруты через DHCP
Настраиваем передачу статических маршрутов от isc-dhcp-server клиентам UNIX и Windows.
Добавляем в его конфиг опции:
Первая для Windows(поддерживается Windows XP/2003 и выше), вторая — в соответствии со стандартом. По своей сути опции одинаковы.
# MS routes: adds extras to supplement routers option option ms-classless-static-routes code 249 = array of unsigned integer 8; # RFC3442 routes: overrides routers option option rfc3442-classless-static-routes code 121 = array of unsigned integer 8; subnet 192.168.0.0 netmask 255.255.255.0 < option ms-classless-static-routes 23, 192,168,100 192,168,0,30; option rfc3442-classless-static-routes 23, 192,168,100, 192,168,0,30; option routers 192.168.0.200;
Приведённый пример соответствует маршруту на 192.168.100.0/23 через 192.168.0.30
В одной опции могут задаваться несколько маршрутов. Например, для такой таблицы маршрутов:
195.98.64.65 192.168.0.30 255.255.255.255 UGH 0 0 0 eth0 195.98.64.1 192.168.0.30 255.255.255.255 UGH 0 0 0 eth0 195.98.64.66 192.168.0.30 255.255.255.224 UG 0 0 0 eth0 213.184.232.32 192.168.0.30 255.255.255.224 UG 0 0 0 eth0 192.168.100.0 192.168.0.30 255.255.254.0 UG 0 0 0 eth0
опции будут выглядеть как
option ms-classless-static-routes 23, 192,168,100 192,168,0,30, 32, 195,98,64,65, 192,168,0,30, 32, 195,98,64,65, 192,168,0,30, 27, 27, 213,184,232,32, 192,168,0,30;
option rfc3442-classless-static-routes 23, 192,168,100 192,168,0,30, 32, 195,98,64,65, 192,168,0,30, 32, 195,98,64,65, 192,168,0,30, 27, 27, 213,184,232,32, 192,168,0,30;
/etc/network/interfaces, DHCP и статические маршруты
Есть маршрутизатор, который получает IP провайдерской сети по DHCP. Вместе с IP адресом прилетает основной маршрут через хост в той же сети в которой раздаются адреса. То есть как обычно, получаю IP, например, 192.168.14.28, default gateway 192.168.14.1. Через умолчальный маршрут можно достучаться до провайдерских DNS'ов и сервера VPN, которые находятся в другой подсети. После поднятия VPN умолчальным маршрутом становится адрес интерфейса ppp. Если не прописать маршруты до DNS и сервера VPN ppp отвалится. Это обычная ситуация у многих провайдеров.
Сейчас я прописал создание нужных маршрутов в сценарий ppp if-up. Всё работает, но до поры до времени. Раз в иногда таблица маршрутизации опустошается, умолчальным маршрутом становится 192.168.14.1. С чем это может быть связано? Не может ли так быть, что мой проводной интерфейс обновляет DHCP lease и вместе с тем вновь получает default gw 192.168.14.1? Можно ли в /etc/network/interfaces прописать «бери по DHCP IP адрес, но не бери маршруты»? Читал man interfaces. Там в секции The dhcp method такое вроде бы не описано.
Если я напишу в /etc/network/interfaces
auto eth0 iface eth0 inet dhcp post-up route add -host 192.168.192.8 gw 192.168.14.1 || true post-up route add -host 192.168.192.3 gw 192.168.14.1 || true post-up route add -net 192.168.38.0 netmask 255.255.255.0 gw 192.168.14.1 || true
Как в Debian'е и Ubunt'е правильно прописать статические маршруты чтобы они не отваливались ни при подключении/отключении кабеля к eth0, ни при обрыве связи с ppp, ни при каких-то ещё условиях?
Dhcp статические маршруты linux
Настройка DHCP сервера для передачи статических маршрутов клиентам
Имеется компьютер с Ubuntu со статическим ip адресом, заданным руками. Нужно сделать так, чтобы он автоматически получал этот же адрес по DHCP. Адрес (в данном случае) даже лучше, чтобы он был статическим, но вот нужно, чтобы компьютер получал статические маршруты и добавлял их в свою таблицу маршрутизации. (Прописать маршруты можно, создав скрипт, или же внеся марштут в конфигурационный файл). Устанавливаю DHCP сервер # yum install -y dhcp # cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bkp # vi /etc/dhcp/dhcpd.conf # Динамическое обновление DNS, обязательная строчка без нее dhcpd не запустится # none - не использовать динамическое обновление # ad-hoc - устарело, и не должно использоваться # interim - позволяет обновлять DNS записи ddns-update-style none; ########################################################### # Включение возможности передачи маршрутов по DHCP # Windows Vista и другие не Windows DHCP клиенты: option classless-static-route code 121 = array of unsigned integer 8; # Windows 2000/XP DHCP клиенты: option classless-static-route-ms code 249 = array of unsigned integer 8; ########################################################### # Описание подсети subnet 192.168.1.0 netmask 255.255.255.0 < # Не обязательные параметры default-lease-time 600; # Время аренды в секундах max-lease-time 7200; # Максимальное время аренды в секундах # Параметры передаваемые dhcp-клиентам option subnet-mask 255.255.255.0; # Маска подсети option broadcast-address 192.168.1.255; # Адрес широковещательной # рассылки option routers 192.168.1.1; # Адрес шлюза option domain-name-servers 192.168.1.1; # Список DNS-серверов # через запятую option domain-name "fmarley.local"; # Суффикс домена #range 192.168.1.10 192.168.1.100; # Область выдаваемых адресов ############################################ # Маршруты: # формат: # маска,IP,адрес,сети, IP,адрес,шлюза,туда option classless-static-route 24,192,168,2, 192,168,1,100; option classless-static-route-ms 24,192,168,2, 192,168,0,100; # Если нужно указать несколько маршрутов, это можно сделать через запятую. # option classless-static-route 24,192,168,1, 192,168,0,1, 24,192,168,2, 192,168,0,2, 24,192,168,3, 192,168,0,3; # option classless-static-route-ms 24,192,168,1, 192,168,0,1, 24,192,168,2, 192,168,0,2, 24,192,168,3, 192,168,0,3; ############################################ ignore unknown-clients; # Делаю резервирование ip адреса для моего компьютера по mac-адресу: host workstation < # myhostname - имя хоста hardware ethernet bc:ae:c5:30:13:a5; # MAC-адрес хоста fixed-address 192.168.1.5; # Резервируемый IP-адресс >> Если в системе несколько интерфейсов, то указать с каким из них должен работать dhcpd, можно отредактировав файл /etc/sysconfig/dhcpd DHCPDARGS=eth0 # имя интерфейса # chkconfig dhcpd on # service dhcpd start ===================== На клиенте: $ sudo su - #vi /etc/network/interfaces auto lo iface lo inet loopback #auto eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.1.5 netmask 255.255.255.0 gateway 192.168.1.1 После настройки DHCP сервера, достаточно разкомментировать строки относящиеся к интерфейсу eth0 для dhcp и закомментировать строки относящиеся к статическому адресу . Значением mac-адреса, можно узнать, выполнив команду: # ifconfig eth0 | grep -o -E '([[:xdigit:]]:)[[:xdigit:]]' bc:ae:c5:30:13:a5 Проверка: Перестартовываю сетевые интерфейсы: # /etc/init.d/networking restart # hostname -I 192.168.1.5 # hostname --fqdn workstation.marley.local # route -n | grep 192.168.2.0 192.168.2.0 192.168.1.100 255.255.255.0 UG 0 0 0 eth0 Почитать: http://www.alsigned.ru/?p=462 http://ospf-ripe.livejournal.com/5488.html?thread=44656#t44656 http://www.linuxmanpages.com/man5/dhcpd.conf.5.php
Работа над этой версией сайта остановлена. Обновление и добавление материалов планируется делать уже на sysadm.ru.