我刚刚全新安装了 Ubuntu 16.04 (Xenial)。我已配置/etc/network/interfaces
使用 DHCP 自动启动 wlan 接口:
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 服务器还提供了rfc3442-classless-static-routes
来自 Microsoft DHCP 服务器(Windows Server 2008 R2)的无类静态路由(ISC DHCP 中的 DHCP 选项 121)。
查看/sbin/dhclient-script
,如果向 DHCP 客户端提供了至少一条无类静态路由,它将忽略路由器设置,因此没有默认路由设置。
# if we have $new_rfc3442_classless_static_routes then we have to
# ignore $new_routers entirely
我的“修复”是向 Windows DHCP 服务器添加另一个无类静态路由。因此:
- 目的地: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 的请求。