web-dev-qa-db-ja.com

VLANインターフェースを持つNetplan静的ルート

18.04。 2つのVLANインターフェイスでサーバーを構成しようとしています。各VLANインターフェースは、個別のサブネット上に個別のIPアドレスを持ち、両方が同じ物理インターフェースにリンクされます。 vlanインターフェースを構成するとき、vlanを介してそれぞれの異なるサブネットに接続できますが、追加のルートを追加できません。サブネットの1つ(vlan2000)にネクストホップのあるデフォルトルートを追加し、次に、他のvlan(vlan1000)を介して単一の接続されていないサブネットに静的ルートを追加する必要があります。これが私のネットプラン設定ファイルです:

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" ]

私はまた、運のない各VLAN階層の下に適切なルートを追加しようとしました-たとえば:

    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

これらの両方で、設定を適用した後、次のエラーが発生します:

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.

その後、再度適用すると問題は解決しますが、ルーティングテーブルにルートが追加されません。 routeステートメントを完全に削除すると、エラーなしで適用されます。私はネットプランについてあまり知りませんが、それは問題のようです。だから私は設定で何かを間違ってやっていると思います。 VLANインターフェイスの統計ルートをどこに追加する必要がありますか?

FTR、静的ルートを手動で追加すると:

 Sudo ip route add 192.168.1.0/24 via 172.16.100.1 dev vlan1000

すべてが期待どおりに機能します。私の懸念は、手動で追加されたこれらのルートが再起動後も持続するとは思わないことです。これらのルートを持続させるためのより簡単な回避策がある場合、私はそれを受け入れます。

おかげで、

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

インデントは別として、ゲートウェイへのルートを保持しているインターフェースではないインターフェースにルートを追加しようとしているため、この構成は正しくありません。 0.0.0.0/0ルートは、vlan2000インターフェイスの下にリストする必要があります。これは、ルートがゲートウェイ(192.168.100.2)に向かうネットワークであることを前提としています。

しかし、あなたの設定によれば、192.168.100.2はlocalアドレスであり、これをゲートウェイとして使用することは正しくありません。このVLAN上のホストアドレスに直接接続されているインターネット全体(0.0.0.0/0)はありません。ルートは、ローカルアドレスではなく、via値としてrouterのIPアドレスを設定する必要があります。

0
slangasek