pingしたときに「Temporary failure in name resolution」となって繋がらない → 解決！

# pingの「Temporary failure in name resolution」の解決まで

## 発端
pingでこんなメッセージがでるようになってしまいました。
```
[tontoro@arch ~]$ ping www.google.com
ping: www.google.com: Temporary failure in name resolution
```
`pacman ~~`してもサイトまで届かなくて何もできなくなっています。困った、、、

## よくある方法、DNSの追加 → 変わらず
「Temporary failure in name resolution」で検索すると多数見つかる方法です。/etc/resolv.confに
```
nameserver 8.8.8.8
nameserver 8.8.4.4
```
を追加して、`sudo sytemctl restart sudo systemd-resolved.service`しても変わらず。IPアドレス直打ちなら？と調べると
```
[root@arch ~]# ping 8.8.8.8
ping: connect:Network is unreachable
```
あれれー、おっかしいなー？なんかDNSで解決できないとかじゃなくて、もっと根が深そうな感じです。

## `ip a`の結果を動いている環境と比較

Archで`ip a`した結果です。うーん、見慣れないからわかりません。
```
[root@arch ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/100pback 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 noprefixroute
       valid_lft forever preferred_lft foreuer
2: enp0s3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 08:00:27:71:03:89 brd ff:ff:ff:ff:ff:ff
```

動いているfedoraと比べてみます。
```
tontoro@fedora:~$ 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
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:a1:b8:ec brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 85400sec preferred_lft 85400sec
    inet6 fe80::4058:b2:19c0:59de/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
```

enp0s3のほうでstate DOWNとなっているのがかなり怪しい雰囲気です。

`ip route`もしてみました。
NGなArch。何も表示されません。
```
[root@arch ~]# ip route
[root@arch ~]#
```
OKなFedora。表示されます。
```
tontoro@fedora:~$ ip route
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100 
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 
```
## state UPに変更 → 変わらず

ipコマンドからUPにできます。が、解決ならず。

```
[root@arch ~]# ip l set enp0s3 up
[rootearch ~]# ip a
1: lo: <L00PBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/100pback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
      valid_lft foreuer preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
      valid_lft foreuer preferred_lft foreuer
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:71:03:89 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a00:27ff:fe71:389/64 scope link proto kernel_ll
      valid_lft forever preferred_lft foreuer
[root@arch ~]# ping www.google.com
ping: www.google.com: Temporary failure in name resolution
[root@arch ~]# ping 8.8.8.8 ping: connect:
Network is unreachable
[root@arch ~]# ip route
[root@arch ~]#
```
ip routeも変わりません。

## inet4を追加 → 変わらず

inet4アドレスを追加してみます。broadcastも合わせて追加してみます。が相変わらず解決ならず。
```
[root@arch ~]# ip addr add 10.0.3.15/24 brd + deu enp0s3
[root@arch ~]# ip a
1: lo: <L00PBACK,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 noprefixroute
      valid_lft foreuer preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:71:03:89 brd ff:ff:ff:ff:ff:ff
    inet 10.0.3.15/24 brd 10.0.3.255 scope global enp0s3
      valid_lft foreuer preferred_lft forever
    inet6 fe80::a00:27ff:fe71:389/64 scope link proto kernel_ll
      valid_lft forever preferred_lft forever
[root@arch ~]# ping 8.8.8.8
ping: connect: Network is unreachable
[root@arch ~]# ip route
10.0.3.0/24 dev enp0s3 proto kernel scope link src 10.0.3.15
[root@arch ~]#
```
けど`ip route`に変化が！

## ゲートウェイのあるrouteを追加 → そもそも追加できない
ゲートウェイのあるルートを追加すれば解決しそうでしたが、10.0.2.2では追加できませんでした。
```
[root@arch ~]# ip route add default via 10.0.2.2
Error:Nexthop has invalid gateway.
[rootearch ~l# ip route
10.0.3.0/24 deu enp0s3 proto kerne1 scope 1ink src 10.0.3.15
```
もうだめかなあ？と思ったのですが、次で解決できました！

## 10.0.3.15を10.0.2.16で追加しなおし、ルートを追加 → 解決
なんでゲートウェイが10.0.2.2固定なのか不明ですが、とりあえずそれを追加できるようにするために、自分のアドレスを10.0.2.xにする必要がありました。そうしたところ、外につながるになりました。

```
[root@arch ~1# ip addr del 10.0.3.16/24 deu enp0s3
[root@arch ~1# ip addr add 10.0.2.16/24 brd + dev enp0s3
[rootearch ~]# 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 1o
      valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
      valid_lft forever preferred_lft foreuer
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:71:03:89 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.16/24 brd 10.0.2.255 scope global enp0s3
      valid_lft foreuer preferred_lft forever
    inet6 fe80::a00:27ff:fe71:389/64 scope 1ink proto kernel_ll
      valid_lft foreuer preferred_lft forever
[root@arch ~]# ip route add default via 10.0.2.2
[root@arch ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/looppback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host 1o
      valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
      valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:71:03:89 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.16/24 brd 10.0.2.255 scope g1oba1 enp0s3
      valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe71:389/64 scope link proto kernel_ll
      valid_lft forever preferred_lft forever
[rootearch ~]# ip route
default via 10.0.2.2 deu enp0s3
10.0.2.0/24 deu enp0s3 proto kernel scope 1ink src 10.0.2.16
[root@arch ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=10.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 tt1=117 time=10.3 ms
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, received, 0% packet loss, time 1208ms
rtt min/avg/max/mdev = 10.222/10.266/10.311/0.044 ms
[root@arch ~]# ping www.google.com
PING www.g0ogle.c0m (172.217.161.68) 56(84) bytes 0f data
64 bytes from nrt20s09-in-f4.1e100.net (172.217.161.68): icmp_seq=1 ttl=117 time=7.35 ms
64 bytes from nrt20s09-in-f4.1e100.net (172.217.161.68): icmp_seq=2 tt1=117 time=8.06 ms
^C
--- www.google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1043ms
rtt min/aug/max/mdev = 7.352/7.704/8.057/0.352 ms
```

これでやっとpacmanであれこれ入れられるようになりました
長かった、、、

## 参考サイト
ipコマンドについてはこちらを参考にしました。
[Linux ip Command Examples - nixCraft](https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/)
routeにゲートウェイ追加できなかった時はこちらの情報がヒントになりました
[routing - Why "Nexthop has invalid gateway" when it seems to be defined? - Server Fault](https://serverfault.com/questions/953198/why-nexthop-has-invalid-gateway-when-it-seems-to-be-defined)