Ubuntu 20.04 LTS/Ubuntu 20.04 LTSベース〜IPv4接続が1時間毎に切断する現象の簡易検証と応急措置 !

筆者は、特定のLinux Distributionを長期間使用する事はあまり無いのですが、Debian Buster stable ベースや、Ubuntu 20.04 LTS ベースをインストール・セッティングするにあたり、概ね数時間を要する事が多く、この際、wifiが割に切れまくる事に違和感を感じていました。設定対象マシンはThinkpad X250、Thinkpad E570, Thinkpad T480sであり、それぞれ異なるインテル製内蔵Wifiカードを搭載しているため、全機種で同じようにWifiが切れまくるという現象は、ドライバーが原因では無いと判断しています。 

このため、今回は、Linux Mint 20 Xfce edition(Ubuntu 20.04 LTSベース)を使って、この現象の簡易検証と応急措置に関して投稿していきます(使用マシンは、Thinkpad T480sです)。

最初にDHCP関連のログを追いかけてみましたが、どうやら、3600秒(1時間)毎にIPv4 アドレスがリリースされるようになっているものの、アドレスの再取得フェーズで結果的にターミネートされている模様。

NetworkManager[565]: <info>  [1601065531.1883] dhcp4 (wlp61s0): option dhcp_lease_time      => '3600'

NetworkManager[576]: <info>  [1601057449.6893] dhcp4 (wlp61s0): state changed bound -> expire

NetworkManager[576]: <info>  [1601057539.9579] device (wlp61s0): DHCPv4: grace period expired 

NetworkManager[576]: <info>  [1601058184.3715] dhcp4 (wlp61s0): state changed expire -> done

・・・・・・・・

試しにpgrepで、dhclientが常駐しているかどうかを確認すると、常駐していません。

もう少しこの現象は使用中のプロバイダーから提供されたホームゲートウェイも含めて検証が必要ですが、とりあえずNetwork Managerのコンフィグファイルを触って、DHCP clientを強制的にdhclientに変更し、応急措置をした上で、根本的な解決策を探っていく事にしました。

今回Ubuntu 20.04 LTSとこれをベースとしたDistributionは、Built in DHCP clientが使用されている節がありますが、これをdhclientに変更するためには、 /etc/NetworkManager/conf.dディレクトリー配下に、dhcp-client.confの内容を以下の体裁で作成する必要があります(これは、Network Managerのconfigドキュメントに記載されています)。

[main]
dhcp=使用するdhcpクライアント

具体的には、dhcp-client.confは、以下の内容で作成します。


以上で、再起動すると、DHCP clientは、dhclientに変更され、dhclientは、常駐します。 


上記設定で、IPv4接続が1時間毎に切れるという現象はなくなりますが、ログファイルにはapparmorのエラーメッセージが頻繁に出力されるようになり・・・^^;。。

--------------

kernel: audit: type=1400 audit(1601105854.014:27): apparmor="DENIED" operation="open" profile="/{,usr/}sbin/dhclient" name="/proc/994/task/996/comm" pid=994 comm="dhclient" requested_mask="wr" denied_mask="wr" fsuid=0 ouid=0

--------------

このエラーを抑制するためには、apparmorのdhclientプロファイルをdisableにするしか方法がありません。・・・・このために、以下コマンドを順次投入し対処します。

まず、プロファイル sbin.dhclientのシンボリックリンクを
/etc/apparmor.d/disableディレクトリ直下に作成します。 
→sudo ln -s /etc/apparmor.d/sbin.dhclient /etc/apparmor.d/disable

次に、 カーネルにロードされた、apparmorのdhclientプロフィルを削除します。
→sudo apparmor_parser -R /etc/apparmor.d/sbin.dhclient  

以上で、apparmorのエラーは止まります。

あくまでも応急措置のため、dhclientの細かいコンフィグは行いませんでしたが、とりあえず、これで、IPv4接続が1時間単位で切れるという問題はなくなりました。

今後は、ホームゲートウェイと built-in DHCPクライアントの正しいconfig内容を調査・検証していく事にしています。

コメント