Das Routing funktioniert auf zwei internen Netzwerkkarten nicht gleich.

Das Routing funktioniert auf zwei internen Netzwerkkarten nicht gleich.

Auf meinem Ubuntu 22.04-Server habe ich zwei interne Netzwerkkarten und eine externe, die mit dem Internet verbunden ist. Ich habe die Schnittstellen mit Netplan wie folgt definiert:

network:
  ethernets:
    eno1:
      dhcp4: true
      dhcp4-overrides:
        route-metric: 100
    enp2s0:
      addresses:
        - 172.16.1.1/24
      nameservers:
        addresses:
        - 127.0.0.53
        - 8.8.8.8
        search:
        - wombats.org
      routes:
        - to: default
          via: 192.168.0.254
        - to: 172.16.1.0/24
          via: 172.16.1.1
          metric: 200
          table: 101
      routing-policy:
        - from: 172.16.1.0/24
          table: 101
    wlp8s0:
      dhcp4: no
      addresses:
        - 172.16.2.1/24
      routes:
        - to: 172.16.2.0/24
          via: 172.16.2.1
          metric: 20
          table: 102
      routing-policy:
        - from: 172.16.2.0/24
          table: 102
  version: 2

Ein mit enp2s0 verbundener Computer wird perfekt ins Internet und intern geroutet. Wenn derselbe Computer über wlp8s0 verbunden ist, kann er nicht einmal das von enp2s0 verwaltete Netzwerk (172.16.1.1/24) erreichen. Hier sind die beiden Routingtabellen: verbunden über enp2s0:

ip r
default via 172.16.1.1 dev enxf8e43b9d4867 proto dhcp metric 100 
169.254.0.0/16 dev enxf8e43b9d4867 scope link metric 1000 
172.16.1.0/24 dev enxf8e43b9d4867 proto kernel scope link src 172.16.1.3 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

verbunden über wlp8s0:

ip r
default via 172.16.2.1 dev wlp0s20f3 proto dhcp metric 20600 
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 
172.16.2.0/24 dev wlp0s20f3 proto kernel scope link src 172.16.2.4 metric 600 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

Der bemerkenswerte Unterschied ist die Metrik der Standardroute in beiden Konfigurationen. Diese kommt nicht vom DHCP-Server, da beide Subnetze identisch konfiguriert sind. Ich habe versucht, ufw zu deaktivieren und iptables hinzuzufügen. Aber all das hat das Ergebnis nicht geändert.

Ich verstehe nicht, warum ich den Datenverkehr des wlp8s0 nicht routen kann! Erklärt die Tatsache, dass eine Netzwerkkarte ein Kabel und die andere ein WLAN ist, den Unterschied? Das sollte nicht der Fall sein, da ihnen die IPs auf die gleiche Weise zugeteilt werden.

Danke für deine Hilfe. Jan

Antwort1

Die Lösung für dieses Problem war zweifach: Zunächst muss die Maskierung auf beiden Schnittstellen (Subnetzen) durchgeführt werden:

-A POSTROUTING -s 172.16.1.0/24 -o eno1 -j MASQUERADE
-A POSTROUTING -s 172.16.2.0/24 -o eno1 -j MASQUERADE

Nicht weniger wichtig ist dann, dass die Schnittstellen mit oder ohne Träger hochgefahren werden. Dies geschieht in /etc/netplan/00-installer-config.yaml mit der Zeile:

    enp2s0:
      ignore-carrier: true

dasselbe gilt für wlp8s0. Wenn Sie nicht

verwandte Informationen