AWSのUbuntu18.04にセカンダリIPを付与する方法

2020年12月31日

この記事を読むと得られる情報

AWS上でUbuntu18.04をイメージに作成したEC2インスタンスにセカンダリープライベートIPを付与したい

AWSではすでにUbuntu18.04がメインでリリースされていますが、ネットワークの設定ファイルがnetplanへ変更になって、セカンダリIPの設定が不明だったためその方法を共有したいと思います。

AWSコンソール上での作業

EC2コンソールより、セカンダリーIPを付与したいインスタンスを右クリック。

AWSコンソール
IPアドレスの管理

上記のようなメニューが出ますので
ネットワーキング > IPアドレスの管理
をクリック。

新しいIPの割り当て
新しいIPの割り当て

「新しいIPの割り当て」をクリックし、必要があればIPを指定して「更新する」をクリック。
これでAWSコンソールでの作業は完了です。

EC2インスタンスでの作業

AWS上では対象インスタンスにセカンダリーIPを付与できたが、次はOSに認識させる必要がある。
早速、EC2インスタンスにログインした後、次のようにネットワークのyamlファイルを作成します。

# 40-cloud-init.yamlの作成
sudo vi /etc/netplan/40-cloud-init.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens5: # NIC name
      addresses: [xxx.xxx.xxx.xxx/xx, yyy.yyy.yyy.yyy/yy]
      dhcp4: no
      routes:
        - to: 0.0.0.0/0
          via: zzz.zzz.zzz.zzz # Default gateway
          table: 1000
        - to: xxx.xxx.xxx.xxx
          via: 0.0.0.0
          scope: link
          table: 1000
        - to: yyy.yyy.yyy.yyy
          via: 0.0.0.0
          scope: link
          table: 1000
      routing-policy:
        - from: xxx.xxx.xxx.xxx
          table: 1000
        - from: yyy.yyy.yyy.yyy
          table: 1000

同ディレクトリに50-cloud-init.yamlというのがありますが、それはそのままにしてください。
削除厳禁です。
また、先頭の番号で優先順位があるので、50より若くしておくといいです。
書き終わったら、下記コマンドで更新します。

# netplanの更新
sudo netplan --debug apply

でエラーログがでなければ完了。

# IPの確認
ip a

で確認してください。

# 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
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether hoge brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.xxx.xxx/xx brd hoge scope global dynamic ens5
       valid_lft 3549sec preferred_lft 3549sec
    inet yyy.yyy.yyy.yyy/yy brd hoge scope global secondary ens5
       valid_lft forever preferred_lft forever
    inet6 hoge scope link
       valid_lft forever preferred_lft forever

上記のようにIPが2つ出たら成功。
一応wgetやcurlで外と疎通できるか確認するとなおよし。
(確認大事)

再起動後、ネットの疎通がしばらく遅くなりますが、辛抱強く待ちましょう!!
お疲れ様でした!