我有以下网络设置
[ISP Router] <---> [Raspbian] <---> [Debian 10 Workstation]
这是我的 Raspbian“路由器”的一些信息
iptables
已被刷新iptables -F
,所有链的默认策略是ACCEPT
ip a
报告说, IPeth0
地址eth1
已设置为我期望看到的值。 (eth0
即192.168.1.201
,使用 ISP 路由器 DHCP 服务器的保留地址进行设置。eth1
使用静态设置/etc/dhcpcd.conf
。192.168.2.254
)
这是路由表信息:
default via 192.168.1.254 dev eth0 proto dhcp src 192.168.1.201 metric 202
192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.201 metric 202
192.168.2.0/24 dev eth1 proto dhcp scope link src 192.168.2.254 metric 203
我看不到任何明显的错误,并且我相信,通过iptables
明确的默认策略ACCEPT
,这应该转发发往路由表中任何地址的所有数据包。cat /proc/sys/net/ipv4/ip_forward
返回1
。
这是我的工作站报告的信息。
ip route
default via 127.0.0.1 dev enx00500b668976b proto dhcp metric 100
default via 127.0.0.1 dev enx00500b668976b proto dhcp metric 101
10.0.0.0/8 dev enp7s0 proto kernel scope link sec 10.0.0.1
127.0.0.1 dev enx00500b668976b proto dhcp scope link metric 100
192.168.2.0/24 dev enx00500b668976b proto kernel scope link src 192.168.2.10
这对我来说看起来有点奇怪。
我可以192.168.1.254
从 Rasbian 系统 ping 通,但无法从我的工作站 ping 这个地址,这表明这两个设备之间的链路存在问题。
我可以做什么来诊断这个问题?
根据上面的信息,我的设置是否存在任何明显的错误?
答案1
部分答案(也许)
我对如何诊断问题做了一些研究。
我安装tcpdump
在 Raspberry Pi 上并进行监控eth1
。我看到 ARP 请求询问“谁拥有本地主机”。
我编辑/etc/dhcp/dhcpd.conf
并找到了该行option routers localhost;
。我猜这不是一个有效的选项,尽管journalctl -xe
. (或者至少我不认为是这样,我在启动时没有注意到任何错误。)
我把这个改为option routers 192.168.2.254
.这对我来说“似乎”是错误的。我本以为应该是localhost
或者127.0.0.1
...因为 Pi 既是网络的 DHCP 服务器192.168.2.0
又是该网络的路由器。
重新启动,iptables
再次清除,现在我可以通过路由器(Pi)执行 ping 操作。
更多信息
好吧,我现在无法 ping 通,但刚才我可以...
在我的工作站上,我现在将其视为我的路由表
10.0.0.0/8 dev enp7s0 proto kernel scope link src 10.0.0.1
127.0.0.1 dev enx0050b668976b proto dhcp scope link metric 100
192.168.2.0/24 enx0050b668976b proto kernel scope link src 192.168.2.10 metric 100
这看起来更像是我期望看到的。
重新启动后我只有
10.0.0.0/8 dev enp7s0 proto kernel scope link src 10.0.0.1
192.168.2.0/24 enx0050b668976b proto kernel scope link src 192.168.2.10 metric 100
它现在可以工作了,我不是 100% 确定为什么 - 最有可能是由清除 NAT 的刷新引起的 iptables 问题?
重新启动了两个设备。
这是输出iptables --list -v
sudo iptables --list -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
185 21142 ACCEPT all -- lo any anywhere anywhere
124 11380 ACCEPT tcp -- eth1 any anywhere anywhere tcp dpt:ssh
107 16316 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
34 2936 DROP all -- eth0 any anywhere anywhere
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
路由表:
default via 192.168.1.254 dev eth0 proto dhcp src 192.168.1.201 metric 202
192.168.1.0/24 dev eth0 proto dhcp scope link src 192.168.1.201 metric 202
192.168.2.0/24 dev eth1 proto dhcp scope link src 192.168.2.254 metric 203
工作站路由表:
default via 192.168.2.254 dev enx0050b668976b proto dhcp metric 100
10.0.0.0/8 dev enp7s0 proto kernel scope link src 10.0.0.1
192.168.2.0/24 dev enx0050b668976b proto kernel scope link src 192.168.2.10 metric 100
看来是default
回来了。我真的不知道为什么会发生这种情况,除了某个地方的配置不正确之外。
这是我在`/etc/dhcp/dhcpd.conf 中的子网定义
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.10 192.168.2.120;
option routers 192.168.2.254;
option broadcast-address 192.168.2.255;
}
同样,这里使用的有点奇怪,192.168.2.254
而不是类似的东西127.0.0.1
,但我想它是否有效?