ラズパイ 無線LANアクセスポイント化


20160610_wlan_ap

ラズパイを 無線LANアクセスポイント 化します。

準備するもの
無線LANの親機になるドングル
BUFFALO WLI-UC-GNM を使用しました

手順は大きく4つです
(1) 無線LANを固定IPアドレスにする
(2) DHCPサーバーの構築
(3) アクセスポイントデーモンの構築
(4) イーサネットと無線LANのルーティングの設定

無線LANのIPアドレスを 192.168.42.1 にして、192.168.42.10 から 192.168.42.50 まで配布するようにします。
有線LAN側のゲートウェイが 192.168.1.1 とします。

作成や変更したファイルは Github で公開しています

(1) 無線LANを固定IPアドレスにする
/etc/network/interfaces を変更する

# 下記のようにコメントにする
#allow-hotplug wlan0
#iface wlan0 inet manual
#    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#allow-hotplug wlan1
#iface wlan1 inet manual
#    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

# 下記を追加する
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
gateway 192.168.1.1

(2) DHCPサーバーの構築
DHCP サーバーとして isc-dhcp-server をインストールする

$ sudo apt-get install isc-dhcp-server

/etc/dhcp/dhcpd.conf を変更する

# 下記のようにコメントにする
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

# 下記のコメントを外す
#authoritative;
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;
}

/etc/default/isc-dhcp-server を変更する

# 下記のように変更する
#INTERFACES=""
INTERFACES="wlan0"

(3) アクセスポイントデーモンの構築
hostapd をインストールする

$ sudo apt-get install hostapd

/etc/default/hostapd を変更する

# 下記のように変更する
#DAEMON_CONF=""
DAEMON_CONF="/etc/hostapd/hostapd.conf"

/etc/hostapd/hostapd.conf を作成する

interface=wlan0
driver=nl80211
ssid=fablab_raspi
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=0456649009
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

(4) イーサネットと無線LANのルーティングの設定
/etc/sysctl.conf を変更する

# 下記のコメントを外す
#net.ipv4.ip_forward=1
net.ipv4.ip_forward=1

iptables コマンドで /etc/iptables.ipv4.nat を作成する

$ 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
$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

/etc/network/interfaces を変更する

# 下記を追加する
pre-up iptables-restore < /etc/iptables.ipv4.nat

確認
再起動する

$ sudo reboot

dhcpd が起動している

$ ps auxw | grep dhcpd
root       649  0.0  0.8  10476  7928 ?        Ss   23:06   0:00 /usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid wlan0

hostapd が起動している

$  ps auxw | grep hostapd
root       692  0.2  0.3   5920  2996 ?        Ss   23:06   0:01 /usr/sbin/hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf

dhcpd のポートが開いている

$ sudo netstat -ap | grep dhcpd
udp     0   0 *:bootps          *:*         651/dhcpd       
udp     0   0 *:20899           *:*         651/dhcpd       
udp6   0   0 [::]:60482        [::]:*       651/dhcpd       
raw     0   0 *:icmp              *:*    7   651/dhcpd       

無線LANのIPアドレスが 192.168.42.1 になっている

$ ifconfig
wlan0     Link encap:Ethernet  HWaddr cc:e1:d5:3e:33:87  
  inet addr:192.168.42.1  Bcast:192.168.42.255  Mask:255.255.255.0
  inet6 addr: fe80::3640:cb77:8e64:6f8a/64 Scope:Link

ルーティングが設定されている

$ sudo iptables -L
...
Chain FORWARD (policy ACCEPT)
target     prot opt source      destination         
ACCEPT   all  --  anywhere    anywhere   state RELATED,ESTABLISHED
ACCEPT   all  --  anywhere    anywhere            
...

参考
How to Set up a Raspberry Pi as a Wireless Access Point
Raspberry Piのアクセスポイント化 & ルータ化がうまくいかない時はこの通りにやればおk
Raspberry Piの無線LANアクセスポイント化


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です