メインメニューを開く

差分

LANが不安定

7,014 バイト追加, 2019年8月21日 (水) 11:50
ページの作成:「ずっと、ネットワークの不安定に悩まされてきましたが、ひとまず解決を見たような気がするので、ここにまとめておきます…」
ずっと、ネットワークの不安定に悩まされてきましたが、ひとまず解決を見たような気がするので、ここにまとめておきます。<br/>
と言っても…NetworkManagerをやめただけなのですが…。<br/>
(詳しい人に聞いたら、「それ一番最初に落とすサービスです!」って言われた…(^_^;))<br/>


基本サーバー用途なので固定IP前提で話を進めていきます。

= netctlの準備 =
== 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/>
これを元にnetctlの設定をしていきます。<br/>

== netctlの設定 ==
まずは、設定ファイルのサンプルが準備されているので、それをコピーします。
<syntaxhighlight lang="bash">cp /etc/netctl/examples/ethernet-static /etc/netctl/enp0s20u4</syntaxhighlight>
(私の場合、nic名をnetctlのプロファイル名にも使用しています)


コピーしたら以下のコマンドで、設定を編集していきます。
<syntaxhighlight lang="bash">netctl edit enp0s20u4</syntaxhighlight>

修正箇所は以下のとおりです。<br/>


【修正前】
<syntaxhighlight lang="text" line="line" highlight="2,5,7-8,11">Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('192.168.1.23/24' '192.168.1.87/24')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='192.168.1.1'
DNS=('192.168.1.1')

## For IPv6 autoconfiguration
#IP6=stateless

## For IPv6 static address configuration
#IP6=static
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
#Routes6=('abcd::1234')
#Gateway6='1234:0:123::abcd'</syntaxhighlight>


【修正後】
<syntaxhighlight lang="text" line="line" highlight="2,5,7-8,11">Description='A basic static ethernet connection'
Interface=enp0s20u4
Connection=ethernet
IP=static
Address=('192.168.56.11/24')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='192.168.56.1'
DNS=('192.168.56.1')

## For IPv6 autoconfiguration
IP6=stateless

## For IPv6 static address configuration
#IP6=static
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
#Routes6=('abcd::1234')
#Gateway6='1234:0:123::abcd'</syntaxhighlight>
「Interface」はnic名と同じにします。<br/>
「Address」は指定したい固定IPアドレスです。「/24」はサブネットマスクに合わせてください。<br/>
「Gateway」と「DNS」は自宅の環境によって変わるかと思いますが、基本ルーターのIPアドレスになります。<br/>
「IP6」はIPv6を使用していなければ、コメントアウトする必要はありません。

= netctlの起動 =
以下のコマンドでNetworkManagerを終了&無効化し、netctlを起動&有効化します。
<syntaxhighlight lang="bash">systemctl stop NetworkManager
systemctl disable NetworkManager
netctl start enp0s20u4
netctl enable enp0s20u4</syntaxhighlight>

= 遭遇したトラブル =
== 再起動時にnicが検出できていない ==
シャットダウン&電源切断で起動すると大丈夫なのに、再起動するとnicが検出されない現象に悩まされました。<br/>
以下のコマンドでログを確認してみました。
<syntaxhighlight lang="bash">journalctl -p err..alert</syntaxhighlight>


すると以下のメッセージが…
<syntaxhighlight lang="bash">Duplicate Address Detection is taking too long on interface 'enp0s20u4'</syntaxhighlight>


調べてみると以下のサイトが見つかりました。<br/>
[https://bbs.archlinux.org/viewtopic.php?id=170044 Duplicate Address Detection fails / Networking, Server, and Protection / Arch Linux Forums]<br/>

どうやら「Duplicate Address Detection(DAD)」はIPv6の機能で、アドレス重複をチェックしているのだそうで…<br/>
そいつがタイムアウトしているとのこと…<br/>
対策としてはDADのタイムアウトの時間を伸ばせば良いみたいです。<br/>


ということで、設定ファイルを再度編集します。<br/>


【修正前】
<syntaxhighlight lang="text" line="line">Description='A basic static ethernet connection'
Interface=enp0s20u4
Connection=ethernet
IP=static
Address=('192.168.56.11/24')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='192.168.56.1'
DNS=('192.168.56.1')

## For IPv6 autoconfiguration
IP6=stateless

## For IPv6 static address configuration
#IP6=static
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
#Routes6=('abcd::1234')
#Gateway6='1234:0:123::abcd'</syntaxhighlight>


【修正後】
<syntaxhighlight lang="text" line="line" highlight="12">Description='A basic static ethernet connection'
Interface=enp0s20u4
Connection=ethernet
IP=static
Address=('192.168.56.11/24')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='192.168.56.1'
DNS=('192.168.56.1')

## For IPv6 autoconfiguration
IP6=stateless
TimeoutDAD=60

## For IPv6 static address configuration
#IP6=static
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
#Routes6=('abcd::1234')
#Gateway6='1234:0:123::abcd'</syntaxhighlight>

編集したら以下のコマンドで設定を読み込み直します。
<syntaxhighlight lang="bash">netctl reenable enp0s20u4</syntaxhighlight>

読み込み直したら、netctlの再起動もしくはサーバーの再起動を指定ください。

= 参考サイト =
[https://wiki.archlinux.jp/index.php/Netctl netctl - ArchWiki]<br/>
[https://bbs.archlinux.org/viewtopic.php?id=170044 Duplicate Address Detection fails / Networking, Server, and Protection / Arch Linux Forums]<br/>

[[Category:ArchLinux]]
[[Category:Lattepanda]]
[[Category:LAN]]