見出し画像

ラズパイをWifiルーター化した話

こんにちは!

今回は以前書いた自宅ネットワーク環境の改善の詳細の一つとして、ラズパイ(Raspberry Pi)をWifiアクセスポイント化したことについて書こうと思います!前回の記事はこちら

なぜラズパイをアクセスポイントにしたのか?

今回構築した全体構成を改めて記載するとこんな感じ。

Wifiのルーターが無線機能付きのものなので(というか現代のルーターは大体そうだと思いますが)、普通に考えればルーターから無線を飛ばせばあえてラズパイをアクセスポイント化する必要はありません。ただ、実際に使ってみたところ、これがなかなかうまく行かず、無線機能を使うとルーターがフリーズする現象が多発しました。フリーズしてしまうと電源スイッチも機能しなくなってしまって電源アダプタを抜くしかないという。

いろいろと製品名で検索したところ同じような症状の事例はでてくるものの本質的に解決につながるようなものはなく、そもそも電源をきるのに電源アダプタを抜かないといけないというあたり、ユーザー側でできることは限られている気がしてならないのでこちらの無線機能は泣く泣く使わないことにしました。IPv6に対応したルーター自体はどのみちに必要なってくるので無駄な買い物になったわけではありませんが、ちょっと残念ですね。ちなみに、無線機能をオフにしている状態ではルーターは安定して可動できています。

新たに無線ルーターを買っても良いんですが、またうまくいかなくなる可能性もあるのと、手元にラズパイが一個余っていたという事情から、今回はこちらのラズパイを使ってアクセスポイント化してみようと思い立ったわけです。昔ラズパイの活用法を調べていたときにアクセスポイント化の話は目にしていたので、「今が使うときだ!」という感じですねw

全体的な考え方はこちらの記事を参考させていただきましたが、DHCPまわりはいろいろとあって別パッケージを使うことにしています。


アクセスポイント用パッケージ「hostapd」

ラズパイを(というかLinux全般を)アクセスポイント化するにあたって使われるパッケージは「hostapd」というものです。aptのパッケージ内にも入っているので、いつもどおりapt installでインストールしておきます。

$ sudo apt install hostapd 

さっそくhostapdの設定をしていきたいわけですが、そのまえにラズパイのipアドレスを固定するために「/etc/dhcpcd.conf」に記載を加えていきます。今回は、ラズパイの内蔵無線のwlan0をアクセスポイント化するので、こちらに適当なipアドレスをふっていきます。「/etc/dhcpcd.conf」に下記を追記。

interface wlan0
static ip_address=192.168.10.1/24

hostapdの設定は色々と書いている場所があるのであえてここで詳細には解説しませんが、基本的にやることはアクセスポイントとしての設定ファイルの作成と、設定ファイルの場所の指定です。

まず、設定ファイルとしては「/etc/hostapd/hostapd.conf」を作成して下記を記載。

interface=wlan0
driver=nl80211
hw_mode=g
channel=1
country_code=JP
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ssid=<SSID名を記載>
wpa_passphrase=<パスワードを記載>
ieee80211n=1
ieee80211d=1
ieee80211h=1

この設定については下記の記事が非常に詳しいですが、今回はそんなに詳しく設定しておらず、シンプルな設定で使っています。ちなみに、手元のWifiのUSB子機が2.4 GHzにしか対応していないので、2.4GHz(hw_mode=g)で使用しています。このあたりは家の無線環境を見て5GHzの利用も検討したほうが良いかも知れません(マンションなので、だいぶいろんな無線が飛び交っています)。。。

この設定ができたら、設定ファイルの場所を「/etc/default/hostapd」に追記(もともとコメントアウトされている「DAEMON_CONF」の行に追記&コメント外し)。

DAEMON_CONF="/etc/hostapd/hostapd.conf"

これをした上で、hostapdを起動すれば無線接続自体はできるようになります。hostapdの起動コマンドはこちら

$ sudo systemctl unmask hostapd
$ sudo systemctl restart hostapd 


DHCPサーバーの構築

次に、このラズパイにDHCPサーバーを導入します。DHCPについてを簡単に説明すると、要するにアクセスしてきた端末に自動的にIPアドレスを降るためのサーバーです。ちなみにDHCPは「Dynamic Host Configuration Protocol」の略です。詳細はこちら

DHCPサーバーとしては「isc-dhcp-server」というパッケージを利用します。いつもどおり、aptからインストール。

$ sudo apt install isc-dhcp-server 

こちらの設定ファイルの場所は「/etc/dhcp/dhcpd.conf」なので、こちらに以下のうように記載。

subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.101 192.168.10.200
option domain-name-servers 8.8.8.8, 8.8.4.4;
	option routers 192.168.10.1;
}

見る人が見ればどういう設定をしているかはすぐわかると思いますが、簡単に説明すると、subnetとnetmaskで設定を行うネットワークを指定、rangeでipアドレスを割り当てる範囲を指定、domain-name-serverはGoogleのDNSサーバーである「8.8.8.8」と「8.8.4.4」を指定、routerとしてはラズパイのipアドレスを指定。もうちょっと色々と設定しなきゃいけないかと思ったんですが、案外さくっと設定出来ました。


ポートフォワーディング設定

最後に必要になってくるのがポートフォワード設定。DHCPでデフォルトルートをラズパイに設定しているので、各デバイスはまずはラズパイにアクセスするわけですが、あとはそのアクセスをラズパイからインターネット(正確にはバッファロールータのネットワーク)に転送するための設定ですね。

まずはポートフォワードを有効化するため、「/etc/sysctl.conf」でコメントアウトされている下記の行の#を削除。

net.ipv4.ip_forward=1

次に、iptableでマスカレード機能を有効化します。今回は無線(wlan0)をアクセスポイント化して、有線(eth0)に転送するため、下記のようなコマンドでOK。

$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

このコマンドを打つとポートフォワードの設定が出来ますが、起動のたびにその設定がリセットされてしまうので、この設定を固定化します。まずは下記のコマンドで現状の設定を保存

$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

そのうえで、起動時の実行コマンドとして下記を「/etc/rc.local」の「exit 0」の前の行に追記。

iptables-restore < /etc/iptables.ipv4.nat

これで、必要な設定ができたので、以上でラズパイをwifiルーターとして使うための設定が出来ました!


まとめ

今回はラズパイをwifiルーターとして使うための設定を行いました!
今の所安定してうまく可動してくれているので満足しています。やはりラズパイがあるといろいろとできることが多くて楽しいうえに助かりますね!今回のことでネットワーク関係の知識もまた多少増えたので、そういう意味でも良い機会になりました!次回は、softetherを使うためのPPPoEの設定について書く予定です。

それでは、また!

この記事が気に入ったらサポートをしてみませんか?