dhcp не назначает шлюз

dhcp не назначает шлюз

Итак, я запускаю сервер разработки для виртуальных машин KVM. У меня есть DHCP-сервер, работающий локально на хост-узле со следующей конфигурацией:

/etc/dhcp/dhcpd.conf

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

subnet xxx.xxx.x.0 netmask 255.255.255.0 {
 range xxx.xxx.x.2 xxx.xxx.x.127;
 option routers xxx.xxx.x.1;
 option broadcast-address xxx.xxx.x.255;
 option domain-name-servers 8.8.8.8;
 option netbios-name-servers 8.8.8.8;
 default-lease-time 86400;
 max-lease-time 86400;
 option rfc3442-classless-static-routes 24, xxx, xxx, x, 0, 0, 0, 0, 0, 0, xxx, xxx, x, 1;
 option ms-classless-static-routes 24, xxx, xxx, x, 0, 0, 0, 0, 0, 0, xxx, xxx, x, 1;
         host 102 {hardware ethernet 4A:19:BD:DF:B0:07;fixed-address xxx.xxx.x.5;}


 }

/etc/default/isc-dhcp-server

# Defaults for isc-dhcp-server initscript
# sourced by /etc/init.d/isc-dhcp-server
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPD_CONF=/etc/dhcp/dhcpd.conf

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPD_PID=/var/run/dhcpd.pid

# Additional options to start dhcpd with.
#       Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="vmbr0"

Для справки, это сервер Debian 7 Proxmox.

Проблема в том, что серверу назначается IP через DHCP без проблем. Он получает xxx.xxx.x.5, однако шлюз установлен как 0.0.0.0 при просмотре через route -n, и поэтому сеть недоступна.

Содержимое файла конфигурации сети виртуальной машины:

DEVICE=eth01
BOOTPROTO=dhcp 
ONBOOT=yes

недействительным аргумент

Кроме того, при получении информации от DHCP возникает ошибка «недопустимый аргумент», и эти проблемы могут быть связаны.

Журнал ошибок на клиенте:

введите описание изображения здесь

решение1

Трудно устранять неполадки удаленно, имея ограниченную информацию. Но я хотел бы попробовать.

Сначала просто предположение. Обычно имя УСТРОЙСТВА — eth0или eth1, а не eth01. Это может объяснить «ошибку недопустимого аргумента». Убедитесь, что вы имеете дело с правильным NIC по ifconfig -aили ip linkв VM.

Еще один подозреваемый — статический маршрут. Он должен иметь 13 элементов в массиве, вместо ваших 14. Формат <netmask>, <network-byte1>, <network-byte2>, <network-byte3>, <router-byte1>, <router-byte2>, <router-byte3>.... Так что это должно выглядеть так 24,192,168,1, 192,168,1,1, 0, 192,168,1,1. Взглянитездесь. Я полагаю, что неправильный статический маршрут перезаписывает шлюз по умолчанию.

Если проблема не в этом, вам нужен процесс отладки. Из вашей конфигурации DHCP я предполагаю, vmbr0что это Linux Bridge и виртуальные машины создаются оттуда. Вам нужно подтвердить, что сеть виртуальных машин создана правильно, проверив virt net-listи virt edit <vm>на хосте/гипервизоре. Вы также можете использовать virt-manager. Убедитесь, что у виртуальной машины есть только одна сетевая карта, которая соединена мостом с vmbr0.

Если проблема не устранена, перейдите в виртуальную машину и выполните отладку клиента DHCP. Сначала killall dhclientзапустите dhclient eth0и отслеживайте трафик с помощью dhcpdump -i eth0или tcpdump udp and port 67 or 68. Найдите параметры шлюза. Убедитесь, что на пути нет другого сервера DHCP. (Это может быть NAT по умолчанию из libvirt; или может быть другой сервер DHCP извне, поскольку у вас есть мост). Вы также можете запустить dhcpdump/tcpdumpна хосте, где у вас есть сервер DHCP.

Надеюсь, это поможет.

Связанный контент