無法建立網路路由

無法建立網路路由

我正在努力建立從我的筆記型電腦到另一台設備的網路路由。我承認我缺乏網路背景,很抱歉我的無知。我有以下設定:

[裝置-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。我使用網路管理器 GUI 在設備 B 上配置了設備 B 和設備 C 之間的有線連接,並將 IPv4 方法設定為「共用到其他電腦」。所有其他設定均保留預設值。在設備 A 上,我嘗試使用以下命令設定到設備 C 的路由:

sudo ip route add 10.42.0.0/24 via 192.168.0.121 dev wlo1

設備 C 能夠在 192.168.0.121 和 10.42.0.1 上 ping 通設備 A,且設備 A 可以 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,反之亦然。

相關內容