いぶろぐ雑記

auひかりで発生する「通信が突然切れる問題」を、DHCPサーバーを立てて解決する

こんにちは。

リモートワークが普及してから、自宅のネット回線整備は社会人の嗜みになりましたが、

我が家のauひかり回線はどーも調子が悪いことが多い…

いろいろ調べると解決策がありそうだったので、解決したお話です。

auひかり、回線がプツプツ切れる

我が家のネット回線は「BIGLOBE光 auひかり」コースです。

回線自体はauひかりのG-fastを使って、プロバイダはBIGLOBEになるやつ。

VDSL回線でも下り最大600Mbpsくらい出せるすごいやつです。

ただ、速度が速いのはいいんですが、契約当初から「回線がプツプツ切れる」問題に悩まされていました。

突然、1分ほど通信ができなくなってしまうんです。

どーしたもんかと調べていたら、なんとなく原因がわかってきました。

ホームゲートウェイのDHCPサーバーがお粗末

auひかりから貸与されている我が家のホームゲートウェイは「BL1000HW」です。

どうやら、こいつのDHCPサーバーがお粗末で、IPアドレスのリースに失敗している模様。

auひかりで二重ルーターにしたら断続的に切断される現象が改善された話。 | かなぽんの備忘録Vol.2

巷では二重ルーターにするのが一般的な解決策のようですが、DHCPサーバーさえ外部に立ててやれば解決するはず。

というわけで立ててみることにしました。

DHCPサーバー構築手順

環境

DHCPサーバーを動作させるサーバーのIPアドレスは固定しておいてください。

昔、DHCPサーバーを立てたときはISC DHCP Serverを使った記憶がありましたが、今はKeaが流行りっぽい。

動作速度も速いらしいので、今回はKeaを使います。

手順

HGWのDHCPサーバー機能をオフ

まずは諸悪の根源であるBL1000HWのDHCPサーバー機能をオフにしてください。

「IPアドレスとDHCPサーバ設定」からオフにできます。

ここからは、DHCPサーバーを動かすUbuntuで作業していきます。

Keaセットアップ

まずは、KeaとDBに使用するMariaDBをインストールします。

sudo apt install kea mariadb-server kea-admin

MariaDBの初期設定を済ませておきます。

sudo mysql_secure_installation

MariaDBにログインして、Kea用のユーザーを作成します。

grant all on *.* to kea@localhost identified by 'password';

Kea用のデータベースを作成。

CREATE DATABASE kea_db;

データベースを初期化します。

kea-admin db-init mysql -h localhost -u kea -p password -n kea_db

以上でMariaDBのセットアップは完了。

/etc/kea/keactrl.confを編集して、DHCPv6をオフにする設定にしておきます。

dhcp6=no

続いて、 /etc/kea/kea-dhcp4.confを作成します。

NICのインターフェース名やDBのパスワード、DHCPでリースするIPアドレスの範囲など、適宜環境に合わせて修正してください。

{
    "Dhcp4": {
        "interfaces-config": {
            "interfaces": [ "enp2s0" ]
        },
        "control-socket": {
            "socket-type": "unix",
            "socket-name": "/tmp/kea4-ctrl-socket"
        },
        "lease-database": {
             "type": "mysql",
             "name": "kea_db",
             "user": "kea",
             "password": "password",
             "host": "localhost",
             "port": 3306
        },
         "hosts-database": {
             "type": "mysql",
             "name": "kea_db",
             "user": "kea",
             "password": "password",
             "host": "localhost",
             "port": 3306
         },
        "renew-timer": 900,
        "rebind-timer": 1800,
        "valid-lifetime": 3600,
        "option-data": [
            {
                "name": "domain-name-servers",
                "data": "1.1.1.1, 8.8.8.8"
            }
        ],
        "subnet4": [
            {
                "subnet": "192.168.0.0/24",


                "pools": [ { "pool": "192.168.0.10 - 192.168.0.100" } ],


                "option-data": [
                    {
                        "name": "routers",
                        "data": "192.168.0.1"
                    }
                ]
            }
        ],
        "loggers": [
        {
            "name": "kea-dhcp4",
            "output_options": [
                {
                    "output": "/var/log/kea/kea-dhcp4.log"
                }
            ],
            "severity": "INFO",


            "debuglevel": 0
        }
      ]
    }
}

あとはDHCPサーバーを起動すればOK。

keactrl start

きちんとIPアドレスがリースされていれば作業完了です。

しばらく様子をみましたが、断線は無事解消されていました。

まとめ

DHCPサーバーを外付けしたことで、プチプチ断線がまったく起こらなくなりました。

やっぱりHGWが悪さしていたんですねぇ…

昔、このHGWを市販のルーターで置き換えようとしましたが、MACアドレスを偽装するだけでは認証をクリアできず、挫折したのを思い出しました。

今はなにか回避策があるのかな…

あと、ISC DHCP Serverに比べて、Keaの設定は少し大変かなぁ、とも思いました。

何はともあれ、困りごとが解決してめでたしめでたし。