ubuntuのネットワーク関連でハマったのでメモ
- とあるシステムで使用したOVAのネットワーク設定でハマってしまったのでメモ。
経緯
- てっきりcentosで用意されているものだと思い込み、
nmcli
で固定IPを設定してしまったのがはじまり。
- static routeを設定しようと、今の設定を確認するためにNetPlanのyamlを覗くと固定IPの設定がない・・・
- なぜ!?
- この時、そもそもNetPlanの理解が浅かった。(nmcliで設定した内容がファイルとかに吐き出される、程度の理解)
- ということで、まずは、NetPlan is 何?
NetPlan is 何?
- ネットワークの設定ツールをymlで設定できる。
- インストーラーで指定したネットワーク設定をNetplanの設定として書き出し、インストール後も引き継ぐという仕様になっている。
- つまり、複数のネットワークツールがあるものを、共通のフォーマットで使えるやつ、と理解した。
- では、nmcliで設定した内容はどうなるの?
nmcli is 何?
- nmcli は NetworkManager に含まれるツールの一つです
- つまり、nmcliでは、NetworkManagerの設定がされていた。
- ちなみにUbuntu 17.10からsystemd-networkdが標準装備。でも、該当のOVAではNetworkManagerを指定していた。(ゆえにnmcliで設定できた。)
実際にubuntu 22.04をデプロイして見てみる。
root@ttmp:~# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
dhcp4: true
ens192:
dhcp4: true
version: 2
root@ttmp:~#
root@ttmp:~# nmcli
-bash: nmcli: command not found
root@ttmp:~#
- さらにちなみにsystemd-networkdはせっせと動いている。
root@ttmp:~# systemctl status systemd-networkd
● systemd-networkd.service - Network Configuration
Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-02-26 13:53:15 UTC; 10min ago
TriggeredBy: ● systemd-networkd.socket
Docs: man:systemd-networkd.service(8)
Main PID: 655 (systemd-network)
Status: "Processing requests..."
Tasks: 1 (limit: 4558)
Memory: 2.7M
CPU: 41ms
CGroup: /system.slice/systemd-networkd.service
└─655 /lib/systemd/systemd-networkd
Feb 26 13:53:15 ttmp systemd-networkd[655]: lo: Gained carrier
Feb 26 13:53:15 ttmp systemd-networkd[655]: Enumeration completed
Feb 26 13:53:15 ttmp systemd[1]: Started Network Configuration.
Feb 26 13:53:15 ttmp systemd-networkd[655]: ens192: Link UP
Feb 26 13:53:15 ttmp systemd-networkd[655]: ens192: Gained carrier
Feb 26 13:53:15 ttmp systemd-networkd[655]: ens160: Link UP
Feb 26 13:53:15 ttmp systemd-networkd[655]: ens160: Gained carrier
Feb 26 13:53:15 ttmp systemd-networkd[655]: ens160: DHCPv4 address 192.168.11.13/24 via 192.168.11.1
Feb 26 13:53:16 ttmp systemd-networkd[655]: ens192: Gained IPv6LL
Feb 26 13:53:16 ttmp systemd-networkd[655]: ens160: Gained IPv6LL
root@ttmp:~#
- 同じ状況を再現するために、network-managerをインストールする。
apt install network-manager
- インストールするだけではnetwork-managerでは管理してくれない。デバイスのステータスがunmanagedとなっている。
root@ttmp:~# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet unmanaged --
ens192 ethernet unmanaged --
lo loopback unmanaged --
root@ttmp:~#
- ちなみにインストールで
/etc/NetworkManager
配下にいろいろと作成された。
root@ttmp:~# ll /etc/NetworkManager
total 32
drwxr-xr-x 7 root root 4096 Feb 26 14:09 ./
drwxr-xr-x 87 root root 4096 Feb 26 14:09 ../
-rw-r--r-- 1 root root 98 Jun 9 2022 NetworkManager.conf
drwxr-xr-x 2 root root 4096 Feb 26 14:09 conf.d/
drwxr-xr-x 5 root root 4096 Feb 26 14:09 dispatcher.d/
drwxr-xr-x 2 root root 4096 Jun 9 2022 dnsmasq-shared.d/
drwxr-xr-x 2 root root 4096 Jun 9 2022 dnsmasq.d/
drwxr-xr-x 2 root root 4096 Jun 9 2022 system-connections/
root@ttmp:~#
- network managerを使うにはnetplanの設定ファイルに
renderer: NetworkManager
と記述するだけで良い模様。
root@ttmp:~# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
version: 2
renderer: NetworkManager
ethernets:
ens160:
dhcp4: true
ens192:
dhcp4: true
version: 2
root@ttmp:~#
root@ttmp:~# netplan apply
WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.
root@ttmp:~#
root@ttmp:~# nmcli
ens160: connected to netplan-ens160
"VMware VMXNET3"
ethernet (vmxnet3), 00:0C:29:D1:6E:72, hw, mtu 1500
ip4 default
inet4 192.168.11.13/24
route4 192.168.11.0/24 metric 100
route4 default via 192.168.11.1 metric 100
inet6 fe80::20c:29ff:fed1:6e72/64
route6 fe80::/64 metric 256
ens192: connecting (getting IP configuration) to netplan-ens192
"VMware VMXNET3"
ethernet (vmxnet3), 00:0C:29:D1:6E:7C, hw, mtu 1500
lo: unmanaged
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
DNS configuration:
servers: 192.168.11.1
interface: ens160
Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview on active connection profiles.
Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.
root@ttmp:~#
root@ttmp:~# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected netplan-ens160
ens192 ethernet connecting (getting IP configuration) netplan-ens192
lo loopback unmanaged --
root@ttmp:~#
root@ttmp:~# nmcli connection show
NAME UUID TYPE DEVICE
netplan-ens160 febc54dc-e29c-3939-a911-8a11855bd1c8 ethernet ens160
netplan-ens192 bc9a68c9-4f66-3ff4-b4b3-cf1b373d9b02 ethernet --
root@ttmp:~#
nmcli connection modify netplan-ens192 ipv4.address 192.168.0.10/24
root@ttmp:~# nmcli device show ens192
GENERAL.DEVICE: ens192
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:D1:6E:7C
GENERAL.MTU: 1500
GENERAL.STATE: 70 (connecting (getting IP configuration))
GENERAL.CONNECTION: netplan-ens192
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.0.10/24
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt = 101
IP6.ADDRESS[1]: fe80::20c:29ff:fed1:6e7c/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
root@ttmp:~#
root@ttmp:~# 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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:d1:6e:72 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.11.13/24 brd 192.168.11.255 scope global dynamic noprefixroute ens160
valid_lft 172443sec preferred_lft 172443sec
inet6 fe80::20c:29ff:fed1:6e72/64 scope link
valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:d1:6e:7c brd ff:ff:ff:ff:ff:ff
altname enp11s0
inet 192.168.0.10/24 brd 192.168.0.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed1:6e7c/64 scope link
valid_lft forever preferred_lft forever
root@ttmp:~#
root@ttmp:~# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
version: 2
renderer: NetworkManager
ethernets:
ens160:
dhcp4: true
ens192:
dhcp4: true
version: 2
root@ttmp:~#
netplanとどっちが優先されるのだろう?
root@ttmp:~# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
version: 2
renderer: NetworkManager
ethernets:
ens160:
dhcp4: true
ens192:
dhcp4: false
addresses: [192.168.0.30/24]
version: 2
root@ttmp:~#
root@ttmp:~# netplan apply
root@ttmp:~#
root@ttmp:~# 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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:d1:6e:72 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.11.13/24 brd 192.168.11.255 scope global dynamic noprefixroute ens160
valid_lft 172784sec preferred_lft 172784sec
inet6 fe80::20c:29ff:fed1:6e72/64 scope link
valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:d1:6e:7c brd ff:ff:ff:ff:ff:ff
altname enp11s0
inet 192.168.0.30/24 brd 192.168.0.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed1:6e7c/64 scope link
valid_lft forever preferred_lft forever
root@ttmp:~#
root@ttmp:~# nmcli device show ens192
GENERAL.DEVICE: ens192
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:D1:6E:7C
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: netplan-ens192
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.0.30/24
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt = 101
IP6.ADDRESS[1]: fe80::20c:29ff:fed1:6e7c/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256
root@ttmp:~#
教訓とか
- 設定と環境はちゃんと確認しようという話。OSのネットワーク関連は知識が微妙だったがこれにて深まったので、わりと良かったかも。