なんか嘘の設定方法がはびこっているので正しい手法をメモ書き
まず、Ubuntu 20.04をIPアドレスをdhcp取得でインストールすると、「/etc/netplan/00-installer-config.yaml」に下記のような内容の設定ファイルを作成される。
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
dhcp4: true
version: 2
上記の「ens160」はNICのデバイス名なので使用するNICによって名称が変化する。
で、この /etc/netplan/00-installer-config.yaml とか /etc/netplan/50-cloud-init.yaml とか /etc/netplan/01-netcfg.yaml を変更する、という手順は「誤り」です。
正しい手法はUbuntuの公式ドキュメント「Network Configuration」の「Dynamic IP Address Assignment (DHCP Client)」と「Static IP Address Assignment」に記載されているように「/etc/netplan/99_config.yaml」というファイルを新規作成して、そこで設定します。
これは、netplanコマンドは/etc/netplan/にある数字で始まるファイルを00から順に読み込み99を一番最後に読み込むので、99_config.yamlで記載した内容で上書きされて設定される、という動作になっているためです。
Ubuntu公式サイト上では固定IPアドレス設定時に「dhcp4:false」を設定する、なんてことは書いてありません(2020/05/18時点)が、初期インストール時にdhcp取得を選択していると00-installer-config.yaml上では「dhcp4:true」が設定されているため、ens160に対してdhcpで取得したIPアドレスと固定IPアドレスの双方が割り当てられるという状況になってしまいます。
それを防ぐためには下記の様に「dhcp4:false」を設定した上で、固定IPアドレスの設定を入れる、ということが必要になります。
network:
version: 2
renderer: networkd
ethernets:
ens160:
dhcp4: false
addresses:
- 172.17.44.240/16
gateway4: 172.17.0.1
nameservers:
search: [adosakana.local]
addresses: [172.17.44.49]
また、ホスト名については、「hostnamectl」コマンドを使用します。(追加で/etc/hostsのエントリ修正も必要です)
まず「hostnamectl」を実行して現在の値を確認します。
osakanataro@ubuntu:~$ hostnamectl
Static hostname: ubuntu
Icon name: computer-vm
Chassis: vm
Machine ID: adcd0e151d91412581407a94fc19a4c5
Boot ID: 1ca98f3699d34707b58595e059708d0a
Virtualization: vmware
Operating System: Ubuntu 20.04 LTS
Kernel: Linux 5.4.0-29-generic
Architecture: x86-64
osakanataro@ubuntu:~$
ホスト名は「hostnamectl set-hostname 新しいホスト名」で設定します。
osakanataro@ubuntu:~$ sudo hostnamectl set-hostname ubuntu20
[sudo] password for osakanataro:
osakanataro@ubuntu:~$ hostnamectl
Static hostname: ubuntu20
Icon name: computer-vm
Chassis: vm
Machine ID: adcd0e151d91412581407a94fc19a4c5
Boot ID: 1ca98f3699d34707b58595e059708d0a
Virtualization: vmware
Operating System: Ubuntu 20.04 LTS
Kernel: Linux 5.4.0-29-generic
Architecture: x86-64
osakanataro@ubuntu:~$
なお、hostnamectlだけだと/etc/hostsの127.0.1.1に記載されているホスト名が書き換わらないので、こちらは手動で変更します。
2021/12/13追記
bondingとtag vlanを設定する場合
NIC 2個使ってLACP(802.3ad)を組んで、そこにタグでVLAN ID 139を作りたい場合、下記の様になる。
network:
version: 2
renderer: networkd
ethernets:
ens160:
dhcp4: false
optional: true
ens192:
dhcp4: false
optional: true
bonds:
bond1:
interfaces:
- ens160
- ens192
parameters:
mode: 802.3ad
transmit-hash-policy: layer3+4
mii-monitor-interval: 1
dhcp4: false
vlans:
vlan.139:
id: 139
link: bond1
dhcp4: false
addresses:
- 172.17.44.240/16
gateway4: 172.17.0.1
nameservers:
search: [adosakana.local]
addresses: [172.17.44.49]
リンク速度固定にしたい場合は「Ubuntu 20.04 でリンク速度固定をする」を参照のこと