Ubuntu 20.04: ネットプラン経由でブリッジを追加すると、ブリッジされたインターフェースはルーティング可能なままになり、ルーティングエントリが重複する

Ubuntu 20.04: ネットプラン経由でブリッジを追加すると、ブリッジされたインターフェースはルーティング可能なままになり、ルーティングエントリが重複する

OS: Ubuntu 20.04.3、最新のアップデートがすべてインストール済み。

私はブリッジインターフェースを作成して、現在の(eno1)をスレーブ化しようとしています

Netplan 構成:

# This is the network config written by 'subiquity'
network:
  version: 2
  renderer: networkd

  ethernets:
    eno1:
      dhcp4: false
      dhcp6: false

  bridges:
    br0:
      interfaces: [eno1]
      addresses: [10.20.0.21/24]
      gateway4: 10.20.0.1
      nameservers:
        search: [example.com]
        addresses: [10.20.0.1,10.20.0.10]
      dhcp4: false
      dhcp6: false

「netplan try」を実行すると、次のように表示されます。

** (generate:2332): WARNING **: 12:54:41.673: Problem encountered while validatingdefault route consistency.Please set up multiple routing tables and use `routing-policy` instead.
Error: Conflicting default route declarations for IPv4 (table: main, metric: default), first declared in br0 but also in eno1

システムを再起動すると、結果は次のようになります。

$ route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.20.0.1       0.0.0.0         UG    0      0        0 br0
default         10.20.0.1       0.0.0.0         UG    0      0        0 eno1
10.20.0.0        0.0.0.0        255.255.255.0   U     0      0        0 br0
10.20.0.0        0.0.0.0        255.255.255.0   U     0      0        0 eno1

システムは引き続き使用可能ですが、構成は明らかに異常です。

$ networkctl

networkctl 
IDX LINK TYPE     OPERATIONAL SETUP     
  1 lo   loopback carrier     unmanaged 
  2 eno1 ether    routable    configured
  3 br0  bridge   routable    configured

$ ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 18:c0:4d:63:da:da brd ff:ff:ff:ff:ff:ff
    inet 10.20.0.21/24 brd 10.1.0.255 scope global eno1
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 18:c0:4d:63:da:da brd ff:ff:ff:ff:ff:ff
    inet 10.20.0.21/24 brd 10.1.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::700e:94ff:fea6:fc98/64 scope link 
       valid_lft forever preferred_lft forever

eno1 をスレーブにして、ルーティング エントリ/IP アドレスの重複を作成しないようにするにはどうすればよいですか?

1月21日の更新: 以下に他の設定ファイルはありません/etc/netplan

答え1

2022年1月22日の回避策:

netplan および/または networkd は現在バグが多く、IP/ルートを重複させずに前述の構成をサポートできないようです。

解決策は、NetworkManager に戻すことでした。

  1. netplanの.yamlで、レンダラーの行を次のように置き換えてください。

    renderer: NetworkManager
    
  2. /etc/NetworkManager/NetworkManager.conf でネットワーク管理インターフェースが有効になっていることを確認してください (影響を受けるセクションは以下に記載)

    [ifupdown]
    managed=true
    
  3. etc/NetworkManager/conf.d/10-globally-managed-devices.conf でフィルタリングするインターフェース タイプを定義します。

    [keyfile]
    
    unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:ethernet
    

    注意: ファイル /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf が空 (サイズがゼロ) であることを確認してください。

  4. NetworkManager を再起動するか、システムを再起動します。

    sudo systemctl restart network-manager
    

    注: GUI モードを使用する場合、NetworkManager が対応する接続​​をアクティブ化できないというエラーを継続的に表示しないようにするには、[設定] > [ネットワーク] で有線接続の自動起動を無効にする必要がある場合があります。

答え2

@KonstantinBoyandin - ここで提供されたシステムに関する情報は、どれでも結論。そうは言っても、あなたが遭遇した問題についての推測は次のとおりです。

IIRC 20.04 のデフォルト インストールではNetworkManager既に使用されているはずです。つまり、すぐに使用できる状態で、観察したデフォルト ルートがNetworkManager既に構成され、作成されている可能性が高いということです。eno1

default         10.20.0.1       0.0.0.0         UG    0      0        0 eno1

両方を使用することを妨げるものは何もありませんNetworkManager そして systemd-networkd- 思いつかない理由NetworkManagerそうすることはできますが、それを止めるものは何もありません。私はこれを利用して、すでに実行されているシステムにWireguardインターフェースを設定するときに対処しなくて済むようにしましたNetworkManager。そうするときは、しなければならないこれらのツールは相互に作用する可能性があることに注意してください。たとえば、によって管理されている物理イーサネットアダプタがNetworkManagerダウンした場合、何が起こるでしょうか。その物理アダプタに依存する仮想インターフェイスは、仮想アダプタの構成によって、失敗するかもしれませんし、しないかもしれません。外部のNetworkManager

レンダラーを に切り替えた時点で、設定に をNetworkManager使用したため、すべてが機能し始めました。netplanNetworkManager ネットワーク構成の唯一のサービスとしてあらゆる「クロス構成」を防止します。

この問題に遭遇した他のユーザーの場合、解決方法はいくつかあります。NetworkManager別のレンダラーで構成したいインターフェイスの構成を停止するか、完全に無効にするかのいずれかです。私は、に切り替えてサーバー上で無効にし、デスクトップ Linux 上ではそのままにして、必要な場合にのみ他のネットワーク サービスを活用することNetworkManagerを好みます。netplansystemd-networkdNetworkManagerNetworkManager

一般的な Ubuntu 20.04 サーバーで、netplan を使用して OP の競合を回避する方法は次のとおりです。

  1. サーバーのプロビジョニング(Ubuntuのインストールなど)
  2. 必要なネットプラン構成を作成する
  3. /etc/network/interfacesで設定したインターフェースに適用されるセクションを編集してコメントアウトしますnetplan
# The primary network interface
# auto eno1
# iface eno1 inet dhcp
  1. 再起動(または停止)NetworkManagersudo systemctl <restart|stop> NetworkManager.service
  2. 設定をテストしますnetplansudo netplan try
  3. すべてが正しく機能している場合は、Enter指示に従ってください

(オプション)

  • 無効にするNetworkManager:sudo systemctl disable NetworkManager.service

(注記)

  • 当然のことですが、上記では、ローカル コンソールにアクセスできる、または SSH 接続が構成しているインターフェイスに依存していないことを前提としています。接続が切断され、構成を完了できなくなる可能性があるためです。

関連情報