Ubuntu 20.04 デスクトップ版で有線 LAN 使用時の固定 IP アドレス設定方法
前書き
中古で買ったレッツノートに Ubuntu 20.04 デスクトップ版をインストールし、サブパソコンちっくに使用している。
このレッツノート (CF-LX5) は Wi-Fi が使えるノートパソコンだけど、僕は都合により有線 LAN で使いたいという状況です。
しかし、Wi-Fi 接続は簡単にできるものの有線 LAN (USB-LAN アダプターは使わずノート PC 本体に具備されている LAN ポートを使います) だとうまく接続できないことに気がついた。あれこれ試した結果、うまく機能した方法を備忘録として書き残しておこうと思う。
/etc/os-release 実行結果を載せておきます。
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
$
そもそも
Ubuntu 20.04 のサーバー版は netplan を使ってネットワーク設定を行うもの。Ubuntu 20.04 のデスクトップ版は NetworkManager を使ってネットワーク接続を行うもの。という大まかな理解をしています。
この理解が正しいかどうか、正直怪しいのですが、netplan を使う場合は NetworkManager は使えない (逆もまた然り) と捉えていました。このあたり、いつか整理したいのですが、、、あれこれ試して推測含みでわかったことと実際に設定した内容を以下に記していきます。
[結論] NetworkManager の管理下になっていなかったらしい
最初に、うまく設定できたあとの ip a コマンド実行結果をお見せします。
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether a8:13:74:95:10:77 brd ff:ff:ff:ff:ff:ff
inet 172.16.2.21/24 brd 172.16.2.255 scope global noprefixroute enp0s31f6
valid_lft forever preferred_lft forever
inet6 fe80::aa13:74ff:fe95:1077/64 scope link
valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether f4:96:34:33:38:62 brd ff:ff:ff:ff:ff:ff
$
上記の 2 の enp0s31f6 というインターフェイスが有線 LAN 接続用の NIC です。上記では 172.16.2.21 という IP アドレスが設定されていますが、これがうまく行かなかったのです。
いろいろ試行錯誤したあとの雑感としては、enp0s31f6 という NIC が NetworkManager で管理するように設定されていなかったため、enp0s31f6 に設定がされず NIC が死んでいるかのよう (ip a コマンド実行結果で DOWN と表示される) になっていたのだと思います。
なので最初に確認すべきポイントは有線 LAN の NIC が NetworkManager で管理されているかどうか確認をすることです。そのコマンドが nmcli device です。
$ nmcli device
DEVICE TYPE STATE CONNECTION
enp0s31f6 ethernet 接続済み netplan-enp0s31f6
wlp2s0 wifi 利用不可 --
lo loopback 管理無し --
$
上記の nmcli device 実行結果は、有線 LAN の NIC 設定がうまく行ったあとのものです。NetworkManager で管理されていないときは、enp0s31f6 は [管理無し] の表示だったと記憶しています。
このため、やることとしては enp0s31f6 を NetworkManger 管理対象にすること、プラス enp0s31f6 に設定する固定 IP アドレスを定義することでした。
有線 LAN の NIC を NetworkManager の管理対象にする設定
この設定内容が自分の頭でもまだ整理できていない部分です。
やることは、/etc/netplan ディレクトリに 99_config.yaml ファイルを作る (ファイル名は違っていても機能するとは思う) だけです。
$ cat 99_config.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s31f6:
dhcp4: false
addresses:
- 172.16.2.21/24
gateway4: 172.16.2.254
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
$
これが設定ファイルの中身そのまんまです。
renderer: NetworkManger
が、NetworkManager 管理下に置くという定義であり、
それ以外が固定 IP アドレスの設定内容 (デフォゲや DNS 設定も含む) という形だと思う。
netplan の設定ファイルを使って NetworkManger 管理下に置く指定をする、という部分がよくわかっていなかったところです。
このように 99_config.yaml を作り、Ubuntu を再起動するとちゃんと NIC が機能するようになるを確認できたというわけです。
ちなみに参考として /etc/netplan ディレクトリにはもう 1 つファイル (01-network-manager-all.yaml) があるので、その内容も残しておきます。
$ pwd /etc/netplan $ ls -l 合計 8 -rw-r--r-- 1 root root 104 8月 19 2021 01-network-manager-all.yaml -rw-r--r-- 1 root root 239 8月 28 20:11 99_config.yaml $ cat 01-network-manager-all.yaml # Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager $
たぶん、このファイル (01-network-manager-all.yaml) は、NetworkManager で NIC 設定を管理するのがデフォルトです、みたいな宣言だと思うんですが、このファイルにプラスして 99_config.yaml が必要でした、というオチでした。
固定 IP アドレスでなくても
今回は固定 IP アドレスにしたかったのでその内容をご紹介しましたが、99_config.yaml の書き方を DHCP サーバーから IP を貰う形に変えれば、有線 LAN の NIC に動的 IP アドレスを設定する方法にも応用ができます。