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.42PING 13.230.74.42 (13.230.74.42): 56 data bytes64 bytes from 13.230.74.42: icmp_seq=0 ttl=48 time=12.332 ms64 bytes from 13.230.74.42: icmp_seq=1 ttl=48 time=9.719 ms64 bytes from 13.230.74.42: icmp_seq=2 ttl=48 time=10.338 ms(略)$ ping 13.114.35.61PING 13.114.35.61 (13.114.35.61): 56 data bytesRequest timeout for icmp_seq 0Request timeout for icmp_seq 1Request timeout for icmp_seq 2 |
OSにログインしネットワークの設定を確認してみると、
セカンダリプライベートIPがOSから認識されていませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ ip addr1: 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 forever2: 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:0BOOTPROTO=noneONBOOT=yesTYPE=EthernetIPADDR=172.16.0.57NETMASK=255.255.255.0 |
IPADDRにはセカンダリプライベートIPを設定しています。
ファイルを作成したら、ネットワークサービスを再起動します。
1 2 | $ sudo service network restartRestarting network (via systemctl): [ OK ] |
再度ネットワークの状態を確認すると、OSから認識していることがわかります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ ip addr1: 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 forever2: 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.61PING 13.114.35.61 (13.114.35.61): 56 data bytes64 bytes from 13.114.35.61: icmp_seq=0 ttl=47 time=10.037 ms64 bytes from 13.114.35.61: icmp_seq=1 ttl=47 time=9.530 ms64 bytes from 13.114.35.61: icmp_seq=2 ttl=47 time=8.019 ms |
まとめ
Amazon Linux以外のディストリビューションで、セカンダリプライベートIPを利用する際は、
OS側での設定が必要なことを覚えておくと良さそうです。
ちなみに、各インスタンスタイプによって、ENIに付与できるIPアドレス数も限られているので、
こちらも頭の片隅に入れておくと良いかもしれません。