web-dev-qa-db-ja.com

netplan、Ubuntu 18.04サーバー、2 NICでデフォルトルートを設定する方法

NICが2つあり、両方ともDHCPで制御されます。 1つはパブリックIP、2つ目はプライベートIPです。

両方のインターフェイスには静的IPがDHCPで予約されており、両方のインターフェイスは正しいIPを取得しますが、デフォルトのルートはプライベートNICからであるため、サーバーを再起動するとパブリックからアクセスできません。

ネットプランでこれを永久に設定するにはどうすればよいですか?

パブリックNIC ens18(IP:213.133.xxx.xxx)プライベートNIC ens19(IP:10.10.10.xxx)

私のネットプラン設定は次のとおりです。

network:
  version: 2
  renderer: networkd
  ethernets:
    ens18:
      dhcp4: yes
      dhcp6: no
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
  ethernets:
    ens19:
      dhcp4: yes
      dhcp6: no
5
Petar

問題は、networkdが両方のネットワークを起動し、両方にデフォルトゲートウェイが設定され、両方が同じメトリックになることです。

現在、Netplanでは、1つのインターフェイスでルートの設定をスキップすることはできませんが、netplanが既に生成したものに基づいて構成することにより、これを行うように個別にnetworkdを構成できます。

以下のコマンドをコピーしました。ここでは、ens19がデフォルトゲートウェイセットを必要としない「セカンダリ」インターフェイスであると想定しています。これを正常に行うには、新しいインターフェイスで再起動する前に発生する必要があることに注意してください(または、 config、MACAddress =行などを省略して、新しいインターフェイスが一致するのに十分な汎用性を持たせます)。

Sudo cp /run/systemd/network/10-netplan-ens19.network /etc/systemd/network
Sudo vi /etc/systemd/network/10-netplan-ens19.network

次に、[DHCP]の下に追加します。

UseRoutes=false            # if you don't want to apply any routes from DHCP

RouteMetric=200        # any number above 100 if you want the routes applied, but that they are less preferred.

ファイルがまだない場合(つまり、インターフェイスをまだ接続していない場合)、DHCP用に設定された別のインターフェイスの内容をコピーし、MACAddress =を削除できます。

一般的に、ファイルは次のようになります。

[Match]
Name=interfacename

[Network]
DHCP=ipv4

[DHCP]
UseMTU=true
RouteMetric=200    # or UseRoutes=false, as you prefer.

静的インターフェイスの場合、gateway4(またはgateway6)構成オプションをスキップすると、netplanはそのインターフェイスのデフォルトルートを作成しません。次に、routes要素(dictの配列)を使用して追加のルーティングが必要な場合

DHCPインターフェースの場合:

dhcp4-overrides:
    route-metric: 100

後続のインターフェースのメトリックを増やすだけで、うまくいくはずです。

(参照: https://netplan.io/examples

1
Garagoth