らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

AWS EC2 で Linux にセカンダリアドレスを割り当てる

AWS 上の Linux (等) に固定アドレスを割り当てたり、セカンダリアドレスを割り当てる手順をメモしておきます。

プライマリアドレスを固定設定する

プライマリアドレスを固定設定してみます。

Step.1

インスタンスを作成する際、ネットワークインターフェイスプライマリ IP に固定アドレスを指定します。 これで起動してくる Linux (のインターフェイス設定) 自体は DHCP ではあるものの、指定したアドレスで起動してきます。

f:id:sig9:20200415005849p:plain:w640

Step.2

設定はこれだけです。 Linux ディストリビューションの種類に関わらず、以下のようにプライマリインターフェイスが固定アドレスで起動してきます。

[root@ip-192-168-224-11 ~]# ip address show
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:bf:e2:bc:01:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.224.11/24 brd 192.168.224.255 scope global dynamic eth0
       valid_lft 3180sec preferred_lft 3180sec
    inet6 fe80::4bf:e2ff:febc:1c4/64 scope link
       valid_lft forever preferred_lft forever

セカンダリアドレスを固定設定する

次はセカンダリアドレスを固定設定してみます。

Step.1

ENI の設定画面からセカンダリアドレスを固定設定したいインターフェイスを選択し、アクションIP アドレスの管理 をクリックします。

f:id:sig9:20200415005855p:plain:w640

Step.2

新しい IP の割り当て をクリックします。

f:id:sig9:20200415005859p:plain:w480

Step.3

空欄が追加されるので新規に固定設定したいアドレスを入力し、右下の 更新する をクリックします。

f:id:sig9:20200415005902p:plain:w480

Step.4

これでセカンダリアドレスが固定設定されました。

f:id:sig9:20200415005906p:plain:w480

Step.5

Amazon Linux の場合は ec2-net-utils というパッケージの機能により、AWS 管理コンソールからセカンダリアドレスを設定するだけで、OS 上の設定は特に必要なく、セカンダリアドレスが反映されます。

[root@ip-192-168-224-11 ~]# ip address show
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:bf:e2:bc:01:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.224.11/24 brd 192.168.224.255 scope global dynamic eth0
       valid_lft 3431sec preferred_lft 3431sec
    inet 192.168.224.12/24 brd 192.168.224.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4bf:e2ff:febc:1c4/64 scope link
       valid_lft forever preferred_lft forever

手動で OS 上のセカンダリアドレスを固定設定する

Amazon Linux 以外、例えば CentOS の場合は AWS の管理コンソールから ENI にセカンダリアドレスを設定しても (ec2-net-utils が無い為) OS には自動反映されません。 CentOS であれば「ec2-net-utils を追加してしまう」という方法もありますが、セカンダリアドレスを手動で設定してしまう、という方法もあります。具体的には以下のようにサブインターフェイスを設定します。 以下は CentOS7 の場合です。

[root@ip-192-168-224-21 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.224.22
NETMASK=255.255.255.0

network サービスを再起動し、設定を反映します。

[root@ip-192-168-224-21 network-scripts]# service network restart
Restarting network (via systemctl):                        [  OK  ]

これでセカンダリアドレスが反映されました。

[root@ip-192-168-224-21 ~]# ip address show
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:fe:1e:f7:84:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.224.21/24 brd 192.168.224.255 scope global dynamic eth0
       valid_lft 2219sec preferred_lft 2219sec
    inet 192.168.224.22/24 brd 192.168.224.255 scope global secondary eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::4fe:1eff:fef7:8458/64 scope link
       valid_lft forever preferred_lft forever

参考