ラズベリーパイでローカルネットワーク用のルーターを構築してみます。
ルーターを構築する際にラズベリーパイのOSのバージョンによって方法が異なりまして、今回はTrixie(トリクシー:Debian 13)のOSで、ルーターは無線接続専用機として話を進めます。
※今回構築するルーターはローカルネットワークのみで、グローバルネットワークは利用できません。
各デバイス(パソコン等)からルーターへの接続の際の情報は
IDアドレス:192.168.10.1
SSID:rpi4_router
パスワード:raspberry
になるように設定します。
※ 上記の値は変更可です。
始めにNetworkManagerの設定から始めます。
$ sudo nmcli con add type wifi ifname wlan0 con-name rpi-ap autoconnect yes ssid rpi4_router mode ap $ sudo nmcli con modify rpi-ap ipv4.method manual ipv4.addresses 192.168.10.1/24 $ sudo nmcli con modify rpi-ap 802-11-wireless-security.key-mgmt wpa-psk $ sudo nmcli con modify rpi-ap 802-11-wireless-security.psk "raspberry" $ sudo nmcli con up rpi-ap
上記手続きで、NetworkManagerの方の設定は終了です。
$ $ nmcli device status
で
DEVICE TYPE STATE CONNECTION eth0 ethernet connected Wired connection 1 wlan0 wifi connected rpi-ap lo loopback connected (externally) lo
wlan0は一番目の無線LANインターフェースになっていまして、CONNECTIONの箇所がrpi-apになっていれば設定は終了です。
※APに関してはWi-Fiルーターのモードの違いは何ですか/ブリッジモード・APモード・中継機モード・WBモードなどの違いがわかりません | バッファローをご覧ください。
続いて、dnsmasqの設定を行います。
$ sudo micro /etc/dnsmasq.conf
でdnsmasqの設定ファイルを開き、ファイルの末尾に
interface=wlan0 dhcp-range=192.168.10.10,192.168.10.50,255.255.255.0,12h
を追加してファイルを保存します。
保存後に
$ sudo systemctl enable dnsmasq
を実行して、dnsmasqを使用出来るようにします。
設定が反映されているか?を確認するために
$ ip addr show wlan0
を実行します。
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether dc:a6:32:d9:eb:cb brd ff:ff:ff:ff:ff:ff
inet 192.168.10.1/24 brd 192.168.10.255 scope global noprefixroute wlan0
valid_lft forever preferred_lft forever
inet6 fe80::8a5f:6a43:6825:28f2/64 scope link noprefixroute
valid_lft forever preferred_lft forever
太字で示したIPアドレスが記載されていれば、設定は終了です。
$ sudo systemctl restart dnsmasq
でdnsmasqを再起動すれば、ルーターとをして使用できるようになります。
パソコンやスマホのWiFiの設定を開いて、rpi4_routerが表示されていれば接続できます。
自作ルーターに複数のデバイスを接続して、任意のデバイスから他のデバイスにPing等を送信してみますと、Destination Host Unreachableといったエラーが返ってくることがあります。
このような時はルーター用のパソコンの設定を変更します。
$ cat /proc/sys/net/ipv4/ip_forward
でルーターがパケット転送(フォワーディング:forwarding)装置として動作するかどうかを調べ、
0
が出力された場合は、
$ sudo sysctl -w net.ipv4.ip_forward=1 # 設定の永続化 echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
を実行してパケット転送を許可します。