我尝试在 Ubuntu 14.04 机器上使用 isc-dhcp-server 作为我的 DHCP 服务器,而不是路由器提供的 DHCP 服务。我的设置如下。
我已将一切设置好,当我关闭路由器的 DHCP 时,我很高兴一切都正常:连接到路由器的机器被分配了我在 dhcpd.conf 文件中定义的范围内的 IP 地址。然而,我发现路由器显示 Ubuntu 机器的公共 IP 地址而不是其 /etc/network/interfaces 中定义的 10.0.0.2 地址,这有点奇怪。事实上,分配的 IP 地址甚至不是私有地址!它以 169 开头,而不是 10、192 或 172。IP 地址有效;我可以毫无问题地通过 SSH 连接。然而,当我重新启动路由器和 DHCP 服务器时,整个过程都失败了。
重新启动后,我在路由器界面上再也看不到 Ubuntu 机器的 IP 地址了。毫不奇怪,DHCP 也不起作用:连接到路由器的机器没有获得 IP 地址。当我在路由器上重新启用 DHCP 时,Ubuntu DHCP 服务器按预期获得了 10.0.0.2 IP 地址。当我按下 SHH 进入时,我发现 isc-dhcp-server 没有运行。我当然可以启动它,然后整个循环重复。(FWIW:我以前在尝试重新启动 isc-dhcp-server 时看到过一条错误消息,说我没有为 Ubuntu DHCP 服务器获得的那个奇怪的公共 IP 地址定义子网。但我无法在这篇文章中重现它)
我突然意识到启动过程中 eth0 出现了问题。有什么建议吗?
拓扑
我的 Ubuntu 机器连接到一个路由器,而该路由器又连接到另一个路由器,即互联网网关。
/etc/dhcpd/dhcpd.conf
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "SomeName";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option routers 10.0.0.1;
pool {
range 10.0.0.60 10.0.0.70;
}
}
/etc/网络/接口
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.1
# The secondary network interface
#auto eth1
#iface eth1 inet dhcp
# WiFi use: -> connmanctl
# Ethernet/RNDIS gadget (g_ether)
# Used by: /opt/scripts/boot/autoconfigure_usb0.sh
iface usb0 inet static
address 192.168.7.2
netmask 255.255.255.252
network 192.168.7.0
gateway 192.168.7.1
/etc/default/isc-dhcp 服务器
DHCPD_PID=/run/dhcp-server/dhcpd.pid
INTERFACES="eth0"