netplanが0.0.0.0/0のデフォルトパスを生成するのを防ぐ

netplanが0.0.0.0/0のデフォルトパスを生成するのを防ぐ

私は2つのイーサネットネットワークカードでUbuntu 18.04を実行しています。両方のネットワークカードでDHCPを使用します。 netplanが両方のデバイスで0.0.0.0/0のデフォルトパスを生成しないようにするにはどうすればよいですか?一方のNICはゲートウェイを介して0.0.0.0/0にルーティングし、もう一方のNICは特定の/ 24サブネットにルーティングしたいと思います。 netplan設定にパスを追加できることはわかっていますが、常に0.0.0.0/0のデフォルトパスが作成されます。

答え1

~によるとこの回答、それしなければならないうまくいきますdhcp4-overridesが、18.04 Ubuntu以降はこれをサポートしていません。私の回避策は、デフォルトの/etc/networkd-dispatcher/routable.d/パスを削除するフックスクリプトを作成することでした。

#!/bin/sh

# Only remove the default route on the second interface, e.g. eth1
[ "$IFACE" != eth1 ] && exit 0

# delete the default route for this interface
ip route del default dev eth1

ファイル所有者とグループがroot実行可能であることを確認してください。

ネットワークスケジューラの詳細については、こちらをご覧ください。https://gitlab.com/craftyguy/networkd-dispatcher

答え2

NICをより適切に制御するには、両方のアダプタを静的に保持するか、1つ以上のアダプタ。

これは、対応するMACアドレスに対して対応するDHCPサーバーに2つのIPを予約することで、特定の範囲内で簡単に実行できます。DHCPの制限事項 そのうちの全部または一部を手動で設定します。

(たとえば、会社のポリシーに基づいて固定IPを使用するときにまったく異なるIP範囲を使用する必要がある場合でも、上記のハイブリッド技術を使用できます。)

答え3

super@gitlab:~$ lsb_release -dc
Description:    Ubuntu 18.04.4 LTS
Codename:   bionic
super@gitlab:~$ cat /etc/netplan/50-cloud-init.yaml 
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        ens18:
            addresses:
            - 172.16.104.177/24
            dhcp4: false
            gateway4: 172.16.104.1
            nameservers:
                addresses:
                - 172.16.104.1
                search: []
        ens19:
            dhcp4: true
            dhcp4-overrides:
                use-routes: false
            routes:
              - to: 10.0.0.0/16
                via: 10.0.90.1
    version: 2
super@gitlab:~$ ip r
default via 172.16.104.1 dev ens18 proto static 
10.0.0.0/16 via 10.0.90.1 dev ens19 proto static 
10.0.90.0/24 dev ens19 proto kernel scope link src 10.0.90.21 
172.16.104.0/24 dev ens18 proto kernel scope link src 172.16.104.177 
super@gitlab:~$

答え4

dhcp4-overridesUbuntu 20.04では動作しません。

たとえば、さまざまなインターフェイス用に別々のファイルを作成します。

デフォルトパスを追加したい最初のインターフェイスについては、eth0を考えてみましょう。

/etc/netplan/00-eth0.yaml

network:
  version: 2
  ethernets: 
    eth0: 
      dhcp4: true

その後、デフォルトパス eth1 を回避したい別のパスに別のファイルを作成します。

/etc/netplan/01-eth1.yaml

network:
  version: 2
  renderer: networkd
  ethernets: 
    eth1: 
      dhcp4: true

その後、走ってsudo netplan applyルートを確認してください。ip r

ネットワークをレンダラーとして使用すると、デフォルトパスが生成されないようです。

関連情報