Raspberry pi を無線AP&ルータ化して佐倉綾音に接続(意味浅)する
作業メモです。
ドングルの用意
・・・の前に、今回の構築イメージです。
もともと、RaspberryPiはBuffaloの無線APに WLI-UC-GNM で繋がっていました。
www.amazon.co.jp
当初、Raspberry piを有線で繋げ、WLI-UC-GNM を無線APにすればいいやと思っていたのですが、 WLI-UC-GNM は無線APにはならないっぽかったので、今回はPLANEXの GW-USNANO2A を別挿しして、無線2台体制で使用します。
というわけで、用意したドングルは上記2つになります。
静的IPの割り当て
まずは GW-USNANO2A を挿し、状態を確認します。
pi@raspberrypi:~ $ lsusb Bus 001 Device 005: ID 2019:ab2a PLANEX GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS] Bus 001 Device 004: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070] Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device005で認識されていることが確認できました。
なお、もとからLANに繋がっている WLI-UC-GNM が Device 004にて認識されています。
IPを割り振ります。
pi@raspberrypi:~ $ cat /etc/network/interfaces (略) allow-hotplug wlan0 iface wlan0 inet static address 192.168.4.168 netmask 255.255.255.0 gateway 192.168.4.254 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf allow-hotplug wlan1 iface wlan1 inet static address 192.168.168.168 netmask 255.255.255.0 gateway 192.168.168.168
WLI-UC-GNM がwlan0、 GW-USNANO2A がwlan1になるので、冒頭のイメージ通りに指定します。
hostapd の設定
AP化するためにhostapdを使用します。
hostapdは sudo apt-get install hostapd
でも落ちてくるのですが、GW-USNANO2A 用ではありません(ドライバが違います)。
ここでは手動でダウンロードします。
$ wget http://www.adafruit.com/downloads/adafruit_hostapd.zip $ unzip adafruit_hostapd.zip $ sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.org $ sudo mv hostapd /usr/sbin $ sudo chmod 755 /usr/sbin/hostapd
次にhostapd用の設定を行います。
このファイルは存在していないはずなので、新規に作成してください。
内容のSSID、passphrase等は適宜変更してください。
$ cat /etc/hostapd/hostapd.conf interface=wlan1 driver=rtl871xdrv ssid=佐倉綾音 hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=ayanesakura wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
/etc/default/hostapd
に、hostapd起動時に先ほど作ったファイルを読み込むよう指定します。
pi@raspberrypi:~ $ cat /etc/default/hostapd # Defaults for hostapd initscript # # See /usr/share/doc/hostapd/README.Debian for information about alternative # methods of managing hostapd. # # Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration # file and hostapd will be started during system boot. An example configuration # file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz # DAEMON_CONF="/etc/hostapd/hostapd.conf" (後略)
では起動テストしてみます。
pi@raspberrypi:~ $ sudo hostapd /etc/hostapd/hostapd.conf Configuration file: /etc/hostapd/hostapd.conf drv->ifindex=4 l2_sock_recv==l2_sock_xmit=0x0x1bc8638 (略) Using interface wlan1 with hwaddr 00:22:cf:fa:84:2a and ssid '佐倉綾音'
SSID '佐倉綾音' でAPが立ち上がりました。
ただしまだDHCPを立ててないので、接続するには静的IPを求めに行く必要があります。
ではサービスとして立ち上げておきましょう。
$ sudo service hostapd start
DHCPの設定
IPを動的に佐倉サーバ(?)に払い出してもらうために、DHCPを設定しましょう。
$ sudo apt-get install isc-dhcp-server
※ updateしないと見つからない場合もあるようです。
$ sudo apt-get update
$ sudo apt-get install isc-dhcp-server
/etc/dhcp/dhcpd
を設定します。
pi@raspberrypi:~ $ cat /etc/dhcp/dhcpd.conf (前略) # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. authoritative; # ← コメントアウトを外します (中略) # 以下、作成したいネットワーク環境に応じて変更します。 subnet 192.168.168.0 netmask 255.255.255.0 { # サブネット range 192.168.168.10 192.168.168.100; # DHCP払い出し範囲 option broadcast-address 192.168.168.255; # ブロードキャストアドレス option routers 192.168.168.168; # ルータアドレス default-lease-time 600; # 秒 max-lease-time 7200; # 秒 option domain-name "ayane-l-ocal"; # ドメイン名 option domain-name-servers 8.8.8.8, 8.8.4.4; # DNS }
続いて、IP払い出しを行うネットワークをwlan1側に設定します。
pi@raspberrypi:~ $ cat /etc/default/isc-dhcp-server (前略) # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="wlan1"
起動しましょう。
$ sudo service isc-dhcp-server start
これで佐倉綾音LANに接続するとIPが動的に払い出されます。
IPルーティングの設定
さて、アクセスポイントにはなりましたが、ルータとして機能して欲しいので、ip forwardingの設定をします。
まずは /etc/sysctl.conf
の設定。
pi@raspberrypi:~ $ cat /etc/sysctl.conf (前略) # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 # ← コメントアウトを外します (後略)
この設定によりip forwardingが有効になりますが、そのためには再起動の必要があります。
再起動せずに有効化したい場合は、/proc/sys/net/ipv4/ip_forward
に1を打ち込んでください。
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
続いてiptables
の設定を行います。
wlan0 ~ wlan1 の通信をforwardingしてあげましょう。
$ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE $ sudo iptables -A FORWARD -i wlan0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT $ sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
最後に、 /etc/iptables.ipv4.nat
に書き込みます。
$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
設定したiptablesのデータをwlan1起動時に読み込んでもらうよう、 /etc/network/interfaces
を再度編集します。
pi@raspberrypi:~ $ cat /etc/network/interfaces (略) allow-hotplug wlan1 iface wlan1 inet static address 192.168.168.168 netmask 255.255.255.0 gateway 192.168.168.168 up iptables-restore < /etc/iptables.ipv4.nat # 追記
以上で設定は全て完了です。
接続テスト
SSID'佐倉綾音'に接続し(hostapd)、IPが自動的に払い出され(dhcp)、外部ネットワークに繋がれば(ip forwarding)、すべて正常に完了です。
おつかれさまでした。