无法建立网络路由

无法建立网络路由

我正在努力建立从笔记本电脑到另一台设备的网络路由。我承认我的网络背景不足,所以很抱歉我的无知。我有以下设置:

[设备-A] <--WiFi--> [路由器] <--WiFi--> [设备-B] <--以太网--> [设备-C]

我有以下 IP 地址(自动配置):

设备-A:

  • 无线网络:192.168.0.155

设备 B:

  • 无线网络:192.168.0.121
  • 以太网:10.42.0.1

设备 C:

  • 以太网:10.42.0.134

所有设备均使用 Ubuntu 20.04。我在设备 B 上使用网络管理器 GUI 配置了设备 B 和设备 C 之间的有线连接,并将 IPv4 方法设置为“共享给其他计算机”。所有其他设置均保留为默认设置。在设备 A 上,我尝试使用以下方法设置到设备 C 的路由:

sudo ip route add 10.42.0.0/24 via 192.168.0.121 dev wlo1

设备 C 能够 ping 通设备 A,设备 A 也可以在 192.168.0.121 和 10.42.0.1 上 ping 通设备 B。但是,当我尝试从设备 A ping 通设备 C 时,我得到以下结果:

$ ping 10.42.0.134
PING 10.42.0.134 (10.42.0.134) 56(84) bytes of data.
From 192.168.0.121 icmp_seq=1 Destination Port Unreachable

如何配置设备以便设备 A 能够与设备 C 通信?这似乎应该相当简单,但我一直无法弄清楚。

更新

B 上启用了转发

$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

以下是我iptables在 B 上的规则:

$ sudo iptables -L -n -v
Chain INPUT (policy ACCEPT 20319 packets, 21M bytes)
 pkts bytes target     prot opt in     out     source               destination         
    6  2236 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            udp dpt:67
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67
   12   863 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            udp dpt:53
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  193 33179 ACCEPT     all  --  *      eth0    0.0.0.0/0            10.42.0.0/24         state RELATED,ESTABLISHED
  201 19734 ACCEPT     all  --  eth0   *       10.42.0.0/24         0.0.0.0/0           
    0     0 ACCEPT     all  --  eth0   eth0    0.0.0.0/0            0.0.0.0/0           
    9   756 REJECT     all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 18275 packets, 2577K bytes)
 pkts bytes target     prot opt in     out     source               destination         
$ sudo iptables -L -n -v -t nat
Chain PREROUTING (policy ACCEPT 577 packets, 172K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 59 packets, 4904 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 476 packets, 67069 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 468 packets, 65733 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  178 14264 MASQUERADE  all  --  *      *       10.42.0.0/24        !10.42.0.0/24        

我没有在 B 上配置任何防火墙规则。

答案1

问题出iptables在 Device-B 上的规则集(感谢 Thomas 在评论中的帮助)。

如问题输出中所示 sudo iptables -L -n -v,您可以看到通过 B 的数据包被拒绝,而不是被转发到 eth0(显示为问题中“Chain FORWARD”下方的第四个条目)。我能够使用以下命令列出所有转发规则iptables -S

$ sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT
-A FORWARD -d 10.42.0.0/24 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.42.0.0/24 -i eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth0 -j ACCEPT
-A FORWARD -o eth0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i eth0 -j REJECT --reject-with icmp-port-unreachable

从输出来看,最后两条规则是造成问题的原因。我使用以下命令删除了它们:

sudo iptables -D FORWARD -o eth0 -j REJECT
sudo iptables -D FORWARD -i eth0 -j REJECT

我现在能够从设备 A ping/ssh 到设备 C,反之亦然。

相关内容