Raspberry Piのアクセスポイント化 & ルータ化がうまくいかない時はこの通りにやればおk
はじめに
こんにちは。RPiのアクセスポイント化、ルータ化で詰まっていた情弱です。
今回、自分がはまっていた所を解決してくれた記事(英語)を見つけたので、それに沿って手順を書いて行きますね。
ワイヤレスアダプタを固定IPアドレスに
"/etc/network/interfaces"を編集します。
sudo emacs /etc/network/interfaces
次に、
"allow-hotplug wlan0" 以外のwlan0、wpaに関する行をコメントアウトし、以下のように固定IPアドレスの設定をします。(/etc/network/interfacesの後半部分)
allow-hotplug wlan0 iface wlan0 inet static address 192.168.42.1 netmask 255.255.255.0 gateway 192.168.1.1 #iface wlan0 inet manual #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #iface default inet dhcp
DHCPサーバのインストール及び構築
DHCPサーバをインストールします
sudo apt-get install isc-dhcp-server
設定
sudo emacs /etc/dhcp/dhcpd.conf
"option domain-name"の部分(2行)をコメントアウトし、"authoritative"の部分をアンコメントします。
#option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative;
そして同ファイルの最後に以下のモノを加えてください
subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.50; option broadcast-address 192.168.42.255; option routers 192.168.42.1; default-lease-time 600; max-lease-time 7200; option domain-name "local"; option domain-name-servers 8.8.8.8, 8.8.4.4; }
次に以下を設定します。
sudo emacs /etc/default/isc-dhcp-server
そして、INTERFACES="" → INTERFACES="wlan0" と書き加えてください。
これを終えたら、次のコマンドでdhcpサーバを再起動します。
sudo service isc-dhcp-server restart
アクセスポイントデーモン(hostapd)のインストール及び構築
インストール
sudo apt-get install hostapd
以下の様にWifiネットワークの設定を書きます。
sudo emacs /etc/hostapd/hostapd.conf
interface=wlan0 driver=nl80211 #driver=rtl871xdrv #最後に説明します ssid=MyPi hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=raspberry wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
そして、上記の設定を/etc/default/hostapdから読み込むようにします。
sudo emacs /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Wifiとイーサネット間のルーティング設定
以下をアンコメントしてフォワーディング設定をします。
sudo emacs /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
echo 1 > /proc/sys/net/ipv4/ip_forward
以下のコマンドでRPiをルータにする設定をします。
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT sudo iptables-save > /etc/iptables.ipv4.nat #ルーティングテーブルのセーブ
なお、hostapd.confを書き換えた場合はこれをもう一度行ってください
最後に、起動時にルーティングテーブルの読み込みを行うようにします。
sudo emacs /etc/network/interfaces
以下を最後の行に加えてください
pre-up iptables-restore < /etc/iptables.ipv4.nat
これでうまくいかない場合.....
“hostapd.conf”に"driver="が2行ありましたね、そこが肝になってきます。
それぞれが使っているUSBのWifiドングルにより、どちらを使うかが決まってきます。
どちらが使えるかは、以下のコマンドでわかります
sudo apt-get install iw
iw list
"nl80211 not found"
という出力が出た場合、"driver=nl80211"は使えません。"driver=rtl871xdrv"を使いましょう。
さらに、rtl871xdrvを使う場合は、使うべきhostapdも変わってきます。
以下のように設定するだけでOKです!
wget http://www.adafruit.com/downloads/adafruit_hostapd.zip unzip adafruit_hostapd.zip sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIG sudo mv hostapd /usr/sbin sudo chmod 755 /usr/sbin/hostapd
これでアクセスポイント(SSID:MyPi)を見つけられるはずです。
以上。
日本語の記事では"driver=nl80211"を扱った記事がたくさんあったのですが、"driver=rtl871xdrv"を扱ったものが無くて全然構築が出来ずに困っていたわけです。
これで皆もRPiをアクセスポイントに出来る!やったね!!