19

投稿日

更新日

Ubuntu の Network設定

はじめに

Ubuntu の Network 設定は17.10から netplanベースに変更されている。ただ、Ubuntu を Desktop として利用する場合は従来通りの NetworkManager ベースとなっている。どうなっているのかのメモ。
ここの記事が一番わかりやすかった。

調査したバージョン

  • Ubuntu 18.04. Ubuntu Desktop での Network設定は、19.10でも NetworkManager 経由で変わりはなかった。

  • Ubuntu 20.04. Ubuntu Desktop でも変更なし

  • Ubuntu 22.04. Ubuntu Desktop でも変更なし

Ubuntu Desktop のデフォルト

Ubuntu DesktopのデフォルトNetPlan設定. 18.04 ~ 22.04では共通だった。

/etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

このrendererキーは、NetworkManager か networkd のどちらかを入れられる。Desktop を構築した場合のデフォルトは NetworkManagerとなっている。 Ubuntu Server だと networkd になる. NetworkManager は GUI 操作で設定できるため、Desktop PC として利用するのならこれでも良い。

この実体がどこかというと、/etc/NetworkManager 配下にある。GUI上からInterface設定をデフォルト値から編集すると、/etc/NetworkManager/system-connections/配下にConfigが生成される。

少し複雑なことを実現するためには NetworkManager よりも networkd を使うべきなのだろう。ただ、 NetPlan を使えばすべてを解決できるかというとそうでもない。例えば NetPlanでは Promiscuous Interfaceを設定できず、スクリプトで頑張ることが推奨されていたりする。頑張った例はこれ

NetPlanを実際に書いてみる。

/etc/netplan/01-network-manager-all.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens3:
      dhcp4: false
      addresses: [192.168.1.66/24]
      routes:
      -  to: default
         via: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8] 

ブリッジドメインとかを定義する際は renderer を networkd にしたほうが使いやすい。
Ubuntu 22.04から gateway4が非推奨となり、routes コマンドの利用が推奨されるようになった( gateway4 でも動きはした)。

netplanの適用

いきなり変更する

$ sudo netplan apply

一息入れる

Syntax Checkしたり、ダメだったら切り戻したりするには tryオプションをつける。こっちのほうが安心してできる。

$ sudo netplan try
$ sudo netplan try --timeout 10
[sudo] password for shakapon: 
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in  10 seconds
(10秒後)
Reverting.

参考

アドレス/ルーティング設定確認コマンド群

$ ip address show ens3
$ ip link
$ ip route

DNS設定確認

$ resolvectl
Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub

Link 2 (ens3)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 8.8.8.8
       DNS Servers: 8.8.8.8

$ systemd-resolve --status #20.04ではこれも利用可能

Ubuntuが名前解決する際、実際にどのDNSを叩いているかを確認するコマンドが、22.04から resolvectlに変更された。resolvectlは20.04でも利用可能で、出力結果は従来のsystemd-resolve --statusから変わらない。

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について
19