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相同。