「動かない」原因は、すべてログが教えてくれる。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回は、AlmaLinux 9にFreeRADIUSをインストールし、サーバーとしての土台を作りました。
しかし、今の状態は「空っぽの箱」です。
「どのルーターからの問い合わせに答えるのか」「どんなユーザーがログインできるのか」を教えてあげないと、RADIUSサーバーは沈黙したままです。
先生、前回インストールしたあと、勝手に設定ファイルを開いてみたんです。
そしたら英語だらけで何千行もあって、そっと閉じました…。
これ全部設定しないといけないんですか? Wi-Fiで使いたいだけなのに!
大丈夫よ、コウ君。
実際に触るファイルは2つか3つだけ。
今回は、RADIUSの基本である「クライアント(ルーター)の登録」と「ユーザーの登録」を行い、コマンドラインから認証テストを成功させるところまで進めましょう。
これができないと、Wi-Fi(802.1X)認証なんて夢のまた夢よ!
本記事では、FreeRADIUSの心臓部である設定ファイル(clients.conf / users)の書き方と、プロのエンジニアが必ず行う「デバッグモード」でのトラブルシューティング手法を完全解説します。
🔐 FreeRADIUS完全攻略講座(バックナンバー)
- 【第1回】RADIUSサーバーとは?仕組みの完全図解とインストール
- 【第2回】基本設定とユーザー追加(clients.conf/users)&接続テスト
- 【第3回】脱・テキスト管理!MariaDB(MySQL)との連携設定
- 【第4回】Web GUIで楽々管理!daloRADIUSの導入と設定
- 【第5回】Wi-Fi認証の鉄板!EAP-PEAP認証と電子証明書の作成
- 【第6回】セキュリティ極限強化!Google Authenticatorによる多要素認証
- 【第7回】「誰がいつ繋いだ?」ログ管理とアカウンティングの極意
- 【第8回】トラブルシューティングと冗長化(Failover)構成
第1章:802.1X認証への道筋と今回のゴール
作業に入る前に、全体像を確認しておきましょう。
多くの方がRADIUSサーバーを構築する目的は、Wi-Fiのセキュリティ強化、つまり「WPA2/WPA3-Enterprise(802.1X認証)」の実現だと思います。
802.1X認証は非常に複雑なプロセス(EAP: Extensible Authentication Protocol)を経て行われますが、その土台となるのは、今回行う「サーバーとクライアント(AP)の信頼関係」と「ユーザー情報の照合」です。
⚠️ 重要:いきなりWi-Fi設定をしないこと
初心者がやりがちな失敗は、RADIUSサーバーの設定も不完全なまま、いきなりスマホやPCからWi-Fiに繋ごうとすることです。
失敗した時に「サーバーが悪いのか」「Wi-Fi APの設定が悪いのか」「スマホの設定が悪いのか」切り分けができなくなります。
まずはサーバー単体で、コマンドラインツール(radtest)を使って「100%認証が通る状態」を作ることが、成功への近道です。
第2章:RADIUSクライアントの登録「clients.conf」
まずは、「どのルーター(NAS)からの問い合わせなら答えるか」を定義します。
この設定を行わないと、RADIUSサーバーは問い合わせを「未知の機器からの攻撃」とみなして無視(Ignored)します。
1. ファイルの場所とバックアップ
設定ファイルは /etc/raddb/clients.conf です。
編集前に必ずバックアップを取りましょう。
sudo cp /etc/raddb/clients.conf /etc/raddb/clients.conf.bak
2. 設定の追記
エディタでファイルを開きます。
sudo nano /etc/raddb/clients.conf
ファイルの末尾に、あなたの環境に合わせて以下の設定を追記します。
(ここでは例として、Wi-FiルーターのIPを 192.168.1.1 とします)
client my_wifi_ap {
ipaddr = 192.168.1.1
proto = *
secret = ChangeMe123
shortname = office-ap
nas_type = other
}
各項目の詳細解説
| 項目 | 説明 |
|---|---|
| client [名前] | 管理用の名前です。ログには出ませんが、人間が識別するために分かりやすい名前(client office_main_router など)を付けます。 |
| ipaddr | Wi-Fi APやVPNルーターのIPアドレス。192.168.1.0/24 のようにサブネット指定も可能ですが、セキュリティ的には個別IP指定が推奨されます。 |
| secret | 共有シークレット(パスワード)。 ルーターとRADIUSサーバーの間で本人確認するための合言葉です。絶対に推測されにくい複雑な文字列にしてください。 ※Wi-Fi APの設定画面にも同じ文字列を入力します。 |
| shortname | ログに出力される短い名前。ログ解析時に役立ちます。 |
💡 ネットワーク指定の活用
もし社内にWi-Fi APが100台ある場合、1つずつ書くのは大変です。
APの管理IPセグメントが決まっているなら、以下のようにまとめて書くことができます。
client office_network {
ipaddr = 192.168.10.0/24
secret = NetworkSecretKey
}
第3章:ユーザーの登録「users」
次に、接続する人間(ユーザー)を登録します。
本来は第3回で紹介するデータベース(MariaDB)や、Active Directory(LDAP)を使うのが一般的ですが、テスト段階や少人数ならテキストファイル管理で十分です。
1. ファイルの実体を確認
FreeRADIUS 3.0系では、/etc/raddb/users はシンボリックリンクになっています。
実体は /etc/raddb/mods-config/files/authorize です。
ls -l /etc/raddb/users # lrwxrwxrwx ... /etc/raddb/users -> mods-config/files/authorize
2. ユーザーの追加
エディタで編集します。
sudo nano /etc/raddb/mods-config/files/authorize
ファイルの先頭(コメントアウトの下)に、テスト用ユーザーを追記します。
# ユーザー名 属性 := "値" testuser Cleartext-Password := "password123"
Cleartext-Passwordとは?
「平文パスワード」という意味です。
「セキュリティ的に平文保存はマズいのでは?」と思うかもしれませんが、RADIUS認証(特にCHAPやEAP)を行うためには、サーバー側が「生のパスワード」を知っている必要があります。
ハッシュ化されたパスワードでは、認証方式によっては計算が合わずに失敗することがあるため、FreeRADIUSでは標準的に Cleartext-Password 属性を使用します。
【応用】属性(Attribute)による制御
認証だけでなく、特定の情報をルーターに返却する(認可)設定もここに書けます。
例えば、特定のユーザーを「VLAN 10」に割り当てたい場合:
manager01 Cleartext-Password := "adminpass"
Tunnel-Type := VLAN,
Tunnel-Medium-Type := IEEE-802,
Tunnel-Private-Group-Id := "10"
2行目以降は必ずインデント(タブ)を入れてください。
第4章:最強の武器「デバッグモード」を使いこなす
設定が終わったら起動…ではありません。
FreeRADIUSには、詳細なログを画面に出力しながら起動する「デバッグモード」があります。
これを使わずにトラブルシューティングするのは、目隠しで運転するようなものです。
デバッグモードでの起動手順
まず、バックグラウンドで動いているサービスがあれば停止します。
sudo systemctl stop radiusd
次に、デバッグオプション -X(大文字)を付けて起動します。
sudo radiusd -X
画面に大量のテキストが流れます。
これはエラーログではなく、モジュールの読み込みや設定のチェック状況です。
最後に以下のように表示されて止まれば、起動成功です。
Ready to process requests
この画面は開いたままにしておき、テストを行います。
第5章:接続テスト実践「radtest」
サーバーがリクエスト待ち受け状態になったので、別のターミナルウィンドウを開いて、認証リクエストを投げてみましょう。
使うコマンドは radtest です。
1. 認証成功のパターン
自分自身(localhost)に対して、先ほど登録した testuser でアクセスします。
※ testing123 は、デフォルトで設定されているlocalhost用のシークレットです。
# 書式: radtest [ユーザー] [パスワード] [サーバーIP] [ポート] [シークレット] radtest testuser password123 127.0.0.1 1812 testing123
実行結果:
Sent Access-Request Id 234 from 0.0.0.0:48762 to 127.0.0.1:1812 length 77 ... Received Access-Accept Id 234 from 127.0.0.1:1812 to 0.0.0.0:0 length 20
Access-Accept と出れば認証成功です!
この時、デバッグモード(radiusd -X)の画面には、以下のようなログが流れているはずです。
(0) Login OK: [testuser] (from client localhost port 1812)
2. 認証失敗のパターン(パスワード間違い)
わざとパスワードを間違えてみます。
radtest testuser wrongpass 127.0.0.1 1812 testing123
実行結果:
Received Access-Reject Id 235 ...
Access-Reject(拒否)されました。正常な動作です。
第6章:トラブルシューティング・虎の巻
もしデバッグ画面でエラーが出たり、radtestが通らない場合は、以下のポイントをチェックしてください。
Q1. “Ignoring request to auth address * port 1812 from unknown client”
原因: 接続元のIPアドレスが clients.conf に登録されていません。
対策: テストを実行しているサーバーのIPが正しく登録されているか確認してください。localhost以外からテストする場合は、そのPCのIPを登録する必要があります。
Q2. “Failed to bind to socket: Address already in use”
原因: すでに別のFreeRADIUSプロセスが起動しています。
対策: sudo killall radiusd で全てのプロセスを終了させてから、再度 radiusd -X を実行してください。
Q3. “Error: No reply from server for ID …”(タイムアウト)
原因: ファイアウォールで遮断されています。
対策: 第1回で解説した firewall-cmd の設定を見直してください。UDP 1812ポートが開いている必要があります。
第7章:本番稼働と運用管理
テストが完了したら、デバッグモードを終了(Ctrl+C)し、正式にサービスとして起動します。
systemctlでの管理
# 起動 sudo systemctl start radiusd # 自動起動ON sudo systemctl enable radiusd # ステータス確認 sudo systemctl status radiusd
ログローテーション
運用を始めるとログファイル(/var/log/radius/radius.log)が肥大化します。
AlmaLinuxでRPMインストールした場合、自動的に /etc/logrotate.d/radiusd が作成され、適切にローテーションされるよう設定されていますので、基本的にはそのままで大丈夫です。
まとめ:802.1Xへの第一歩完了
お疲れ様でした!
これで、あなたのRADIUSサーバーは「知っているルーターからの問い合わせ」に対し、「登録されたユーザーか否か」を判定できるようになりました。
今回の重要ポイント:
clients.confにはWi-Fi APやVPNルーターのIPとシークレットを登録する。usersファイルにはユーザー名とCleartext-Passwordを登録する。radiusd -Xで詳細ログを見ながらradtestで確認する。
しかし、ユーザー管理をテキストファイルで行うのは、人数が増えると限界が来ます。
「100人分のユーザーを追加して!」と言われたら、手作業ではミスも起きますよね。
次回、第3回は「脱・テキスト管理!MariaDB(MySQL)との連携設定」です。
データベースを使ってユーザー情報を効率的に管理し、SQLコマンド一発で大量のユーザーを追加・削除できるようにします。
本格的な運用のための必須スキルですので、ぜひ続けて読んでくださいね!
▼ エンジニアとしてのキャリアを加速させる ▼
RADIUSを実践練習
「VPS」で自分専用環境
サーバー知識を年収に
「ITエンジニア転職」

コメント