在 Ubuntu 16.04 上使用 isc-dhcp-server 时遇到了一些困难。
Ubuntu 盒子有一个 NIC,通过以太网电缆连接到路由器。我试图让 Windows 10 机器通过 WiFi 连接到同一个路由器,并从 Ubuntu 机器获取 DHCP 地址。为了完整起见,我应该指出路由器连接到另一个路由器,这是实际的互联网网关。我这样设置是为了我可以随意操作而不会影响其他人的互联网访问。
首先,路由器已启用 DHCP,其 Web 门户显示 Ubuntu 和 Windows 计算机均已连接。我的 Windows 计算机上没有问题:
无线局域网适配器 Wi-Fi:
连接特定的 DNS 后缀 . :
IPv4 地址 . . . . . . . . . . . . : 10.0.0.3
子网掩码 . . . . . . . . . . . : 255.255.255.0
默认网关 . . . . . . . . . : 10.0.0.1
我通过 ssh 进入 Ubuntu 机器并对其进行配置(为简洁起见,删除了注释):
/etc/网络/接口
自动 eth0
iface eth0 inet 静态
地址 10.0.0.2
网络掩码 255.255.255.0
网关 10.0.0.1
广播 10.0.0.255/etc/default/isc-dhcp 服务器
DHCPD_PID = /运行/dhcp-server/dhcpd.pid
接口=“eth0”/etc/dhcp/dhclient.conf
选项 rfc3442-classless-static-routes 代码 121 = 无符号整数 8 的数组;
发送主机名 = gethostname();
添加域名服务器 127.0.0.1;
请求子网掩码、广播地址、时间偏移、路由器、域名、域名服务器、域搜索、主机名、dhcp6.name-servers、dhcp6.domain-search、dhcp6.fqdn、dhcp6.sntp 服务器、netbios-name-servers、netbios-scope、接口 mtu、rfc3442-classless-static-routes、ntp 服务器;
超时 300;/etc/dhcp/dhcpd.conf
ddns-update-style none;
选项域名“somename”;
选项域名服务器 8.8.8.8, 8.8.4.4;
默认租用时间 600;
最大租用时间 7200;
权威;
日志设施 local7;
子网 10.0.0.0 网络掩码 255.255.255.0 {
范围 10.0.0.100 10.0.0.254;
选项路由器 10.0.0.1
}
不幸的是,当我关闭路由器的 DHCP 时,Windows 机器无法获取 IP 地址:
无线局域网适配器 Wi-Fi:
连接特定的 DNS 后缀 . :
自动配置 IPv4 地址 . . : 169.254.28.77
子网掩码 . . . . . . . . . . . . : 255.255.0.0 默认
网关 . . . . . . . . . :
一旦发生这种情况,我唯一能恢复的方法就是修改 Windows 计算机上的 WiFi 适配器设置并指定 IP 地址、子网掩码、默认网关和 DNS。 执行此操作后,我可以连接到路由器的 Web 界面,并且我注意到 Windows 计算机是唯一连接的设备,因此在我看来,当路由器禁用 DHCP 时,Ubuntu 计算机无法像配置为手动获取其 IP 地址的 Windows 计算机那样连接到它。
发现我的配置有什么问题吗?
答案1
找到罪魁祸首了!缺少一个分号:
/etc/dhcp/dhcpd.conf
选项路由器10.0.0.1;
YouTube 视频使用 Ubuntu 12.04 DHCP 服务器在 Juniper SRX 210 上进行 DHCP 中继配置(这里)向我介绍了这个命令:
:~$ sudo dhcpd -4 eth0
这是一个很好的检查,可以查看 isc-dhcp-server 是否正在运行,但在我的例子中它报告了错误。之后修复就很简单了。
答案2
我觉得这一点有点奇怪。通常该计算机的地址与网关相同,因此两者都应该是 10.0.0.1
auto eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
gateway 10.0.0.1
broadcast 10.0.0.255
因此尝试改变地址参数并看看会发生什么......