はじめに
IBM CloudのVPC上のVSIでIP aliasを恒久的に設定したいが、どうやって設定するのが良いかを調べてみた。
ifcfg-eth0には書いてはいけない
最近ではifcfg-eth0に書くことを薦めている記事が多いのだが、そもそもifcfg-eth0には以下のようなコメントが書かれてある。
[root@keepalived-1 ~]# head -1 /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
仮に、間違ってifcfg-eth0を削除してしまっても
絶対にやらないでください!
[root@keepalived-1 ~]# rm -rf /etc/sysconfig/network-scripts/ifcfg-eth0
[root@keepalived-1 ~]# reboot
これでも通信はできてしまう。つまり、ifcfg-eth0は実質上使われておらず、DHCPで構成されているので、こちらの設定ファイルに変更を入れても意味がない。
[root@keepalived-1 ~]# 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 pfifo_fast state UP group default qlen 1000
link/ether 02:00:18:02:70:58 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 297sec preferred_lft 297sec
inet6 fe80::18ff:fe02:7058/64 scope link
valid_lft forever preferred_lft forever
[root@keepalived-1 ~]# cat /var/lib/dhclient/dhclient--eth0.lease
(途中省略)
lease {
interface "eth0";
fixed-address 10.0.0.100;
option subnet-mask 255.255.255.0;
option routers 10.0.0.1;
option dhcp-lease-time 300;
option dhcp-message-type 5;
option dhcp-server-identifier 10.0.0.1;
option domain-name-servers 161.26.0.10,161.26.0.11;
renew 3 2020/11/25 08:11:20;
rebind 3 2020/11/25 08:13:39;
expire 3 2020/11/25 08:14:17;
}
解決方法1
DHCPを使っているので、こちらの方がスマートのように思える。
/etc/dhcp/dhclient.conf
alias {
interface "eth0";
fixed-address 192.168.10.10;
option subnet-mask 255.255.255.255;
}
[root@keepalived-1 ~]# dhclient -r eth0;dhclient eth0
[root@keepalived-1 ~]# 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 pfifo_fast state UP group default qlen 1000
link/ether 02:00:18:02:70:58 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 283sec preferred_lft 283sec
inet 192.168.10.10/32 brd 192.168.10.10 scope global eth0:0
valid_lft forever preferred_lft forever
inet6 fe80::18ff:fe02:7058/64 scope link
valid_lft forever preferred_lft forever
解決方法2
以下のようなファイルを作成する。
/etc/sysconfig/network-scripts/ifcfg-eth0_alias
BOOTPROTO=static
DEVICE=eth0:0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPADDR1=192.168.10.10
NETMASK1=255.255.255.255
ネットワークを再起動する。
[root@keepalived-1 ~]# systemctl restart network
[root@keepalived-1 ~]# 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 pfifo_fast state UP group default qlen 1000
link/ether 02:00:18:02:70:58 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.100/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 299sec preferred_lft 299sec
inet 192.168.10.10/32 brd 192.168.10.10 scope global eth0:0
valid_lft forever preferred_lft forever
inet6 fe80::18ff:fe02:7058/64 scope link
valid_lft forever preferred_lft forever