У меня dedi с диапазоном 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 (VM) на этом HWID с ОС Windows и включенным DHCP. Работает хорошо. VM Windows получила IP 123.123.123.2 со шлюзом в 111.111.111.254.
Но когда я меняю ОС VM на Debian 6, это не работает. Я вхожу в VM и обнаруживаю, что шлюз не назначен. Когда я набираюмаршрут добавить по умолчанию gw 111.111.111.254ответ:
SIOADDCART: no such process
Это потому, что шлюз находится в другой подсети, чем назначенный IP-адрес. Поэтому мне пришлось сделать это на виртуальной машине:
маршрут добавить 111.111.111.254/32 dev eth0
маршрут добавить по умолчанию gw 111.111.111.254
и тогда это будет работать. Но так как я хочу автоматизацию через хост-узел (не делать это вручную через VM), мне пришлось сделать это через /etc/dhcpd.conf
Кто-нибудь знает как это сделать?маршрут добавить 111.111.111.254/32 dev eth0через /etc/dhcpd.conf?
решение1
ОтветБесклассовые статические маршруты (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 означает on-link. RFC утверждает, что клиенты не обязаны реализовывать бесклассовые статические маршруты, но Windows делает это через свою опцию ms, dhclient Linux (протестировано Debian7, rhel6.4) делает, и все мои клиенты IPMI и PXE тоже. Вам следует проверить, работает ли это с вашими клиентами, но я почти уверен, что это будет работать.dhclient можно заставить интерпретировать опцию 121 с помощью хука выхода, если он не поддерживает его изначально.
В худшем случае на хост-узле вы можете добавить IP-адрес, который находится в диапазоне локальной сети (в вашем примере 123.123.123.254), и указать клиентам использовать его в качестве шлюза по умолчанию.