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
すべてが期待どおりに機能します。私の懸念は、手動で追加されたこれらのルートが再起動後も持続するとは思わないことです。これらのルートを持続させるためのより簡単な回避策がある場合、私はそれを受け入れます。
おかげで、
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アドレスを設定する必要があります。