「LANが不安定」の版間の差分
Rin-scrooge (トーク | 投稿記録) |
Rin-scrooge (トーク | 投稿記録) |
||
(同じ利用者による、間の8版が非表示) | |||
7行目: | 7行目: | ||
また、基本サーバー用途なので固定IP前提で話を進めていきます。 | また、基本サーバー用途なので固定IP前提で話を進めていきます。 | ||
− | = netctlの準備 = | + | == netctl編 == |
− | == nic名の確認 == | + | === netctlの準備 === |
+ | ==== nic名の確認 ==== | ||
以下のコマンドで、nic名を確認します。 | 以下のコマンドで、nic名を確認します。 | ||
<syntaxhighlight lang="bash">ip a</syntaxhighlight> | <syntaxhighlight lang="bash">ip a</syntaxhighlight> | ||
32行目: | 33行目: | ||
これを元にnetctlの設定をしていきます。<br/> | これを元にnetctlの設定をしていきます。<br/> | ||
− | == netctlの設定 == | + | ==== netctlの設定 ==== |
まずは、設定ファイルのサンプルが準備されているので、それをコピーします。 | まずは、設定ファイルのサンプルが準備されているので、それをコピーします。 | ||
<syntaxhighlight lang="bash">cp /etc/netctl/examples/ethernet-static /etc/netctl/enp0s20u4</syntaxhighlight> | <syntaxhighlight lang="bash">cp /etc/netctl/examples/ethernet-static /etc/netctl/enp0s20u4</syntaxhighlight> | ||
87行目: | 88行目: | ||
「IP6」はIPv6を使用していなければ、コメントアウトする必要はありません。 | 「IP6」はIPv6を使用していなければ、コメントアウトする必要はありません。 | ||
− | = netctlの起動 = | + | === netctlの起動 === |
以下のコマンドでNetworkManagerを終了&無効化し、netctlを起動&有効化します。 | 以下のコマンドでNetworkManagerを終了&無効化し、netctlを起動&有効化します。 | ||
<syntaxhighlight lang="bash">systemctl stop NetworkManager | <syntaxhighlight lang="bash">systemctl stop NetworkManager | ||
94行目: | 95行目: | ||
netctl enable enp0s20u4</syntaxhighlight> | netctl enable enp0s20u4</syntaxhighlight> | ||
− | = 遭遇したトラブル = | + | === 遭遇したトラブル === |
− | == 再起動時にnicが検出できていない == | + | ==== 再起動時にnicが検出できていない ==== |
シャットダウン&電源切断で起動すると大丈夫なのに、再起動するとnicが検出されない現象に悩まされました。<br/> | シャットダウン&電源切断で起動すると大丈夫なのに、再起動するとnicが検出されない現象に悩まされました。<br/> | ||
以下のコマンドでログを確認してみました。 | 以下のコマンドでログを確認してみました。 | ||
159行目: | 160行目: | ||
<syntaxhighlight lang="bash">netctl reenable enp0s20u4</syntaxhighlight> | <syntaxhighlight lang="bash">netctl reenable enp0s20u4</syntaxhighlight> | ||
− | + | 読み込み直したら、netctlの再起動もしくはサーバーの再起動をしてください。 | |
− | = 参考サイト = | + | == systemd-networkd編 == |
+ | もっとシンプルに…systemd-networkdを使用しても安定します。 | ||
+ | === systemd-networkdの準備 === | ||
+ | ==== nic名の確認 ==== | ||
+ | 以下のコマンドで、nic名を確認します。 | ||
+ | <syntaxhighlight lang="bash">ip a</syntaxhighlight> | ||
+ | こんなふうに出力されるかと思います。<br/> | ||
+ | (まだNetworkManagerで設定されている前提になっています。ネットワークサービスを起動していない場合はIPが振られていないかと思います。) | ||
+ | <syntaxhighlight lang="text">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 | ||
+ | valid_lft forever preferred_lft forever | ||
+ | 2: enp0s20u4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 | ||
+ | link/ether 00:e0:4c:36:be:7f brd ff:ff:ff:ff:ff:ff | ||
+ | inet 192.168.56.11/24 brd 192.168.11.255 scope global enp0s20u4 | ||
+ | valid_lft forever preferred_lft forever | ||
+ | inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr | ||
+ | valid_lft 86391sec preferred_lft 14391sec | ||
+ | inet6 fe80::2e0:4cff:fe36:be7f/64 scope link | ||
+ | valid_lft forever preferred_lft forever | ||
+ | 3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 | ||
+ | link/ether 18:bb:26:a9:a1:0e brd ff:ff:ff:ff:ff:ff</syntaxhighlight> | ||
+ | 「enp0s20u4」がnic名になります。<br/> | ||
+ | これを元にsystemd-networkdの設定をしていきます。<br/> | ||
+ | |||
+ | ==== systemd-networkdの設定 ==== | ||
+ | 設定ファイルを作成していきます。今回はnic名をファイル名に使用していきます。<br/> | ||
+ | 以下のコマンドで「/etc/systemd/network」ディレクトリに新規ファイルを作成します。 | ||
+ | <syntaxhighlight lang="bash">nano /etc/systemd/network/enp0s20u4.network</syntaxhighlight> | ||
+ | ファイルの内容は以下のとおりです。(固定IP前提になっています…) | ||
+ | <syntaxhighlight lang="text">[Match] | ||
+ | Name=enp0s20u4 | ||
+ | |||
+ | [Network] | ||
+ | Address=192.168.11.105/24 | ||
+ | Gateway=192.168.11.1</syntaxhighlight> | ||
+ | |||
+ | 次に「resolv.conf」にDNSを設定します。<br/> | ||
+ | 以下のコマンドでresolv.confを開きます。<br/> | ||
+ | <syntaxhighlight lang="bash">nano /etc/resolv.conf</syntaxhighlight> | ||
+ | |||
+ | ファイルの内容は以下の通りにします。 | ||
+ | <syntaxhighlight lang="text">nameserver 8.8.8.8 | ||
+ | nameserver 8.8.4.4</syntaxhighlight> | ||
+ | ※ひとまずGoogleを指定していますが、プロバイダ指定のDNSでも、ルーターでもかまいません。 | ||
+ | |||
+ | === systemd-networkdの起動 === | ||
+ | 以下のコマンドでsystemd-networkdを起動します。 | ||
+ | <syntaxhighlight lang="bash">systemctl start systemd-networkd | ||
+ | systemctl enable systemd-networkd</syntaxhighlight> | ||
+ | |||
+ | == 参考サイト == | ||
[https://wiki.archlinux.jp/index.php/Netctl netctl - ArchWiki]<br/> | [https://wiki.archlinux.jp/index.php/Netctl netctl - ArchWiki]<br/> | ||
+ | [https://wiki.archlinux.jp/index.php/Systemd-networkd systemd-networkd - ArchWiki]<br/> | ||
[https://bbs.archlinux.org/viewtopic.php?id=170044 Duplicate Address Detection fails / Networking, Server, and Protection / Arch Linux Forums]<br/> | [https://bbs.archlinux.org/viewtopic.php?id=170044 Duplicate Address Detection fails / Networking, Server, and Protection / Arch Linux Forums]<br/> | ||
2019年9月10日 (火) 14:12時点における最新版
ずっと、ネットワークの不安定に悩まされてきましたが、ひとまず解決を見たような気がするので、ここにまとめておきます。
と言っても…NetworkManagerをやめただけなのですが…。
(詳しい人に聞いたら、「それ一番最初に落とすサービスです!」って言われた…(^_^;))
あまりにも、不安定だったので標準のnic(オンボードのr8152)に戻して設定しています。
(そういう意味で、USB-LANアダプタは未検証です。r8152ではスピードが出ないので後日、検証予定です。)
また、基本サーバー用途なので固定IP前提で話を進めていきます。
目次
netctl編
netctlの準備
nic名の確認
以下のコマンドで、nic名を確認します。
ip a
こんなふうに出力されるかと思います。
(まだNetworkManagerで設定されている前提になっています。ネットワークサービスを起動していない場合はIPが振られていないかと思います。)
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
valid_lft forever preferred_lft forever
2: enp0s20u4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:e0:4c:36:be:7f brd ff:ff:ff:ff:ff:ff
inet 192.168.56.11/24 brd 192.168.11.255 scope global enp0s20u4
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr
valid_lft 86391sec preferred_lft 14391sec
inet6 fe80::2e0:4cff:fe36:be7f/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 18:bb:26:a9:a1:0e brd ff:ff:ff:ff:ff:ff
「enp0s20u4」がnic名になります。
これを元にnetctlの設定をしていきます。
netctlの設定
まずは、設定ファイルのサンプルが準備されているので、それをコピーします。
cp /etc/netctl/examples/ethernet-static /etc/netctl/enp0s20u4
(私の場合、nic名をnetctlのプロファイル名にも使用しています)
コピーしたら以下のコマンドで、設定を編集していきます。
netctl edit enp0s20u4
修正箇所は以下のとおりです。
【修正前】
1 Description='A basic static ethernet connection'
2 Interface=eth0
3 Connection=ethernet
4 IP=static
5 Address=('192.168.1.23/24' '192.168.1.87/24')
6 #Routes=('192.168.0.0/24 via 192.168.1.2')
7 Gateway='192.168.1.1'
8 DNS=('192.168.1.1')
9
10 ## For IPv6 autoconfiguration
11 #IP6=stateless
12
13 ## For IPv6 static address configuration
14 #IP6=static
15 #Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
16 #Routes6=('abcd::1234')
17 #Gateway6='1234:0:123::abcd'
【修正後】
1 Description='A basic static ethernet connection'
2 Interface=enp0s20u4
3 Connection=ethernet
4 IP=static
5 Address=('192.168.56.11/24')
6 #Routes=('192.168.0.0/24 via 192.168.1.2')
7 Gateway='192.168.56.1'
8 DNS=('192.168.56.1')
9
10 ## For IPv6 autoconfiguration
11 IP6=stateless
12
13 ## For IPv6 static address configuration
14 #IP6=static
15 #Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
16 #Routes6=('abcd::1234')
17 #Gateway6='1234:0:123::abcd'
「Interface」はnic名と同じにします。
「Address」は指定したい固定IPアドレスです。「/24」はサブネットマスクに合わせてください。
「Gateway」と「DNS」は自宅の環境によって変わるかと思いますが、基本ルーターのIPアドレスになります。
「IP6」はIPv6を使用していなければ、コメントアウトする必要はありません。
netctlの起動
以下のコマンドでNetworkManagerを終了&無効化し、netctlを起動&有効化します。
systemctl stop NetworkManager
systemctl disable NetworkManager
netctl start enp0s20u4
netctl enable enp0s20u4
遭遇したトラブル
再起動時にnicが検出できていない
シャットダウン&電源切断で起動すると大丈夫なのに、再起動するとnicが検出されない現象に悩まされました。
以下のコマンドでログを確認してみました。
journalctl -p err..alert
すると以下のメッセージが…
Duplicate Address Detection is taking too long on interface 'enp0s20u4'
調べてみると以下のサイトが見つかりました。
Duplicate Address Detection fails / Networking, Server, and Protection / Arch Linux Forums
どうやら「Duplicate Address Detection(DAD)」はIPv6の機能で、アドレス重複をチェックしているのだそうで…
そいつがタイムアウトしているとのこと…
対策としてはDADのタイムアウトの時間を伸ばせば良いみたいです。
ということで、設定ファイルを再度編集します。
【修正前】
1 Description='A basic static ethernet connection'
2 Interface=enp0s20u4
3 Connection=ethernet
4 IP=static
5 Address=('192.168.56.11/24')
6 #Routes=('192.168.0.0/24 via 192.168.1.2')
7 Gateway='192.168.56.1'
8 DNS=('192.168.56.1')
9
10 ## For IPv6 autoconfiguration
11 IP6=stateless
12
13 ## For IPv6 static address configuration
14 #IP6=static
15 #Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
16 #Routes6=('abcd::1234')
17 #Gateway6='1234:0:123::abcd'
【修正後】
1 Description='A basic static ethernet connection'
2 Interface=enp0s20u4
3 Connection=ethernet
4 IP=static
5 Address=('192.168.56.11/24')
6 #Routes=('192.168.0.0/24 via 192.168.1.2')
7 Gateway='192.168.56.1'
8 DNS=('192.168.56.1')
9
10 ## For IPv6 autoconfiguration
11 IP6=stateless
12 TimeoutDAD=60
13
14 ## For IPv6 static address configuration
15 #IP6=static
16 #Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
17 #Routes6=('abcd::1234')
18 #Gateway6='1234:0:123::abcd'
編集したら以下のコマンドで設定を読み込み直します。
netctl reenable enp0s20u4
読み込み直したら、netctlの再起動もしくはサーバーの再起動をしてください。
systemd-networkd編
もっとシンプルに…systemd-networkdを使用しても安定します。
systemd-networkdの準備
nic名の確認
以下のコマンドで、nic名を確認します。
ip a
こんなふうに出力されるかと思います。
(まだNetworkManagerで設定されている前提になっています。ネットワークサービスを起動していない場合はIPが振られていないかと思います。)
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
valid_lft forever preferred_lft forever
2: enp0s20u4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:e0:4c:36:be:7f brd ff:ff:ff:ff:ff:ff
inet 192.168.56.11/24 brd 192.168.11.255 scope global enp0s20u4
valid_lft forever preferred_lft forever
inet6 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic mngtmpaddr
valid_lft 86391sec preferred_lft 14391sec
inet6 fe80::2e0:4cff:fe36:be7f/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 18:bb:26:a9:a1:0e brd ff:ff:ff:ff:ff:ff
「enp0s20u4」がnic名になります。
これを元にsystemd-networkdの設定をしていきます。
systemd-networkdの設定
設定ファイルを作成していきます。今回はnic名をファイル名に使用していきます。
以下のコマンドで「/etc/systemd/network」ディレクトリに新規ファイルを作成します。
nano /etc/systemd/network/enp0s20u4.network
ファイルの内容は以下のとおりです。(固定IP前提になっています…)
[Match]
Name=enp0s20u4
[Network]
Address=192.168.11.105/24
Gateway=192.168.11.1
次に「resolv.conf」にDNSを設定します。
以下のコマンドでresolv.confを開きます。
nano /etc/resolv.conf
ファイルの内容は以下の通りにします。
nameserver 8.8.8.8
nameserver 8.8.4.4
※ひとまずGoogleを指定していますが、プロバイダ指定のDNSでも、ルーターでもかまいません。
systemd-networkdの起動
以下のコマンドでsystemd-networkdを起動します。
systemctl start systemd-networkd
systemctl enable systemd-networkd
参考サイト
netctl - ArchWiki
systemd-networkd - ArchWiki
Duplicate Address Detection fails / Networking, Server, and Protection / Arch Linux Forums