Netzwerkroute kann nicht eingerichtet werden

Netzwerkroute kann nicht eingerichtet werden

Ich habe Probleme, eine Netzwerkroute von meinem Laptop zu einem anderen Gerät einzurichten. Ich muss zugeben, dass ich nicht viel Erfahrung mit Netzwerken habe, also entschuldigen Sie meine Unwissenheit. Ich habe das folgende Setup:

[Gerät A] <--WLAN--> [Router] <--WLAN--> [Gerät B] <--Ethernet--> [Gerät C]

Ich habe folgende IP-Adressen (die automatisch konfiguriert wurden):

Gerät-A:

  • WLAN: 192.168.0.155

Gerät B:

  • WLAN: 192.168.0.121
  • Ethernet: 10.42.0.1

Gerät-C:

  • Ethernet: 10.42.0.134

Alle Geräte verwenden Ubuntu 20.04. Ich habe die kabelgebundene Verbindung zwischen Gerät B und Gerät C auf Gerät B mithilfe der GUI des Netzwerkmanagers konfiguriert, wobei die IPv4-Methode auf „Mit anderen Computern teilen“ eingestellt war. Alle anderen Einstellungen wurden auf den Standardeinstellungen belassen. Auf Gerät A habe ich versucht, eine Route zu Gerät C einzurichten, indem ich Folgendes verwendet habe:

sudo ip route add 10.42.0.0/24 via 192.168.0.121 dev wlo1

Gerät C kann Gerät A anpingen und Gerät A kann Gerät B sowohl unter 192.168.0.121 als auch unter 10.42.0.1 anpingen. Wenn ich jedoch versuche, Gerät C von Gerät A aus anzupingen, erhalte ich:

$ 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

Wie kann ich die Geräte so konfigurieren, dass Gerät A mit Gerät C kommunizieren kann? Das scheint ziemlich einfach zu sein, aber ich habe es nicht herausgefunden.

Aktualisieren

Die Weiterleitung ist auf B aktiviert

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

Hier sind meine iptablesRegelsätze zu 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        

Ich habe auf B keine Firewall-Regeln konfiguriert.

Antwort1

Das Problem war der iptablesRegelsatz auf Gerät B (danke für die Hilfe von Thomas in den Kommentaren).

Wie in der Frage in der Ausgabe von gezeigt sudo iptables -L -n -v, können Sie sehen, dass Pakete, die durch B gehen, abgelehnt werden, anstatt an eth0 weitergeleitet zu werden (in der Frage als vierter Eintrag unter „Chain FORWARD“ angezeigt). Ich konnte alle Weiterleitungsregeln mit dem folgenden Befehl auflisten 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

Aus der Ausgabe geht hervor, dass die letzten beiden Regeln das Problem verursachen. Ich habe diese wie folgt entfernt:

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

Ich kann jetzt von Gerät A aus per Ping/SSH auf Gerät C zugreifen und umgekehrt.

verwandte Informationen