Ubuntu18.04でインターネットに接続できない問題を解消した

こんにちは。使っているPCでインターネット（Ethernet）が使えなくなる事象に遭遇しました。設定で苦労したので、自分用のメモを兼ねて書きます。

# 背景
先日引っ越しをしたことで、自宅のネットワークの構成が変わったのですが、引っ越し先で、インターネットに繋がらない事象に遭遇しました。調査、試行錯誤を繰り返し、結局当該のPCは1週間ほどインターネットが使えませんでした。同じように現在進行系で苦労されている方に少しでもお力になったら幸いです。

```
参考スペック
PC：デスクトップ、オンボードNIC
OS：Ubuntu18.04
UEFI Secure boot：Enable
NIC:Intel Corporation Ethernet Connection (2) I219-V (rev 31)
```

# 事象と対応
## 1.LANケーブルを指しても、LANコネクタのランプが点かない
事を認識したのはLANケーブルを指しても、なぜかインターネットに繋がらないことを確認した時です。

繋がらないことを確認し、まずifconfigでネットワークを確認しました。

```
$ ifconfig

※結果の例

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:33:87:b2:e4  txqueuelen 0  (イーサネット)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (ローカルループバック)
        RX packets 17486  bytes 1108501 (1.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 17486  bytes 1108501 (1.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
```

「ん、Ethernetなくね？」と思い、LANケーブルを指しているLANコネクタのランプを確認したところ、なんとランプがついていませんでした。

（使っている機器にもよると思いますが、）LANコネクタには、2つランプがあり、それぞれ「データの送受信」と「リンク（接続できるかどうか）」を表しています。ランプの色や点滅で、データの通信速度や接続の不安定さを表しています。（詳細はお使いPCのマニュアルをご確認ください。）

ランプが消えているということは、接続できていないことを指します。

この時点で調査を始め、
LANコネクタのランプが点かないことは

```
①ネットワークカードやLANコネクタが壊れた
②使っているLANケーブルが断線している
③PCの設定で点灯していない
etc
```

あたりが怪しいということを知りました。
②が原因かどうかを確かめるには、別のPCでそのLANケーブルを使えば確かめられます。
①③かどうかは一度PCをシャットダウンし、LANコネクタにランプが点くかどうかで確かめられます。
点いた場合：③
点かなかった場合：①
が考えられます。

私の場合は③でした。
つまり、PCの設定が引っ越し先のネットワークの設定と合っていないため、ランプがついていませんでした。

