NIC名確認、99-custom.yaml編集、netplan try→apply、再起動後の確認までをまとめる。
Ubuntu 24.04ではネットワーク設定は netplan が標準です。
本記事では 1枚NIC / CUI環境 を前提に、安全に固定IPを設定する手順を解説します。
まず、インターフェース名を確認します。
ip a
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default
link/ether 08:00:27:aa:bb:cc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.50/24 brd 192.168.1.255 scope global dynamic enp0s3
valid_lft 86000sec preferred_lft 86000sec
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
link/ether 08:00:27:dd:ee:ff brd ff:ff:ff:ff:ff:ff
4: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default
link/ether 3c:52:82:11:22:33 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.23/24 brd 10.0.0.255 scope global dynamic wlp2s0
valid_lft 7200sec preferred_lft 7200sec
inet6 fe80::3e52:82ff:fe11:2233/64 scope link
valid_lft forever preferred_lft forever
wifi:wlから始まる
有線LAN:en/ethから始まる
ループバック:loから始まる
本記事では enp0s3 を例に進めます。
/etc/netplan/ にある設定ファイルを確認します。
ls /etc/netplan/
多くの環境では以下が存在します。ここに新たな設定を追加することで固定ipアドレスの設定ができます。 試しに中を見てみてください。
cat /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
eth0:
match:
macaddress: "f3:1a:6e:cb:1b:6e"
addresses:
- "160.251.111.11/23"
- "2400:8500:1135:9203:160:251:237:22/64"
nameservers:
addresses:
- 150.95.10.8
- 150.95.10.9
- 2400:8500:8212:222:310:25:11:8
- 2400:8500:7703:502:150:95:10:9
accept-ra: false
set-name: "eth0"
mtu: 1500
routes:
- to: "0.0.0.0/0"
via: "160.251.111.1"
- to: "::/0"
via: "2400:8500:1135:9203::1"
network:
version: 2
ethernets:
eno1:
dhcp4: true
50-cloud-init.yamlをそのまま修正しても問題なく使えますが、非推奨です。 50-cloud-init.yamlは cloud-init により自動生成されるファイル です。 再起動や再プロビジョニング時に上書きされる可能性があるため、 新たにファイルを作成してください。
netplan内のyamlファイル名に2ルールがあります。
また、01~99まで数字の小さい順番に読み込まれていきます。文字だけでも読み込まれるが...
そのため、同じNIC(インターフェース名)が記入されている場合数字の大きい方が適用されます。
00-installer-config.yaml
01-netcfg.yaml
50-cloud-init.yaml
99-custom.yaml
仮に99-custom.yamlに全ての設定を記入した場合。00~98までの設定が無効になり、99-custom.yamlの設定が有効になる。
yamlファイルの構成例です。
sudo nano /etc/netplan/99-custom.yaml
network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
8.8.8.8や8.8.4.4はgoogleのDNSです、適切なaddressに置き換えてください。
インデントは スペース2つ。Tabは使用不可です。
sudo netplan get
エラーが出ず、yamlの設定情報だけ出力されれば構文エラーが無く動作します。
エラーが出た場合はインデントとNIC名を確認します。
Permissions for /etc/netplan/99-custom.yaml are too open. Netplan configuration should NOT be accessible by others.
root 以外が読める状態は禁止する必要があります。
sudo chmod 600 /etc/netplan/99-custom.yaml
Error in network definition: unknown key '...'
タイピング間違え unknown keyはたぶんタイピングの間違えです。
SSH切断事故を防ぐため、必ず先に実行します。
sudo netplan try
try は確認用です。永続化されません。
sudo netplan apply
これを実行して初めて、再起動後も設定が維持されます。
設定の確認をします。
sudo reboot
設定したipaddressになっているか?
ip a show enp0s3
192.168.1.100
ip route
default via 192.168.1.1 dev enp0s3
resolvectl status
ping 192.168.1.1 # ゲートウェイ
ping 8.8.8.8 # 外部IP
ping google.com # DNS確認
固定ip設定はnetplanを使用します。yaml形式での入力でありり少し間違えると動作しないのでnetplan setでも変更できるが結局何が一番一番いいのだろうか?