Я только что сделал новую установку Ubuntu 16.04 (Xenial). Я настроил /etc/network/interfaces
автоматический запуск интерфейса wlan с помощью DHCP:
auto lo
iface lo inet loopback
auto wlp2s0
iface wlp2s0 inet dhcp
wpa-ssid SSID
wpa-psk "password"
Это работает так: IP настроен нормально, но шлюз по умолчанию не установлен. После загрузки мне всегда приходится запускать route add default gw 192.168.1.1
вручную. Есть идеи, в чем может быть проблема? Могу поклясться, что эта настройка работала нормально на старых версиях...
решение1
У меня та же проблема на Ubuntu Server 16.04. После устранения неполадок выяснилось, что проблема заключается в том, что мой DHCP-сервер также предоставляет бесклассовый статический маршрут (DHCP-параметр 121 rfc3442-classless-static-routes
в ISC DHCP) с DHCP-сервера Microsoft (Windows Server 2008 R2).
Если рассмотреть /sbin/dhclient-script
, то если DHCP-клиенту предоставлен хотя бы один бесклассовый статический маршрут, он игнорирует настройки маршрутизатора, поэтому маршрут по умолчанию не устанавливается.
# if we have $new_rfc3442_classless_static_routes then we have to
# ignore $new_routers entirely
Мое «исправление» — добавить еще один бесклассовый статический маршрут к DHCP-серверу Windows. Итак:
- Место назначения: 0.0.0.0
- Маска сети: 0.0.0.0
- Маршрутизатор: 192.168.1.1
(после добавления маска сети автоматически изменится на 255.255.255.255)
У меня короткий срок действия аренды DHCP (15 минут), и с момента добавления нового маршрута не было никаких жалоб от других пользователей Linux или Windows в сети, поэтому я полагаю, что это изменение не должно вызвать серьезных проблем.
Поскольку я слишком новичок, чтобы комментировать:
- @t11z Мой файл аренды есть
/var/lib/dhcp/dhclient.ens32.leases
,option routers
присутствует и действителен. - @Jos Хотя это и обходной путь, ваше предложение сводит на нет цель использования DHCP для предоставления сетевых настроек. Если IP-адрес шлюза по умолчанию изменится в будущем, затронутые машины необходимо будет обновить вручную.
решение2
Я настраиваю Raspberry Pi как маршрутизатор и столкнулся с той же проблемой. Я исправил ее, отредактировав файл /etc/dhcpcd.conf.
Откройте файл и найдите строку:
# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
Я просто закомментировал "option classless_static_routes"
# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
# option classless_static_routes
Теперь я получаю автоматический маршрут по умолчанию, установленный DHCP-сервером.
Аналогичное действие можно попытаться выполнить с помощью dhclient, отредактировав файл /etc/dhcp/dhclient.conf и найдя следующую строку:
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, host-name,
dhcp6.name-servers, dhcp6.domain-search,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers;
и удаление запроса на rfc3442-classless-static-routes.