Red Hat Linux7.5のネットワーク設定でちょっとハマった話
こんにちは、坂巻です。
Red Hat Linux7.5(以下、RHEL)にセカンダリプライベートIPを付与したのですが、
OSがIPアドレスを認識せず、応答がない事象でちょっとハマりました。
自身で経験したケースをメモとして残しておきます。
やりたい事
ENI(EC2の仮想NIC)にセカンダリプライベートIPを設定したい。
ハマった事
以下のように、ENIにセカンダリプライベートIPを追加しました。
プライベートIPに関連付けしたEIPは応答するのに対し、
セカンダリプライベートIPに関連付けしたEIPが応答しませんでした。
1 2 3 4 5 6 7 8 9 10 11 | $ ping 13.230.74.42 PING 13.230.74.42 (13.230.74.42): 56 data bytes 64 bytes from 13.230.74.42: icmp_seq=0 ttl=48 time =12.332 ms 64 bytes from 13.230.74.42: icmp_seq=1 ttl=48 time =9.719 ms 64 bytes from 13.230.74.42: icmp_seq=2 ttl=48 time =10.338 ms (略) $ ping 13.114.35.61 PING 13.114.35.61 (13.114.35.61): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 |
OSにログインしネットワークの設定を確認してみると、
セカンダリプライベートIPがOSから認識されていませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ ip addr 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 9001 qdisc pfifo_fast state UP group default qlen 1000 link /ether 06:98:78:6c:86:88 brd ff:ff:ff:ff:ff:ff inet 172.16.0.151 /24 brd 172.16.0.255 scope global noprefixroute dynamic eth0 valid_lft 2874sec preferred_lft 2874sec inet6 fe80::498:78ff:fe6c:8688 /64 scope link valid_lft forever preferred_lft forever |
原因
結論からいうと、Amazon Linux以外のディストリビューションの場合、
セカンダリプライベートIPを認識させるにはOS側で設定が必要でした。
Amazon LinuxでセカンダリプライベートIPを使用している時は、
ec2-net-utils
が自動でIPアドレスを付与してくれています。
セカンダリプライベート IPv4 アドレスを認識するようにインスタンスのオペレーティングシステムを設定する
解決策
RHELのマニュアルより、OS側での設定方法を確認しました。
たとえば、ifcfg ファイルを使って eth0 という名前のインターフェースを静的ネットワークで設定するには、/etc/sysconfig/network-scripts/ ディレクトリー内に以下のような内容で ifcfg-eth0 という名前のファイルを作成します。
セカンダリプライベートIPを認識させるために、
/etc/sysconfig/network-scripts/eth0:0
ファイルを作成しました。
こんな感じです。
1 2 3 4 5 6 | DEVICE=eth0:0 BOOTPROTO=none ONBOOT= yes TYPE=Ethernet IPADDR=172.16.0.57 NETMASK=255.255.255.0 |
IPADDR
にはセカンダリプライベートIPを設定しています。
ファイルを作成したら、ネットワークサービスを再起動します。
1 2 | $ sudo service network restart Restarting network (via systemctl): [ OK ] |
再度ネットワークの状態を確認すると、OSから認識していることがわかります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ ip addr 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 9001 qdisc pfifo_fast state UP group default qlen 1000 link /ether 06:98:78:6c:86:88 brd ff:ff:ff:ff:ff:ff inet 172.16.0.151 /24 brd 172.16.0.255 scope global noprefixroute dynamic eth0 valid_lft 3599sec preferred_lft 3599sec inet 172.16.0.57 /16 brd 172.16.255.255 scope global noprefixroute eth0:0 valid_lft forever preferred_lft forever inet6 fe80::498:78ff:fe6c:8688 /64 scope link tentative valid_lft forever preferred_lft forever |
ちゃんと応答もします。
1 2 3 4 5 | $ ping 13.114.35.61 PING 13.114.35.61 (13.114.35.61): 56 data bytes 64 bytes from 13.114.35.61: icmp_seq=0 ttl=47 time =10.037 ms 64 bytes from 13.114.35.61: icmp_seq=1 ttl=47 time =9.530 ms 64 bytes from 13.114.35.61: icmp_seq=2 ttl=47 time =8.019 ms |
まとめ
Amazon Linux以外のディストリビューションで、セカンダリプライベートIPを利用する際は、
OS側での設定が必要なことを覚えておくと良さそうです。
ちなみに、各インスタンスタイプによって、ENIに付与できるIPアドレス数も限られているので、
こちらも頭の片隅に入れておくと良いかもしれません。