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