DesignAssembler

備忘録に近い

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

こんにちは。

もう何番煎じかもよく分かりませんがとりあえず眠らせてるRaspberry Piを無線LANアクセスポイント化しました。

このページを参考にしました。というか、このページほとんどそのまんまです・・・
How to Set up a Raspberry Pi as a Wireless Access Point


手順

固定IPアドレスの設定
DHCPサーバー(isc-dhcp-server)のインストールと設定
・APデーモン(hostapd)のインストールと設定
wi-fiイーサネット(wlan0とeth0)のルーティング

こちらの環境は
Mac OS X Yosemite
Raspberry Pi Model B+ (Raspbian)
間でssh接続をしています。


事前にwi-fiドングルを準備しておいてください。
(チップによってAP化できないものもあるみたいですが、以下のものならばできます)

BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2

BUFFALO 11n対応 11g/b 無線LAN子機 親機-子機デュアルモード対応モデル WLI-UC-GNM2

これはコンパクトで安いのでオススメです。自分もこれを使っています。



固定IPアドレスの設定

ではターミナルを開いて以下を入力します。

$ sudo vi /etc/network/interfaces

以下の3行をこのようにコメントアウトしてください。

#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

そしてwlan0の設定をしていきます。以下の文を追加してください。

iface wlan0 inet static
address 192.168.42.100
netmask 255.255.255.0
#gateway 192.168.0.10
pre-up iptables-restore < /etc/iptables.ipv4.nat

できたファイルの全貌はこんな感じになります。(自分の場合)

auto lo

iface lo inet loopback
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1

iface wlan0 inet static
address 192.168.42.100
netmask 255.255.255.0
#gateway 192.168.0.10
pre-up iptables-restore < /etc/iptables.ipv4.nat
#この文は下で解説します。


allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp


これで固定IPアドレスが設定できました。


DHCPサーバー(isc-dhcp-server)のインストールと設定

DHCP
DHCPとは? - ネットワークエンジニアを目指して


ではDHCPサーバーのソフトウェアであるisc-dhcp-serverをインストールします。

$ sudo apt-get install isc-dhcp-server

*1

次に設定です。

$ sodo vi /etc/dhcp/dhcpd.conf


まず、12、13行目の

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

コメントアウトしてください。次に、21行目の

#authoritative;

の#をとって有効化してください。そしてファイルの一番下に以下を追加してください。

ping-check true;

subnet 192.168.42.0 netmask 255.255.255.0 {
option routers 192.168.42.100;
option broadcast-address 192.168.42.255;
option subnet-mask 255.255.255.0;
option domain-name "local";
option domain-name-servers 8.8.8.8,8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
range 192.168.42.101 192.168.42.254;
 }

option routersにはinterfacesで設定したwlan0のIPアドレスを指定してください。
option domain-name-serversはGoogleDNSを指定してます。

次にdhcpサーバーのデフォルトインターフェースをwlan0に設定します。

$ sudo vi /etc/default/isc-dhcp-server

この中の

#INTERFACES=""

INTERFACES="wlan0"

と変更します。

*2

APデーモン(hostapd)のインストールと設定

hostapd(無線LANAP機能を持つソフトウェア)をインストールします。

$ sudo apt-get install hostapd

そして設定ファイルを編集します。確かデフォルトではこの設定ファイルはなかったはずです。

$ sudo vi /etc/hostapd/hostapd.conf

*3


そして以下を追加してください。

interface=wlan0
ssid=home0001
hw_mode=g
channel=3
wpa=2
wpa_passphrase=ここでパスワードを設定
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

ssid=の部分で任意のssidを設定してください。


次に、hostapdにどこにこの設定ファイルがあるか教える記述をします。
※自分はここでハマりました・・・

$ sudo vi /etc/default/hostapd


10行目の

#DAEMON_CONF=""

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

としてください。

自分はここで最下行のDAEMON_OPTSを編集してしまっていて動きませんでした・・・


wi-fiイーサネット(wlan0とeth0)のルーティング

IPフォワーディングを有効にします。

$ sudo vi /etc/sysctl.conf

28行目の文をコメントアウトします。

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

以下のコマンドでアクティベートします。

$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

ラズパイをルーターとして使うために以下のコマンドを入力します。

$ 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

iptables、つまりfirewallの処理ですね。

そしてルーティングテーブルを/etc/iptables.ipv4.natに保存します。

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


最後に、初めの方に書いたinterfacesファイルについてです。

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

この一文でラズパイがブートされた時にルーティングテーブルを復元します。

これで設定が完了です。設定を適用させるために再起動します。

$ sudo reboot


AP化

再起動したらついにAPとして動作させます。

$ sudo ifconfig wlan0 192.168.42.100 netmask 255.255.255.0 up
$ sudo /etc/init.d/isc-dhcp-server start

ここでエラーが出たら設定ファイルを見直してください。

$ sudo hostapd /etc/hostapd/hostapd.conf

起動するとこんな感じになります。

f:id:hyottokoaloha:20150223160810p:plain

なんかFailed to update rate sets in kernel module とか出てますが動くので気にしません


f:id:hyottokoaloha:20150223161333j:plain



f:id:hyottokoaloha:20150223161349j:plain

おーちゃんと見えてる見えてる

インターネット接続もキッチリできます。



感想参照類

hostapdの設定のとこでだいぶ時間食ってしまいました・・・

tcpdump入れてるのでパケット解析の学習がはかどります。


この方はwi-fiドングル2個挿ししてます。interfacesの設定を変えるればできそうです。カッコイイです。RaspberryPi Wifi APを使った無線ルーターの設定 - Qiita

他にも参考にさせてもらいました。ありがとうございます。

Ubuntu を無線 LAN ルータとして稼働させる - Qiita

Raspberry Pi をTorルータにするメモ — (n)

RPi - Raspberry Pi で Tor ルーター ( Onion Pi )を構築する方法

torルーターもいいですね。今度やってみます。

こちらの本も参考にさせてもらいました。

Raspberry Piクックブック (Make:PROJECTS)

Raspberry Piクックブック (Make:PROJECTS)

*1:20150521修正 isc-dhcp-serverがics-dehcp-serverになっていたので訂正しました。ご指摘ありがとうございます。

*2:20150925修正 "コメントアウト"を"変更"と修正しました。ご指摘ありがとうございます。

*3:20150925修正hostaod.confとタイポしていたのでhostapd.confに変更。ご指摘ありがとうございます。