「LANが不安定」の版間の差分
Rin-scrooge (トーク | 投稿記録) |
Rin-scrooge (トーク | 投稿記録) |
||
161行目: | 161行目: | ||
読み込み直したら、netctlの再起動もしくはサーバーの再起動をしてください。 | 読み込み直したら、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> | ||
+ | |||
+ | DNSはGoogleのものを指定していますが、お好きなものを指定してください。<br/> | ||
= 参考サイト = | = 参考サイト = |
2019年9月5日 (木) 10:02時点における版
ずっと、ネットワークの不安定に悩まされてきましたが、ひとまず解決を見たような気がするので、ここにまとめておきます。
と言っても…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
DNSはGoogleのものを指定していますが、お好きなものを指定してください。
参考サイト
netctl - ArchWiki
Duplicate Address Detection fails / Networking, Server, and Protection / Arch Linux Forums