您好,我正在尝试将我的 Raspberry PI 配置为 dhcp 服务器。我的想法是通过 eth0 接口连接交换机,我可以将其他设备连接到交换机。但我仍然想通过 wlan0 保持 ssh 和互联网访问。
为了实现这一点,我安装了 isc-dhcp-server,然后通过将静态 IP 地址的配置添加到/etc/network/interfaces.d/eth0
allow-hotplug eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
broadcast 10.0.0.255
gateway 10.0.0.1
接下来我将 dhcp 服务器的配置添加到文件中/etc/dhcp/dhcpd.conf:
authorative
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.1 10.0.0.10;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.0.255;
option routers 10.0.0.1;
option domain-name "local-network";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
之后,我重新启动了 Raspberry PI,一切似乎都很好,我可以通过 WiFi 从我的机器连接到它,并且连接到交换机的其他机器正在获取从 10.0.0.2 到 10.0.0.10 的 IP 地址(我是能够通过配置的 Raspberry PI ssh 到它们)。
最大的问题是我无法从 Raspberry PI 访问互联网。当我输入类似的内容时
ping 10.0.0.3
它有效,但是
ping 8.8.8.8
失败。调试问题后,我设法使用命令发现问题ip route
:
default via 10.0.0.1 dev eth0 proto dhcp src 10.0.0.2 metric 202
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.46 metric 303
10.0.0.0/24 dev eth0 proto dhcp scope link src 10.0.0.2 metric 202
192.168.0.0/24 dev wlan0 proto dhcp scope link src 192.168.0.46 metric 303
我尝试通过 10.0.0.1 删除默认路由,它暂时有帮助,但一段时间后,某个进程(我怀疑 dhcp 服务器)会恢复它。当然,我可以编写一个守护进程来始终删除它,但我正在寻找一些更好的解决方案。
更新#1
没有 dhcp 服务器ip route
显示:
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.46 metric 303
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1
169.254.0.0/16 dev eth0 scope link src 169.254.44.117 metric 202
192.168.0.0/24 dev wlan0 proto dhcp scope link src 192.168.0.46 metric 303
提前致谢
答案1
问题确实是路由表,但我已成功删除路由记录而没有返回。
如上所述,Stretch 中的网络(我认为回到 Jessie)发生了很大变化。这邮政/etc/dhcpcd.conf
引导我通过修改而不是来设置静态 IP 的说明/etc/network/interfaces*
。然而,我发现在我的情况下最好注释掉static router=x.x.x.x
我的eth0
适配器静态 IP 的变量,因为我不希望它作为我的默认网关。然后我简单地从表中删除了该路线,ip route del default via <address> dev eth0
并且它保持删除状态。
不过,此处的操作还没有完成,为了使连接到 dhcp 服务器的其他设备能够正常访问互联网,您需要执行以下操作来设置 NAT:
1) 编辑/etc/sysctl.conf
以使用以下切换启用 IP 转发net.ipv4.ip_forward=1
2) 编辑以添加用于转发和返回的/etc/rc.local
iptable 规则。添加以下内容:eth0
wlan0
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth0 -m state \
--state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
3) 重新启动以使更改生效
您的其他设备现在应该可以通过 wifi 访问和从 dhcp 服务器分配的 IP 正常工作。