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内容を調査・検証していく事にしています。

コメント

  1. 友人とマイクラサーバーを建てるために以前使っていた自作PCにUbuntu Desktop 20.04.1 LTSをインストールして、サーバーを立てMODを導入しプレイしています。自宅では接続が切れることなく安定して使用できていましたが、友人宅にて稼働開始したら、1時間おきにネットが切断され、Ubuntu のネットワーク設定のところで接続をオンオフにする必要があり大変不便です(汗)

    我が家の回線はニューロ光 ルーターはZXHN F660A
    友人宅はau光でルーターがBL900HWです。
    どちらも有線です。

    自作PCのマザボはGA-H170-D3HP (rev. 1.0)でLANはIntel® GbE LAN chip (10/100/1000 Mbit)です。

    こちらのページを参考にして対処しようとしていますが、Linux初心者為、 /etc/NetworkManager/conf.dのディレクトリ等がみつからず、立ち往生しております((涙)

    cat / /etc/NetworkManager/conf.d
    のcatは自分のホームフォルダでしょうか?
    設定は標準のターミナル(端末)では無理ですか?pgrepが必要でしょうか?

    色々とわからないだらけな状態ですがよろしくおねがいします。

    返信削除
    返信
    1. ブログ中のcatは、作成したルートディレクトリ直下/etc/NetworkManager/conf.d/dhcp-client.confを表示させているだけです。ホームディレクトリ直下ではありません。/etc/NetworkManagerディレクトリは存在するはずですので、この下にconf.dディレクトリが無い場合はこれをルート権限で作成します。conf.dディレクトリの下にdhcp-client.confを上記ブログの内容で作成します。これもルート権限で作成します。editorは何を使用しても構いません。dhclientが常駐しているかどうかを確認するためにはpgrepを使いますが、これはpre-installされているはずです。通常のターミナルを使用して上記作業を行います。ルート権限での作業はsuを使ってrootに切り替えるか、sudoコマンドを使用します。尚当方の環境は有線はありません。wifiのみのインターネット接続環境ですが、ホームゲートウェイはBL902HWとなっています。

      削除
    2. ご連絡ありがとうございます。
      丁寧に説明ありがとうございます。cd でルートに行っていると勘違いしていました。
      無事1時間切断が解決できました、この度はありがとうございました。

      削除

コメントを投稿