Ubuntu 18.04でNetPlanを使用してDNS検索順序を設定する方法
Ubuntu 18.04以前は、DNS名サーバーは伝統的に/etc/resolv.conf設定ファイルを使用して構成されていました。このファイルは、下に示す例のresolv.confファイルのように、DNS名サーバーの迅速かつ簡単な構成を可能にしていました。
nameserver 1.1.1.1
nameserver 1.0.0.1
Ubuntu 18.04以降、ネットワーク設定は、名前解決サーバーを含めて、NetPlanインターフェースを通じて制御されるようになりました。18.04以前でも、もともとのresolv.confを変更することは許可されていましたが、このファイルは実際にはNetworkManagerとその設定ファイルによって制御されており、通常は/etc/network/interfacesディレクトリにあります。
では、この新しいNetPlanインターフェースを使用する変更のきっかけは何ですか?シンプルさと柔軟性です。人間が読めるYAMLファイルを使用することで、複雑なネットワーク構成の設定がはるかに簡単になります。その上、デバッグが迅速で、エラーも追跡しやすくなります。
NetPlanでのネームサーバーの変更
このインターフェイスの変更に伴い、Ubuntu 18.04 システムのネームサーバーを実際にどのように更新しますか?/etc/resolv.conf を使用する代わりに、/etc/netplan に移動すると、いくつかの *.yaml ファイルが見つかるかもしれません。まだ定義されていない場合は、##-name.yaml の推奨される命名形式で新しく作成する必要があります。例として 01-netconfig.yaml などです。NetPlanは、優先されるディレクトリの順序とその後に続く番号の順序に従ってこれらのファイルを読み込みます。
/run/netplan/*.yaml/etc/netplan/*.yaml/lib/netplan/*.yaml
既存のIP構成を見つける
NetPlanのネットワーク構成を変更する前に、既存のインターフェースの設定が何であるかを知ることが賢明です。NetPlan自体はアクティブな状態を監視しませんので、ipコマンドを使用してこれを表示します。
user> ip a
出力は以下のスクリーンショットに似たような形になるべきですが、システムによっては各ネットワークインターフェースが異なる場合があることに注意してください。
この設定の中で、アクティブなインターフェースが見つかります。この場合、このチュートリアルの目的のために eth0 の設定を探しています。
設定を更新しています
既存のYAMLファイルを編集するか、新しいファイルを作成して、必要に応じて設定を変更した以下の構成を追加してください。
この設定は、あなたが静的IPを使用していることと、ip aコマンドから学んだように、eth0があなたの主要なインターフェースであることを前提としています。
network:
version: 2
ethernets:
eth0:
addresses:
- 10.10.10.2/24
gateway4: 10.10.10.1
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
- 2606:4700:4700::1111
- 2606:4700:4700::1001
search: []
ここで使用されているネームサーバーは、パブリックなCloudflareのネームサーバーですが、自分にとって最適なものを使用してください。IPv6のリゾルバーも含まれています。
DHCPを使用したい場合は、eth0セクションの下にある静的IP設定をdhcp4: yesに置き換えることができます。
さらに、DHCPを使用している場合は、ネームサーバーのオーバーライドを設定する必要があります。
dhcp4-overrides:
use-dns: false
アドレスがaddressesの下にリスト形式で表示されていることに気づくかもしれませんが、これらのアドレスを配列形式で定義することも可能です。
addresses: [1.1.1.1, 1.0.0.1, "2606:4700:4700::1111", "2606:4700:4700::1001"]
レンダラー
いくつかの設定では、renderer 設定がリストされているのを見ることがあるかもしれません。利用可能なタイプは二つあり、NetworkManager と networkd です。デフォルトでは、networkd が使用されます。違いは、NetworkManager は Ubuntu が使用する GUI マネージャーであるのに対し、networkd は Systemd によって使用されることです。これは定義する必要はなく、デフォルトの設定でほとんどの場合に機能するはずです。
ネームサーバーの変更をテストしています
設定ファイルが作成された後、以下のコマンドを実行して新しい設定を一時的に試し、設定に誤りがあれば元に戻します。
sudo netplan try
<img src="https://static0.howtogeekimages.com/wordpress/wp-content/uploads/csit/2020/03/30109433.png" alt="Screen show when you try to run the new settings." width="587" height="132" />失敗した場合、設定は120秒後に自動的に元に戻ります。この適用中に別のシェルを開いて設定をテストすることができます。設定が期待通りに機能する場合は、エンターを押してその設定を保持するか、そうでない場合は戻すことができます。これにより、設定が機能するまで変更を加えることができます。
変化を適用する
最後に、変更が正確であることを確認した後、変更を適用する必要があります。そのためには、次のようにnetplanのapplyコマンドを実行します。
sudo netplan apply
インターフェイスが単にネームサーバーを切り替えているだけであれば、再起動は一般的に不要です。より大きな設定変更が行われた場合は、変更を反映させるためにシステムの再起動が必要かもしれません。
インターフェースのアップとダウン
以前は、ifconfigを使用してインターフェースをアップおよびダウンしていました。しかし、前述のように、ipコマンドがifconfigの代わりになっています。以下の例では、eth0がダウンし、その後再度アップされます。
ip link set eth0 down
ip link set eth0 up
もし eth0 が唯一のインターフェースである場合、リモートでシステムに接続する手段がないままインターフェースをダウンさせないように注意してください。
NetPlanのデバッグ
設定が失敗した場合、何が起こりますか? NetPlanの設定を調査し、どこで障害が発生した可能性があるかを特定する方法はいくつかあります。正しい設定が実際に適用されているかを確認する一つの方法は、/run/systemd/network に生成された設定ファイルを確認することです。たとえば、そのディレクトリに移動し、一致する*.network 設定ファイルを見つけて、設定が予想通りになっているかを確認できます。
生成された設定が正しいことを確認するためにうまく機能する追加のコマンドは、次の通りです:
sudo netplan --debug generate
以下のスクリーンショットは、あなたの設定によって異なる場合がありますので、ご留意ください。
結論
NetPlanは既存のUbuntuネットワーキングに大きな変更をもたらしますが、目的は設定を簡素化し、より柔軟な構成を作成することです。既存のコマンドと新しいNetPlanコマンドの組み合わせを使用することで、複雑なネットワーキング構成を迅速に作成し適用できます。
YAMLベースの設定が導入され、ipコマンドを通じて更新された機能により、これまで以上に複雑な設定を作成し、最もユニークな状況にも対応しやすくなりました。


