EC2で169.254.169.254にアクセスしようとしたらできなくて焦った
公開: 08/19/2019, 00:53:19
EC2でUbuntu 19.04を動かしている話。
curl http://169.254.169.254/latest/meta-data/public-ipv4
を叩いて自動割り当てされたパブリックIPv4アドレスを取得しようとしたら no route to host
。
で、起動後に急いで journalctl -xef
でログを眺めると connmand
とか言うのが動いていて、dockerのvethにリンクローカルアドレスを勝手に設定していた。
どうやら ConnMan とかいうやつらしい。
Ubuntu、 ConnMan
と netplan
と NetworkManager
が同時に動いていてキモい。
Canonicalの開発陣はバカしかいないのか?
ConnManを昇天させるために、sysytemd-networkdに乗り換える。
/etc/systemd/network/eth.network
[Match]
Name=en*
[Network]
DHCP=ipv4
を作成して、
sudo systemctl enable systemd-networkd
でsystemd-networkdを有効化しておく。
sudo apt remove lxcfs lxd netplan.io network-manager
で一旦余計なものを消してから、
sudo apt remove connman
を行う。
このとき、なぜかsshが切れるので、1分くらい待ってからEC2のコントロールパネルで再起動をかける。
❯ ip route
default via 10.0.8.1 dev ens5 proto dhcp src 10.0.8.126 metric 1024
10.0.8.0/24 dev ens5 proto kernel scope link src 10.0.8.126
10.0.8.1 dev ens5 proto dhcp scope link src 10.0.8.126 metric 1024
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
❯ curl http://169.254.169.254/latest/meta-data/public-ipv4
3.112.XXX.XXX
めでたしめでたし