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桌面的默认

Ubuntu桌面版的默认NetPlan设置,在18.04至22.04版本之间是相同的。

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

这个 renderer 键可以选择 NetworkManager 或 networkd 中的一个。如果是构建桌面系统,默认是使用 NetworkManager。而在 Ubuntu Server 中,默认则是使用 networkd。由于 NetworkManager 可以通过GUI操作进行设置,如果打算将其用作桌面电脑,那么这个选择也是可以的。

这个实体位于/etc/NetworkManager目录下。如果在GUI界面上从默认值中编辑接口设置,将会在/etc/NetworkManager/system-connections目录下生成配置文件。

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

NetPlanを実際に書いてみる。

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

一息入れる

如果要进行语法检查,并在检查失败时回滚,可以使用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ではこれも利用可能

从22.04版本开始,Ubuntu更换了用于确认实际使用哪个DNS解析的命令,改用resolvectl。尽管20.04版本也可以使用resolvectl命令,并且输出结果与原来的systemd-resolve –status相同。

广告
将在 10 秒后关闭
bannerAds