У меня деди с диапазоном IP-адресов 123.123.123.1/24, проблема в адресе шлюза: 111.111.111.254, и он находится в совершенно другой подсети. Я уже настроил мост и виртуализацию KVM.
/etc/dhcpd.conf на хост-узле.
subnet 0.0.0.0 netmask 0.0.0.0 {
authoritative;
default-lease-time 21600000;
max-lease-time 432000000;
}
ddns-update-style ad-hoc;
host kvm111.0 {
hardware ethernet 02:00:00:ce:fd:ab;
option routers 111.111.111.254;
option subnet-mask 255.255.255.0;
fixed-address 123.123.123.2;
option domain-name-servers 8.8.8.8,8.8.4.4;
}
Затем я настраиваю виртуальную машину (ВМ) KVM на этом HWID с включенной ОС Windows и DHCP. Работает хорошо. Виртуальная машина Windows получила IP 123.123.123.2 со шлюзом 111.111.111.254.
Но когда я меняю ОС виртуальной машины на Debian 6, это не работает. Я вхожу в виртуальную машину и обнаруживаю, что шлюз не назначен. Когда я печатаю маршрут добавить по умолчанию gw 111.111.111.254 ответ:
SIOADDCART: no such process
Это потому, что шлюз находится в другой подсети, чем назначенный IP-адрес. Поэтому мне пришлось сделать это на виртуальной машине:
добавить маршрут 111.111.111.254/32 dev eth0
маршрут добавить по умолчанию gw 111.111.111.254
и тогда все заработает. Но поскольку мне нужна автоматизация через хост-узел (а не вручную через виртуальную машину), мне пришлось сделать это через /etc/dhcpd.conf
Кто-нибудь знает как делать добавить маршрут 111.111.111.254/32 dev eth0 через /etc/dhcpd.conf?
Ответ Бесклассовые статические маршруты (RFC3442). На сервере isc dhcp вы должны указать эту опцию вручную.
Этот сайт кратко изложено, как это сделать так, чтобы это работало как для клиентов Windows, так и для Linux.
Вот сокращенная версия:
Добавьте следующее в dhcpd.conf вверху
option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;
В соответствующем блоке подсети добавьте следующие две строки параметров
option rfc3442-classless-static-routes 32, 111, 111, 111, 254, 0, 0, 0, 0, 111, 111, 111, 254;
option ms-classless-static-routes 32, 111, 111, 111, 254, 0, 0, 0, 0, 111, 111, 111, 254;
Это должно создать статический маршрут для 111.111.111.254 on-link с назначенным dhcp адресом и сохранить маршрутизатор по умолчанию 111.111.111.254. Специальное значение роутера 0.0.0.0 означает соединение. RFC заявляет, что клиенты не обязаны реализовывать бесклассовые статические маршруты, но Windows делает это через свою опцию ms, dhclient linux (проверено debian7, rhel6.4) делает, и все мои клиенты IPMI и PXE тоже. Вы должны протестировать, чтобы убедиться, что он работает с вашими клиентами, но я вполне уверен, что он будет работать. dhclient может интерпретировать опцию 121 с помощью ловушки выхода, если он еще не поддерживает его из коробки.
В худшем случае на хост-узле вы можете добавить IP-адрес, который находится в диапазоне LAN (в вашем примере, 123.123.123.254), и указать клиентам использовать его в качестве шлюза по умолчанию.