Linuxをワイヤレスアクセスポイントにする:hostapdとdnsmasqで高性能Wi-Fiルーターを自作する

Network tutorial - IT technology blog
Network tutorial - IT technology blog

なぜLinuxでアクセスポイントを自作すべきなのか?

自作のアクセスポイント(AP)構築は、単なる技術的な趣味ではありません。オフィスのルーターが、接続デバイス数が20を超えたあたりで頻繁にフリーズする場面に遭遇したことがあります。一方で、古いUbuntuサーバーであれば、その程度の負荷は余裕で処理できます。APを自ら管理することで、トラフィックを完全に制御できるようになります。デバイスごとの帯域制限、DNSレベルでの広告ブロック、セキュリティのための完全分離されたゲストネットワークの作成などが可能です。

このシステムの核となるのが、hostapddnsmasqのコンビです。hostapdは電波の送出と認証を、dnsmasqはIPアドレスの割り当てとドメイン名の解決を担当します。これにNAT設定のためのIPTablesを数行加えるだけで、プロ仕様の極めて安定したルーターが手に入ります。

クイックスタート:5分でWi-Fiを飛ばす

すぐに結果を確認したい場合は、以下の最小限の手順を実行してください。この例では、wlan0をWi-Fi送信用カード、eth0をモデムからのインターネット受信用ポートと想定しています。

ステップ1:必要なツールのインストール

sudo apt update
sudo apt install hostapd dnsmasq -y
sudo systemctl stop hostapd
sudo systemctl stop dnsmasq

ステップ2:hostapdの設定

/etc/hostapd/hostapd.confファイルを作成します。ここでWi-Fiの名前(SSID)とパスワードを定義します:

interface=wlan0
driver=nl80211
ssid=Linux_AP_Pro
hw_mode=g
channel=7
wpa=2
wpa_passphrase=YourStrongPassword
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ステップ3:Wi-Fiカードに固定IPを割り当てる

sudo ip addr add 192.168.10.1/24 dev wlan0
sudo ip link set wlan0 up

ステップ4:テスト起動

sudo hostapd /etc/hostapd/hostapd.conf

この状態で、スマートフォンでWi-Fiをスキャンしてみてください。「Linux_AP_Pro」という名前が表示されれば、ハードウェアは正常に動作しています。

24時間365日安定稼働させるためのシステム設定

コンピュータを本格的なルーターにするには、自動化の設定とさらなる最適化が必要です。

1. ハードウェアの対応状況を確認する

Wi-FiカードがAP(アクセスポイント)モードをサポートしているか確認してください。iw listコマンドで素早くチェックできます。**”Supported interface modes”**のセクションにAPと表示されていれば、準備完了です。

iw list | grep -A 10 "Supported interface modes"

2. dnsmasqによるIP自動割り当て

dnsmasqのデフォルト設定ファイルは非常に冗長です。古いファイルをバックアップし、新しくシンプルな/etc/dnsmasq.confを作成することをお勧めします:

interface=wlan0
# .10から.100までのIPを割り当て、リース時間は12時間
dhcp-range=192.168.10.10,192.168.10.100,255.255.255.0,12h
# GoogleとCloudflareのDNSを使用
server=8.8.8.8
server=1.1.1.1
dhcp-option=3,192.168.10.1

3. IP転送とNATの有効化

現時点ではデバイスはWi-Fiに接続できていますが、まだインターネットには繋がりません。Linuxがネットワークカード間でパケットを転送できるように許可する必要があります。

/etc/sysctl.confを開き、net.ipv4.ip_forward=1の行のコメントアウトを解除します。その後、sudo sysctl -pコマンドで変更を適用します。

最後に、インターネットを共有するためにIPTablesでNATルールを設定します:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo apt install iptables-persistent

応用編:速度向上とセキュリティの強化

デフォルト設定で満足しないでください。ネットワークカードがAC規格(5GHz)をサポートしている場合は、hw_mode=ghw_mode=aに変更し、チャネル36または44を選択しましょう。5GHz帯を使用することで、近隣の数多くのWi-Fiネットワークによる干渉を避け、速度を54Mbpsから数百Mbpsへと向上させることができます。

また、/etc/default/hostapdを編集して、システムに使用する設定ファイルを指定します:DAEMON_CONF="/etc/hostapd/hostapd.conf"

実戦経験:パケットロス(Packet Loss)対策

自作APが昼間は快適なのに、夕方5時になると突然pingが20msから2000msに跳ね上がるという問題に悩まされたことがあります。wavemonで監視した結果、2つの主な原因を特定しました。

1つ目は過熱です。コンパクトなWi-Fiカードは冷却性能が低いことが多いです。15台以上のデバイスを同時に接続すると、カードが熱を持ち、ハードウェア保護のために出力を制限してしまいます。解決策はシンプルで、5Vのファンを設置してネットワークカードに直接風を当てることです。

2つ目はチャネル干渉です。channel=autoに設定していると、周囲のネットワークが強くなった際にhostapdが頻繁にチャネルを切り替え、接続が突然切れることがあります。スマートフォンのWi-Fiアナライザーアプリを使って最も空いているチャネルを見つけ、設定ファイルで固定しました。その結果、数ヶ月間安定して稼働しています。

トラブルを避けるための重要な注意点

  • NetworkManagerとの競合: Linux Desktopは通常、Wi-Fiの制御を自動的に奪います。競合を避けるため、NetworkManagerの設定ファイルでwlan0unmanaged(管理対象外)リストに追加する必要があります。
  • 省電力機能の無効化: 省電力モードは、しばらく操作した後にウェブ閲覧を再開する際などにラグを引き起こす可能性があります。iw dev wlan0 set power_save offコマンドで無効化してください。
  • ログの確認: 問題が発生したときは、推測に頼らないでください。journalctl -u hostapd -fコマンドを使えば、どのデバイスがなぜ接続を拒否されたのかを正確に把握できます。

ワイヤレスアクセスポイントを自作することは、リンク層(Link Layer)やネットワークプロトコルを深く理解するための最良の方法です。Raspberry Piや古いPCをお持ちの方は、ぜひ今日から試してみてください。設定過程でエラーが発生した場合は、下のコメント欄でお知らせください。サポートさせていただきます。

Share: