docker動かしたら外部通信できなくなった件

タイトル通りに、なんじゃそりゃ、という。
docker runしたら、インターネッツに繋がらなくなるじゃん問題。

IPv6は普通に繋がるんだけど、IPv4がUnreachableになる。
traceroute打つと、なぜかDockerのコンテナのIPが表示されている。。。

```
$ traceroute github.com
traceroute to github.com (20.27.177.113), 30 hops max, 60 byte packets
 1  hoge.local (169.254.32.5)  3078.145 ms !H  3078.087 ms !H  3078.063 ms !H
```

# 結論
connmanとかいうネットワークマネージャが悪い。

Dockerの仮想NICを勝手にデフォルトゲートウェイに設定するせいで、外向きの通信が全部そこに吸い込まれてしまっている

## 対応
`$ sudo vi /etc/connman/main.conf`してブラックリストの設定を有効化＋vethを追加

```
# List of blacklisted network interfaces separated by ",".
# Found interfaces will be compared to the list and will
# not be handled by ConnMan, if their first characters
# match any of the list entries. Default value is
# vmnet,vboxnet,virbr,ifb,ve-,vb-.
# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,ve-,vb-
NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,ve-,vb-,veth
```


# 発生した状況
`$ routel`すると、先頭にvethから始まるdockerの仮想NICが居座っている。
`$ ip route`しても同じ。
なんでお前はそこにいるんだ／どうやって直すんじゃ、これ。
老人会なんで、`ifconfig`しかわからんのですが。

```
$ routel
Dst             Gateway         Prefsrc         Protocol Scope   Dev              Table
0.0.0.0                                                  link    vethc6d8eab      
default                                                  link    vethc6d8eab      
default         192.168.0.1                                      enp1s0f0         
default         192.168.0.1     192.168.0.112   dhcp             enp1s0f0         
1.1.1.1         192.168.0.1                                      enp1s0f0         
1.1.1.1         192.168.0.1     192.168.0.112   dhcp             enp1s0f0         
169.254.0.0/16                  169.254.32.5    kernel   link    vethc6d8eab      
172.17.0.0/16                   172.17.0.1      kernel   link    docker0          
192.168.0.0/24                  192.168.0.112   kernel   link    enp1s0f0         
192.168.0.1                                              link    enp1s0f0         
192.168.0.1                     192.168.0.112   dhcp     link    enp1s0f0         
127.0.0.0/8                     127.0.0.1       kernel   host    lo               local
127.0.0.1                       127.0.0.1       kernel   host    lo               local
127.255.255.255                 127.0.0.1       kernel   link    lo               local
169.254.32.5                    169.254.32.5    kernel   host    vethc6d8eab      local
169.254.255.255                 169.254.32.5    kernel   link    vethc6d8eab      local
172.17.0.1                      172.17.0.1      kernel   host    docker0          local
172.17.255.255                  172.17.0.1      kernel   link    docker0          local
192.168.0.112                   192.168.0.112   kernel   host    enp1s0f0         local
192.168.0.255                   192.168.0.112   kernel   link    enp1s0f0         local
```


### 解決までの道のり
経路問題だろうかなと、とりあえず、`apt-get install dnsutils`してnslookupとかを使えるようにしてーから始めて。
routelの読み方わかんねえよ、Scopeの意味してんのなんだよ、とか言いながら、
それにしても、defaultになってんの多分おかしいよな。誰が設定してんだよ、と犯人探しをして。
systemd-networkdが動いてるっぽいけど、設定default gatewayを外す設定とかどうするんだ？付けるオプションはあっても、外すのはなくない？
とかやってたところ、同様の問題に引っかかってる人を見つけて、なるほどな、と。

### ConnMan

ConnMan、こいつ何者？とぐぐると、みんなアンインストールしててウケる。

デスクトップ環境入れると勝手に入るのかなんかで、多分WiFi使ってるとこういうのが要る的な話なのかもしれない。

### 参考
https://github.com/moby/moby/issues/49653

https://forums.docker.com/t/solved-no-network-when-running-a-container-in-arch-linux/5494