1. はじめに
以下は、VSI for VPCのNW設定である。
[root@syasuda-nwtest1 ~]# 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 02:00:50:6d:95:c9 brd ff:ff:ff:ff:ff:ff
altname enp0s3
altname ens3
inet 10.50.0.79/24 brd 10.50.0.255 scope global dynamic noprefixroute eth0
valid_lft 359sec preferred_lft 359sec
inet6 fe80::50ff:fe6d:95c9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
これを見るといくつか疑問になることがある。
- eth0という名称になっている(enp1s0のようなpredictable interface nameになっていない)
- DHCPでIPが取得されている(dynamic)という設定が付いている。どこでDHCPが構成されているのか?
以下で試していきたいと思う
2. eth0という名称になっている理由
predictable interface namingが無効になっていた。
net.ifnames=0 biosdevname=0が設定されており、predictable interface naming が無効化されている。
[root@syasuda-nwtest1 ~]# cat /proc/cmdline
BOOT_IMAGE=(hd0,gpt3)/boot/vmlinuz-5.14.0-635.el9.x86_64 root=UUID=92b13a14-6027-4bfc-b6d6-6360aab2b1b6 ro net.ifnames=0 biosdevname=0 vga=normal console=tty1 console=ttyS0 crashkernel=1G-2G:192M,2G-64G:256M,64G-:512M
net.ifnames=0 biosdevname=0が設定されており、predictable interface naming が無効化されている。
[root@syasuda-nwtest1 ~]# cat /etc/default/grub
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console serial"
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
GRUB_CMDLINE_LINUX_DEFAULT="vga=normal console=tty1 console=ttyS0"
GRUB_SERIAL_COMMAND="serial --speed=38500 --unit=0 --word=8 --parity=no --stop=1"
3. DHCPが使われている理由
NetworkManagerのpersistent設定は使われていない。また、runtime connectionも利用していない。
[root@syasuda-nwtest1 ~]# ls -l /etc/NetworkManager/system-connections/
total 0
[root@syasuda-nwtest1 ~]# ls -l /var/run/NetworkManager/system-connections/
total 4
-rw-------. 1 root root 296 Dec 22 02:21 lo.nmconnection
/etc/sysconfig/network-scripts/ifcfg-eth0が使われていた!
[root@syasuda-nwtest1 ~]# nmcli -f NAME,UUID,TYPE,AUTOCONNECT,AUTOCONNECT-PRIORITY,ACTIVE,DEVICE,STATE,FILENAME con
NAME UUID TYPE AUTOCONNECT AUTOCONNECT-PRIORITY ACTIVE DEVICE STATE FILENAME
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet yes 120 yes eth0 activated /etc/sysconfig/network-scripts/ifcfg-eth0
lo 025e5122-21aa-4729-9966-1ee9b379866c loopback yes 0 yes lo activated /run/NetworkManager/system-connections/lo.nmconnection
ifcfg-eth0はcloud-initによって自動生成されていた。
[root@syasuda-nwtest1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init automatically, do not edit.
#
AUTOCONNECT_PRIORITY=120
BOOTPROTO=dhcp
DEVICE=eth0
DHCPV6C=yes
HWADDR=02:00:50:6d:95:c9
IPV6INIT=yes
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
cloud-initのログやNetwork Managerのログからも把握できる
[root@syasuda-nwtest1 ~]# grep -i -e sysconfig -e ifcfg /var/log/cloud-init.log
2025-12-22 02:21:57,471 - distros[DEBUG]: Selected renderer 'sysconfig' from priority list: ['sysconfig', 'eni', 'netplan', 'network-manager', 'networkd']
2025-12-22 02:21:57,475 - util.py[DEBUG]: Writing to /etc/sysconfig/network-scripts/ifcfg-eth0 - wb: [644] 192 bytes
2025-12-22 02:21:57,477 - util.py[DEBUG]: Restoring selinux mode for /etc/sysconfig/network-scripts/ifcfg-eth0 (recursive=False)
2025-12-22 02:21:57,477 - util.py[DEBUG]: Restoring selinux mode for /etc/sysconfig/network-scripts/ifcfg-eth0 (recursive=False)
2025-12-22 02:21:57,479 - util.py[DEBUG]: Reading from /etc/sysconfig/network (quiet=False)
2025-12-22 02:21:57,480 - util.py[DEBUG]: Reading 129 bytes from /etc/sysconfig/network
2025-12-22 02:21:57,480 - util.py[DEBUG]: Writing to /etc/sysconfig/network - wb: [644] 129 bytes
2025-12-22 02:21:57,482 - util.py[DEBUG]: Restoring selinux mode for /etc/sysconfig/network (recursive=False)
2025-12-22 02:21:57,482 - util.py[DEBUG]: Restoring selinux mode for /etc/sysconfig/network (recursive=False)
[root@syasuda-nwtest1 ~]# journalctl -u NetworkManager | grep -e sysconfig -e ifcfg
Dec 22 02:21:57 syasuda-nwtest1 NetworkManager[679]: <info> [1766370117.6464] settings: Loaded settings plugin: ifcfg-rh ("/usr/lib64/NetworkManager/1.54.1-1.el9/libnm-settings-plugin-ifcfg-rh.so")
Dec 22 02:21:57 syasuda-nwtest1 NetworkManager[679]: <info> [1766370117.6488] Warning: the ifcfg-rh plugin is deprecated, please migrate connections to the keyfile format using "nmcli connection migrate"
実際に、cloud-initの設定にてrendererとしてsysconfigを優先設定している。
# cat /etc/cloud/cloud.cfg |grep -A 10 network
network:
renderers: ['sysconfig', 'eni', 'netplan', 'network-manager', 'networkd' ]
4. ifcfg-eth0を削除してみた
ifcfg-eth0を削除して再起動
[root@syasuda-nwtest1 ~]# rm -f /etc/sysconfig/network-scripts/ifcfg-eth0
[root@syasuda-nwtest1 ~]# reboot
しかし、再起動しても接続できる。
[root@syasuda-nwtest1 ~]# 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 02:00:50:6d:95:c9 brd ff:ff:ff:ff:ff:ff
altname enp0s3
altname ens3
inet 10.50.0.79/24 brd 10.50.0.255 scope global dynamic noprefixroute eth0
valid_lft 314sec preferred_lft 314sec
inet6 fe80::3ea7:833:fbf4:b7d4/64 scope link noprefixroute
valid_lft forever preferred_lft forever
今度はWired connection 1というプロファイルがNetwork Managerによって自動生成されている
[root@syasuda-nwtest1 ~]# ls -l /etc/NetworkManager/system-connections/
total 0
[root@syasuda-nwtest1 ~]# ls -l /var/run/NetworkManager/system-connections/
total 8
-rw-------. 1 root root 296 Dec 22 02:54 lo.nmconnection
-rw-------. 1 root root 270 Dec 22 02:54 'Wired connection 1.nmconnection'
[root@syasuda-nwtest1 ~]# nmcli -f NAME,UUID,TYPE,AUTOCONNECT,AUTOCONNECT-PRIORITY,ACTIVE,DEVICE,STATE,FILENAME con
NAME UUID TYPE AUTOCONNECT AUTOCONNECT-PRIORITY ACTIVE DEVICE STATE FILENAME
Wired connection 1 0eca011f-cb13-33e0-a93b-2aeaf15136e2 ethernet yes -999 yes eth0 activated /run/NetworkManager/system-connections/Wired connection 1.nmconnection
lo 7d35fd36-9637-4e4a-a2a4-598df3855d7d loopback yes 0 yes lo activated /run/NetworkManager/system-connections/lo.nmconnection
5. Network Managerを無効にしてみた
Network Managerを無効にして再起動
[root@syasuda-nwtest1 ~]# systemctl disable NetworkManager
Removed "/etc/systemd/system/multi-user.target.wants/NetworkManager.service".
Removed "/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service".
Removed "/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service".
[root@syasuda-nwtest1 ~]# systemctl mask NetworkManager
Created symlink /etc/systemd/system/NetworkManager.service → /dev/null.
[root@syasuda-nwtest1 ~]# reboot
これで再起動しても接続可能だった!
[root@syasuda-nwtest1 ~]# 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 02:00:50:6d:95:c9 brd ff:ff:ff:ff:ff:ff
altname enp0s3
altname ens3
inet 10.50.0.79/24 brd 10.50.0.255 scope global dynamic eth0
valid_lft 315sec preferred_lft 315sec
inet6 fe80::50ff:fe6d:95c9/64 scope link
valid_lft forever preferred_lft forever
[root@syasuda-nwtest1 ~]# ls -l /etc/sysconfig/network-scripts/ifcfg-eth0
ls: cannot access '/etc/sysconfig/network-scripts/ifcfg-eth0': No such file or directory
[root@syasuda-nwtest1 ~]# nmcli con show
Error: NetworkManager is not running.
なぜだろうと思うと、実はdhclientが稼働している。
dhclient
[root@syasuda-nwtest1 ~]# ps -ef | grep dhclient
root 1123 1 0 03:04 ? 00:00:00 dhclient
root 1298 1251 0 03:05 pts/0 00:00:00 grep --color=auto dhclient
cloud-initがdhclientを起動するべく自動スクリプトを生成している
[root@syasuda-nwtest1 ~]# lsblk -pf
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
/dev/vda
├─/dev/vda1
├─/dev/vda2 vfat FAT16 EFI 7898-675F 92.8M 7% /boot/efi
└─/dev/vda3 xfs ROOT 92b13a14-6027-4bfc-b6d6-6360aab2b1b6 97.4G 2% /
/dev/vdb iso9660 Joliet Extension cidata 2025-12-22-02-21-14-00
/dev/vdc swap 1 SWAP-xvdb1 51602279-e115-43d8-af3b-d798051b99fd
[root@syasuda-nwtest1 ~]# mkdir /work
[root@syasuda-nwtest1 ~]# mount /dev/vdb /work
mount: /work: WARNING: source write-protected, mounted read-only.
[root@syasuda-nwtest1 ~]# ls -l /work/
total 3
-rw-r-----. 1 root root 87 Dec 22 02:21 meta-data
-rw-r-----. 1 root root 0 Dec 22 02:21 user-data
-rw-r-----. 1 root root 2241 Dec 22 02:21 vendor-data
[root@syasuda-nwtest1 ~]# cat /work/meta-data
instance-id: 02e7_7efd9398-bdd3-4c3d-b00a-a94998b7beff
local-hostname: syasuda-nwtest1
[root@syasuda-nwtest1 ~]# cat /work/user-data
[root@syasuda-nwtest1 ~]# cat /work/vendor-data
Content-Type: multipart/form-data; boundary=3efa30189c9e0e8ebc24a4decbbf4c2be7b26120c1cdd7cb7bc2ecb0c07c
MIME-Version: 1.0
--3efa30189c9e0e8ebc24a4decbbf4c2be7b26120c1cdd7cb7bc2ecb0c07c
Content-Type: text/cloud-config
#cloud-config
disable_root: false
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCxTwmQBzJIiKA1uSHmzDS+ZdK05KBMkUECcEAyBQYXIMSF6M3HAw7e+m5GrB/mqW0peeDZMKWMnNLo5xBGunTxkoKp1S4bIVOvoahiQATsmIFJM1xf6DsKl4tcDhaRnkR9z9Q40qJUn5hk32K8vBMZku2DEnWTv2PzgRls7Vjaq/qGhBUfIgfkkzVu3I8v4AANFflWd3STNOYh75LAxqNBRypODDlbq0bUi9fB8PMfLJ0K7JsHPcCemCanL8bz2Tiw0f05KotUWen17Inu+f4lIu+xg+VV1nEiHVuHp4ugMXiWQtWXoyLXwrGutTEn+kl81DOgxbKGaCVifMnnK5BgzNTM9+u1/rWk2vsxVnS33M833n50lT1u0LeRQq4Fn3GAlZ916uoPvGP0pRS7YkFlDXv86v5rdMvPHpULmkr7BRX3+rR4Xt8DEvk1A3DijbzXSK/2BF5RENk6XhR86EtdYO8Ry+8qthGoaT3hAQR5ilnXsFCviq5biP+kw6hGB9cmVOMiybsRUGhqWU5rp6T4IdH1a8lmr1rj+2xTE4mFQmdUHKrPmEnxf37DL2MAAfxzlWu99Gezh825bqGr/5r4pefJ+vWGmwrpho9y9gToOHifavgB87Y7GcojQ9pKS3Wv4xs+7VdQThA6orTFH06jyZIZEe2mAXx1P30Rs+sy8w==
users:
- default
- name: root
lock-passwd: false
ssh_pwauth: true
--3efa30189c9e0e8ebc24a4decbbf4c2be7b26120c1cdd7cb7bc2ecb0c07c
Content-Type: text/x-shellscript
#!/bin/bash
usermod -p '*' root
--3efa30189c9e0e8ebc24a4decbbf4c2be7b26120c1cdd7cb7bc2ecb0c07c
Content-Type: text/x-shellscript
#!/bin/bash
PER_BOOT_SCRIPTS_DIR=/var/lib/cloud/scripts/per-boot
IFACE_CONFIG_PATH=$PER_BOOT_SCRIPTS_DIR/iface-config
mkdir -p $PER_BOOT_SCRIPTS_DIR
cat << EOT > $IFACE_CONFIG_PATH
#!/bin/bash
for iface in \$(ip -br link show | cut -d ' ' -f1 | sed '/^lo\$/d')
do
if [ -x "\$(command -v ethtool)" ]; then
CPU_COUNT=`getconf _NPROCESSORS_ONLN`
if [ "\$CPU_COUNT" -gt 15 ]; then
QUEUE_COUNT=7
elif [ "\$CPU_COUNT" -gt 7 ]; then
QUEUE_COUNT=5
elif [ "\$CPU_COUNT" -gt 2 ]; then
QUEUE_COUNT=3
else
QUEUE_COUNT=1
fi
ethtool -L \$iface combined \$QUEUE_COUNT
fi
ip link set \$iface up
done
dhclient > /dev/null 2>&1 || true # prevents exit code 1 when dhclient is already running
EOT
chmod +x $IFACE_CONFIG_PATH
$IFACE_CONFIG_PATH
--3efa30189c9e0e8ebc24a4decbbf4c2be7b26120c1cdd7cb7bc2ecb0c07c--
cloud-initがサーバー起動の度に(per-boot)、iface-configというスクリプトを実行している
[root@syasuda-nwtest1 ~]# ls -l /var/lib/cloud/scripts/per-boot
total 4
-rwxr-xr-x. 1 root root 574 Dec 22 02:21 iface-config
[root@syasuda-nwtest1 ~]# cat /var/lib/cloud/scripts/per-boot/iface-config
#!/bin/bash
for iface in $(ip -br link show | cut -d ' ' -f1 | sed '/^lo$/d')
do
if [ -x "$(command -v ethtool)" ]; then
CPU_COUNT=4
if [ "$CPU_COUNT" -gt 15 ]; then
QUEUE_COUNT=7
elif [ "$CPU_COUNT" -gt 7 ]; then
QUEUE_COUNT=5
elif [ "$CPU_COUNT" -gt 2 ]; then
QUEUE_COUNT=3
else
QUEUE_COUNT=1
fi
ethtool -L $iface combined $QUEUE_COUNT
fi
ip link set $iface up
done
dhclient > /dev/null 2>&1 || true # prevents exit code 1 when dhclient is already running
きっとNetwork Managerに対応しない古いOSとかでも動くようにdhclientが構成されているのかなと思ってます。
6. iface-configも削除してみた
[root@syasuda-nwtest1 ~]# rm -f /var/lib/cloud/scripts/per-boot/iface-config
[root@syasuda-nwtest1 ~]# reboot
流石にこれで接続できなくなった。
7. cloud-initを再実行してアクセスを復活させる。
もう一度アクセスできるようにするためには、再度cloud-initを実行させれば良いので、
とやれば良い。そうすれば、Network Managerは無効になったままだが、少なくともcloud-initによってdhclientは実行されることになる。
[root@syasuda-nwtest1 ~]# 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 02:00:52:6d:95:c9 brd ff:ff:ff:ff:ff:ff
altname enp0s3
altname ens3
inet 10.50.0.79/24 brd 10.50.0.255 scope global dynamic eth0
valid_lft 242sec preferred_lft 242sec
inet6 fe80::52ff:fe6d:95c9/64 scope link
valid_lft forever preferred_lft forever
[root@syasuda-nwtest1 ~]# nmcli con show
Error: NetworkManager is not running.
[root@syasuda-nwtest1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init automatically, do not edit.
#
AUTOCONNECT_PRIORITY=120
BOOTPROTO=dhcp
DEVICE=eth0
DHCPV6C=yes
HWADDR=02:00:52:6d:95:c9
IPV6INIT=yes
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
[root@syasuda-nwtest1 ~]# ps -ef|grep dhclient
root 1169 1 0 03:45 ? 00:00:00 dhclient
root 1320 1282 0 03:46 pts/0 00:00:00 grep --color=auto dhclient
[root@syasuda-nwtest1 ~]# cat /var/lib/cloud/scripts/per-boot/iface-config
#!/bin/bash
for iface in $(ip -br link show | cut -d ' ' -f1 | sed '/^lo$/d')
do
if [ -x "$(command -v ethtool)" ]; then
CPU_COUNT=4
if [ "$CPU_COUNT" -gt 15 ]; then
QUEUE_COUNT=7
elif [ "$CPU_COUNT" -gt 7 ]; then
QUEUE_COUNT=5
elif [ "$CPU_COUNT" -gt 2 ]; then
QUEUE_COUNT=3
else
QUEUE_COUNT=1
fi
ethtool -L $iface combined $QUEUE_COUNT
fi
ip link set $iface up
done
dhclient > /dev/null 2>&1 || true # prevents exit code 1 when dhclient is already running


