⚠️ このエントリーは1年以上前に作成されたものです。情報の賞味期限切れにご注意ください。
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
INIを作成して、
sudo systemctl enable systemd-networkd
Bashでsystemd-networkdを有効化しておく。
sudo apt remove lxcfs lxd netplan.io network-manager
Bashで一旦余計なものを消してから、
sudo apt remove connman
Bashを行う。
このとき、なぜか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
Bashめでたしめでたし