部分答案(也许)

部分答案(也许)

我有以下网络设置

[ISP Router] <---> [Raspbian] <---> [Debian 10 Workstation]

这是我的 Raspbian“路由器”的一些信息

iptables已被刷新iptables -F,所有链的默认策略是ACCEPT

ip a报告说, IPeth0地址eth1已设置为我期望看到的值。 (eth0192.168.1.201,使用 ISP 路由器 DHCP 服务器的保留地址进行设置。eth1使用静态设置/etc/dhcpcd.conf192.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,但我想它是否有效?

相关内容