## 2.NIC(有線)を認識しない
次に、PCのどの部分が、LANコネクタのランプに関係しているかを調査したところ、[こちら](https://qiita.com/matsuo7005/items/b0037b6450d752378316)の方の記事を見つけ、PCがNICを認識していないと判断しました。
対応方法は記事に書かれている通り、ドライバのダウンロードとビルドを行いました。

手順は、まず自分のNICの種類を確認します。

```
$ lspci | grep Ethernet
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V (rev 31)
```

次に、確認したNICのドライバーをダウンロードします。
※私は記事の方と同じI219-Vというもので、
インターネット接続ができている他のPCで
https://downloadcenter.intel.com/download/15817/Intel-Network-Adapter-Driver-for-PCIe-Intel-Gigabit-Ethernet-Network-Connections-Under-Linux-
こちらからドライバーをダウンロードしました。
ダウンロードしたファイルは、USBフラッシュメモリで当該のPCに移動させます。

移動させたのち、解凍し、ビルドを行います。
ココらへんは、[こちら](https://qiita.com/matsuo7005/items/b0037b6450d752378316)の方が書かれた内容と全く同じですので、make installのところまで割愛します。

make install実施後、カーネルモジュールというものを追加します。どうやらNICはカネールのバージョンにあったものを使う必要があるようで、BIOSの設定やドライバーによってはこの時点ではじかれるようです。（参考にした記事の方はSecureBootが有効だとダメだったようです。）

```
# 設定を破棄
$ sudo modprobe -r e1000e
# 設定を反映
$ sudo modprobe e1000e
# 
```

設定後、反映されているかを確認します。

```
$ dmesg | grep -i e1000

結果の例
[    0.822049] e1000e: Intel(R) PRO/1000 Network Driver - 3.8.4-NAPI
[    0.822050] e1000e: Copyright(c) 1999 - 2020 Intel Corporation.
[    0.876765] e1000e 0000:00:1f.6: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[    1.137908] e1000e 0000:00:1f.6 0000:00:1f.6 (uninitialized): registered PHC clock
[    1.218033] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) 9c:5c:8e:d1:2a:5a
[    1.218035] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
[    1.218131] e1000e 0000:00:1f.6 eth0: MAC: 12, PHY: 12, PBA No: FFFFFF-0FF
[    1.219009] e1000e 0000:00:1f.6 enp0s31f6: renamed from eth0
[  171.990579] e1000e: EEE TX LPI TIMER: 00000011
[ 3047.050934] e1000e 0000:00:1f.6 enp0s31f6: NIC Link is Up 100 Mbps Full Duplex, Flow Control: Rx/Tx
[ 3047.050941] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO
```

この時点でインターネットにつながる方がいるそうですが、私の方はまだEhernetが見つかっていませんでした。なぜ？？？

なお、このドライバーの設定は再起動すると消えるらしく

```
$ sudo update-initramfs -u
```

で再起動後も設定が残ります。

## 3.Ethernetのインターフェースが見つからない、IPアドレスが割り当てられていない
ドライバーを入れたのに、Ethernetのインターフェースが出てこないので、調査を続けました。
だいぶ試行錯誤が多かったので、ここから、余計な操作が入っているかもしれませんがあしからず。

LANコネクタのランプがついていなかったので、
ifconfigのコマンドのUPというのを使いました。

```
# 全部出す
$ ifconfig -a

結果の例
enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::9e5c:8eff:fed1:2a5a  prefixlen 64  scopeid 0x20<link>
        ether 9c:5c:8e:d1:2a:5a  txqueuelen 1000  (イーサネット)
        RX packets 121642  bytes 136347699 (136.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 82639  bytes 30325654 (30.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xdf300000-df320000  

$ sudo ifconfig <インターフェース名> up
※インターフェース名にはenp0s31f6などが入ります。

$ ifconfig

結果の例
enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::9e5c:8eff:fed1:2a5a  prefixlen 64  scopeid 0x20<link>
        ether 9c:5c:8e:d1:2a:5a  txqueuelen 1000  (イーサネット)
        RX packets 121642  bytes 136347699 (136.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 82639  bytes 30325654 (30.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xdf300000-df320000  
```

これを使うとEthernetの認識をし、LANコネクタのランプも点きました。

次にIPアドレスを割り当てるのですが、今回は使っているネットワークの都合、DHCPを使うことにしました。
DHCPの設定は、Ubuntu17以降からnetplanというもので設定します。(/etc/network/interfacesは使わないようです。)
方法は、/etc/netplan/に99_config.yamlというファイルを作り、そこに設定値を書き込みます。

```
$ sudo touch /etc/netplan/99_config.yaml
$ sudo vim /etc/netplan/99_config.yaml

書き込む内容

network:
  version: 2
  renderer: networkd
  ethernets:
    {インターフェース名}:
      dhcp4: true
      dhcp6: false

```

インターフェース名には、↑と同じようにifconfigで出てきたものを使います。
書き込んだあとは、netplanの設定を

```
$ sudo netplan apply
```

で反映させます。
すると、なんということでしょう

```
$ ifconfig

enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.26  netmask 255.255.0.0  broadcast 192.168.255.255
        inet6 fe80::9e5c:8eff:fed1:2a5a  prefixlen 64  scopeid 0x20<link>
        ether 9c:5c:8e:d1:2a:5a  txqueuelen 1000  (イーサネット)
        RX packets 121642  bytes 136347699 (136.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 82639  bytes 30325654 (30.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xdf300000-df320000  

```

IPアドレスが割り当てられており、インターネットに接続できました。( ´∀｀)
長かった…。

# 参考

大変。お世話になりました。
[Ubuntu 18.04 で NIC（有線）が認識しない](https://qiita.com/matsuo7005/items/b0037b6450d752378316)

DHCPの設定はこちらを参考にしました。
[Netplanの使い方](https://www.komee.org/entry/2018/06/12/181400)