Raspberry Pi 備忘録 / Mbedもあるよ!

Raspberry Pi であれこれやった事の記録

ルーターにする

Raspberry pi を無線アクセスポイント/ルータにする。

本当の目的はルーティングではなく、スマホと直接接続したいだけなのだが、せっかくだからルーターにしておく。
そうしないと、スマホからRpiに接続した際に、インターネットに行けなくて、困ると思う。

参考URL karaage.hatenadiary.jp

まずアクセスポイントにする

wlan0 のIPを設定する

/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface wlan0 inet static
address 192.168.0.1
netmask 255.255.255.0
pre-up iptables-restore < /etc/iptables.ipv4.nat

最後の行は、後述するiptablesの設定。

hostapdのインストールと設定

インストール

# apt-get install hostapd
# cd /etc/hostapd/
# sudo cp /usr/share/doc/hostapd/examples/hostapd.conf.gz ./
# sudo gzip -d hostapd.conf.gz

起動すると、

nl80211 driver initialization failed.

とか言われちゃうので、コンパイルする。

参考URL Jens Segers - Realtek RTL8188 based access point on Raspberry Pi

# wget https://github.com/jenssegers/RTL8188-hostapd/archive/v2.0.tar.gz
# tar -zxvf v2.0.tar.gz
# cd RTL8188-hostapd-2.0/hostapd
# make
# make install

設定する

/etc/hostapd/hostapd.conf 編集

interface=wlan0
ssid=__SSID__
channel=1
#bridge=br0

# WPA and WPA2 configuration

macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=1
wpa=3
wpa_passphrase=__PW__
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

# Hardware configuration

driver=rtl871xdrv
ieee80211n=1
hw_mode=g
device_name=RTL8192CU
manufacturer=Realtek

起動

# service hostapd restart

SSID,PW,IP,Netmask,GW,DNSを主導で設定すれば、アクセスできる。

SSH での接続を確認した。

DHCP

DHCPにするために、isc-dhcp-serverのインストールと設定

# apt-get install isc-dhcp-server

/etc/dhcp/dhcpd.conf 編集

authoritative をアンコメントして、アクティブにする。

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.101 192.168.0.150;
  option broadcast-address 192.168.0.255;
}

などする。

# /etc/init.d/isc-dhcp-server start
# service hostapd restart

ルーティングの設定

/etc/sysctl.confの設定

net.ipv4.ip_forward=1

iptablesの設定

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

サービスの自動起動

# update-rc.d hostapd defaults
# update-rc.d isc-dhcp-server defaults

再起動して、動作チェック!

これで、RPiとスマホだけでも、通信できるように成った。