2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSI for VPCのNetwork設定を追いかけてみた

2
Last updated at Posted at 2025-12-22

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を実行させれば良いので、

  1. Boot Diskのauto-deleteを無効にする
    image.png
  2. サーバーを削除
  3. Boot Diskから再度サーバーをプロビジョニングする
    • image.png
    • image.png

とやれば良い。そうすれば、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
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?