webentwicklung-frage-antwort-db.com.de

Statische Netplan-Routen mit Vlan-Schnittstellen

Am 18.04. Ich versuche meinen Server mit 2 vlan-Schnittstellen zu konfigurieren. Jede vlan-Schnittstelle verfügt über eine separate IP-Adresse in einem separaten Subnetz, und beide werden mit derselben physischen Schnittstelle verbunden. Wenn ich die vlan-Schnittstellen konfiguriere, habe ich über die vlans eine Verbindung zu jedem einzelnen Subnetz, kann jedoch keine zusätzlichen Routen hinzufügen. Ich muss eine Standardroute mit einem nächsten Hop in einem der Subnetze (vlan2000) und dann eine statische Route zu einem einzelnen, nicht verbundenen Subnetz über das andere vlan (vlan1000) hinzufügen. Hier ist meine Netplan-Konfigurationsdatei:

network:
renderer: NetworkManager
version: 2
ethernets:
    enp0s31f6: 
        routes:
            - to: 0.0.0.0/0
              via: 192.168.100.2
              metric: 100
            - to: 192.168.1.0/24
              via: 172.16.100.1
              metric: 10
vlans:
    vlan1000:
        id: 1000
        link: enp0s31f6
        addresses: [ "172.16.100.2/30" ]
    vlan2000:
        id: 2000
        link: enp0s31f6
        addresses: [ "192.168.100.2/24" ]

Ich habe auch versucht, die entsprechenden Routen unter jeder VLAN-Hierarchie ohne Glück hinzuzufügen - zum Beispiel:

    vlans:
    vlan1000:
        id: 1000
        link: enp0s31f6
        addresses: [ "172.16.100.2/30" ]
        routes:
          - to: 0.0.0.0/0
          via: 192.168.100.2
          metric: 100

Bei beiden wird nach dem Anwenden der Konfiguration der folgende Fehler angezeigt:

Traceback (most recent call last):
  File "/usr/sbin/netplan", line 23, in <module>
    netplan.main()
  File "/usr/share/netplan/netplan/cli/core.py", line 50, in main
    self.run_command()
  File "/usr/share/netplan/netplan/cli/utils.py", line 130, in run_command
    self.func()
  File "/usr/share/netplan/netplan/cli/commands/apply.py", line 43, in run
    self.run_command()
  File "/usr/share/netplan/netplan/cli/utils.py", line 130, in run_command
    self.func()
  File "/usr/share/netplan/netplan/cli/commands/apply.py", line 93, in command_apply
    stderr=subprocess.DEVNULL)
  File "/usr/lib/python3.6/subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['udevadm', 'test-builtin', 'net_setup_link', '/sys/class/net/vlan1000']' returned non-zero exit status 4.

Wenn ich es dann erneut anwende, wird es durchlaufen, aber keine der Routen wird zur Routing-Tabelle hinzugefügt. Wenn ich die route-Anweisungen vollständig entferne, gilt dies ohne Fehler. Ich weiß nicht viel über Netplan, aber das scheint das Problem zu sein. Ich gehe also davon aus, dass ich etwas in der Konfiguration falsch mache. Wo soll ich Statis-Routen für VLAN-Schnittstellen hinzufügen?

FTR, wenn ich die statischen Routen manuell hinzufüge:

 Sudo ip route add 192.168.1.0/24 via 172.16.100.1 dev vlan1000

alles funktioniert so, wie ich es erwartet habe. Ich mache mir Sorgen, dass ich nicht glaube, dass diese manuell hinzugefügten Routen nach einem Neustart bestehen bleiben. Wenn es einfacher ist, diese Routen zu umgehen, bin ich dafür offen.

Vielen Dank,

2
AMatechak
vlans:
vlan1000:
    id: 1000
    link: enp0s31f6
    addresses: [ "172.16.100.2/30" ]
    routes:
      - to: 0.0.0.0/0
      via: 192.168.100.2
      metric: 100

Abgesehen von der Einrückung wäre diese Konfiguration falsch, da Sie hier versuchen, einer Schnittstelle eine Route hinzuzufügen, die nicht die Schnittstelle ist, die die Route zu ihrem Gateway enthält. Die Route 0.0.0.0/0 muss unter der vlan2000-Schnittstelle aufgeführt werden, da dies das Netzwerk ist, in dem sich Ihre Route zum Gateway befindet (192.168.100.2).

Gemäß Ihrer Konfiguration ist 192.168.100.2 jedoch auch eine lokale Adresse, was bedeutet, dass es falsch ist, sie als Gateway zu verwenden. Sie haben nicht das gesamte Internet (0.0.0.0/0) direkt mit Ihrer Host-Adresse auf diesem VLAN verbunden. Ihre Route muss mit der IP-Adresse Ihres Routers als via -Wert eingerichtet werden, nicht mit Ihrer lokalen Adresse.

0
slangasek