Raspberry Piのアクセスポイント化

Raspberry Pi

アクセスポイント化

アクセスポイント化とローカルサーバを組み合わせることで、ローカルでサイトを表示することができます。ローカルで表示するメリットは、Wi-Fiなどのネット環境に依存しないことです。

ローカルサーバの設定については、こちらの記事「Raspberry Piでローカルサーバを建てる」をご覧ください。

ソフトウェアのインストール

dnsmasqとhostapdのインストールをします。

$ sudo apt-get install dnsmasq hostapd

インストールが終了したら、これらのサービスを終了させます。

$ sudo systemctl stop dnsmasq
$ sudo systemctl stop hostapd

dhcpの設定

設定ファイル/etc/dhcpcd.confを編集します。

$ sudo nano /etc/dhcpcd.conf

以下の文を追記し、保存します。

interface wlan0
static ip_address=192.168.100.1/24

nanoは、「Ctrl + S」で保存、「Ctrl + X」で終了することができます。

dhcpを再起動します。

$ sudo service dhcpcd restart

dnsmasqの設定

設定ファイル/etc/dnsmasq.confを編集します。

$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.old
$ sudo nano /etc/dnsmasq.conf

以下の文を追記します。

interface=wlan0
dhcp-range=192.168.100.2,192.168.100.40,255.255.255.0,24h

dhcp-rangeの設定は、dhcpの時に設定したアドレスと照らし合わせて記入してください。

hostapdの設定

設定ファイル/etc/hostapd/hostapd.confを編集します。

$ sudo nano /etc/hostapd/hostapd.conf

ここで自作ルーターのSSIDやパスワードを設定します。

interface=wlan0
driver=nl80211
ssid=YOUR_SSID
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=YOUR_PASSWORD

「YOUR_SSID」と「YOUR_PASSWORD」をお好きなものに書き換えてください。ただし、パスワードは8〜64文字です。

保存して終了したら、この設定ファイルを読むようにhostapdの動作ファイルを書き換えます。

$ sudo nano /etc/default/hostapd

「#DAEMON_CONF=””」の行を以下のように書き換えます。

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

ここまで完了したら、hostapdとdnsmaskを起動します。

$ sudo systemctl start hostapd
$ sudo systemctl start dnsmasq

Failed to start hostapd.service: Unit hostapd.service is masked.とエラーが出る

このようなエラーが出た場合は、以下の手順を踏んでみてください。

$ sudo systemctl unmask hostapd
$ sudo systemctl enable hostapd
$ sudo systemctl start hostapd

IP転送

設定ファイル/etc/sysctl.confを編集します。

$ sudo nano /etc/sysctl.conf

30行目前半あたりの「#net.ipv4.ip_forward=1」の「#」外して保存します。

net.ipv4.ip_forward=1

マスカレード

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

iptables v1.6.0: can’t initialize iptables table…とエラーが出る

上記の場合、以下の手順で解決できます。
エラーが出ていない場合は、スキップしてください。

$ sudo modprobe ip_tables
$ sudo echo 'ip_tables' >> /etc/modules
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

エラーがなければここから↓

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

exit0の上に以下を追記します。

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

保存し、再起動します。

$ sudo reboot

起動後、しばらくすると先程hostapdで設定したSSIDが見えるようになってます。
私は「pis」というSSIDにしました。設定したパスワードで繋いでみましょう。

以上で完了です。

その他のエラーについては、以下の対処法を参考にしてください。

エラーの対処法

iptables v1.6.0: can’t initialize iptables table…とエラーが出る

上記の場合、以下の手順で解決できます。

$ sudo modprobe ip_tables
$ sudo echo 'ip_tables' >> /etc/modules
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo modprobe ip_tablesでエラーが出る

上記の場合、以下の手順で解決できます。

$ sudo apt update
$ sudo apt upgrade
$ sudo reboot
$ sudo modprobe ip_tables

Permission denied

sudoをつけてるのにアクセス拒否される場合は、

$ sudo su

の後に再度実行してみてください。

コメント

タイトルとURLをコピーしました