色々と情報が古くなってきたので,以下の記事にまとめ直しています.こちらを参照ください.
WM×LI: Raspberry Pi を 5.0GHz 無線アクセスポイント及びルーターにする
この4月から一人暮らしを始め,自宅のネットワーク環境をすべて自分で管理することができるようになったので,Raspberry Piでルーターおよび無線LANルーターを自作してみた.
Raspberry Pi を無線アクセスポイント化する話はネットでチラホラ見かけるがその応用だ.
まず,Raspberry Pi にはイーサネット端子が1つしか無いのでUSBから変換するケーブルを繋ぐ.今回利用したのは LUA3-U2-ATX という製品.繋ぐだけで認識され ifconfig コマンドを叩けば,eth1 としてきちんと表示される.
【送料無料】バッファロー LUA3-U2-ATX [10/100M USB2.0用 LANアダプター (Wii対応)] |
また無線LANルーターとして動かすためには,お馴染みの WLI−UC−GNM を利用した.こちらも繋ぐだけで認識され ifconfig コマンドを叩けは,wlan0 として表示される.
バッファロー AirStation USB2.0用 無線LAN子機 親機・子機同時モード対応 11n・11g・11b対応 WLI−UC−GNM2 1個 |
これらのハードを Raspberry Pi に繋いで起動したら設定を始める.
最終的な目標はこんな感じ.
WAN側(eth0) :DHCPで自動でIPアドレス取得,モデムと接続. LAN側(eth1) :192.168.100.1,ハブと接続. LAN側(wlan0):192.168.200.1,無線LANアクセスポイントとして動作. eth1 および wlan0 には DPCPサーバー を設定し,接続した機器には自動でIPアドレスを振るように設定.
まずは必要なソフトをインストールする.
$ sudo apt-get install hostapd $ sudo apt-get install isc-dhcp-server
そして,以下のファイルを管理者権限で開き,編集していく.
■/etc/default/hostapd
hostapd の設定ファイルの場所を設定するため,DAEMON_CONF のコメントアウトを外し以下のように書き換える.
(編集前)
#DAEMON_CONF=""(編集後)
DAEMON_CONF="/etc/hostapd/hostapd.conf"
■/etc/hostapd/hostapd.conf
もともと存在しないファイルのため新規で作成し,以下のように記して保存する.
interface=wlan0 driver=nl80211 ssid=hogehoge hw_mode=g channel=8 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=piyopiyo wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
■hostapd自動起動
最後に上記の設定で,OS起動時にhostaptが自動で起動するように設定する.
$ sudo update-rc.d hostapd enable
【2016.11.13追記】
jessieからはsystemdが標準になったので以下のコマンドで自動起動化する.
$ sudo systemctl enable hostapd.service
■/etc/default/isc-dhcp-server
DHCPを動作させるネットワークを設定するため,INTERFACES に wlan0 と eth1 を加える.
(編集前)
INTERFACES=""(編集後)
INTERFACES="wlan0 eth1"
■/etc/dhcp/dhcpd.conf
DHCPサーバの設定をする.
コメントアウト.
(編集前)
option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org;(編集後)
#option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org;
コメントアウト解除.
(編集前)
#authoritative(編集後)
authoritative
さらに末尾に以下を追加.
subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.101 192.168.100.200; option routers 192.168.100.1; option broadcast-address 192.168.100.255; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; option domain-name-servers 8.8.8.8, 8.8.4.4; host hoge { hardware ethernet aa:aa:aa:aa:aa:aa; fixed-address 192.168.100.2; } } subnet 192.168.200.0 netmask 255.255.255.0 { range 192.168.200.101 192.168.200.200; option routers 192.168.200.1; option broadcast-address 192.168.100.255; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; option domain-name-servers 8.8.8.8, 8.8.4.4; host piyo { hardware ethernet bb:bb:bb:bb:bb:bb; fixed-address 192.168.200.2; } }
ここでは MACアドレスが
aa:aa:aa:aa:aa:aa のクライアントの IPアドレス を 192.168.100.2 に,
bb:bb:bb:bb:bb:bb のクライアントの IPアドレス を 192.168.200.2 に設定するようにしている.
■/etc/network/interfaces
eth1 および wlan0 の IPアドレス を固定,および iptables コマンドの設定をする.
※jessieではこの設定ではうまくいかないので,下の【追記】を参照方.
コメントアウト.
(変更前)
auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf(変更後)
#auto wlan0 #allow-hotplug wlan0 #iface wlan0 inet manual #wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
さらに,末尾に以下を追加.
iface eth1 inet static address 192.168.100.1 netmask 255.255.255.0 broadcast 192.168.100.255 pre-up /sbin/sysctl net.ipv4.conf.all.forwarding=1 pre-up /sbin/iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE pre-up /etc/init.d/isc-dhcp-server stop post-up /etc/init.d/isc-dhcp-server start post-down /sbin/iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -j MASQUERADE post-down /sbin/sysctl net.ipv4.conf.all.forwarding=0 iface wlan0 inet static address 192.168.200.1 netmask 255.255.255.0 broadcast 192.168.200.255 pre-up /sbin/sysctl net.ipv4.conf.all.forwarding=1 pre-up /sbin/iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j MASQUERADE pre-up /etc/init.d/isc-dhcp-server stop post-up /etc/init.d/isc-dhcp-server start post-down /sbin/iptables -t nat -D POSTROUTING -s 192.168.200.0/24 -j MASQUERADE post-down /sbin/sysctl net.ipv4.conf.all.forwarding=0
【2016.11.13追記】
jessieからは固定IPアドレスの設定ファイルが変更になったので,以下のように設定する.①〜③
①IPアドレス固定化(/etc/dhcpcd.conf)
interface=eth1 static ip_address=192.168.100.1/24 interface=wlan0 static ip_address=192.168.200.1/24
②IPフォワーディングの有効化
# vim /etc/sysctl.conf
net.ipv4.conf.all.forwarding=1
③NAPTの設定及びisc-dhcp-server再起動(/sbin/forward_and_nat_set.shを作成)
#!/bin/bash /sbin/iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE /sbin/iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j MASQUERADE /bin/systemctl restart isc-dhcp-server.service exit 0
④/sbin/forward_and_nat_set.sh自動起動
sudo crontab -e
@reboot /sbin/forward_and_nat_set.sh
最後に再起動する.
$ sudo reboot
正しく設定が行えていれば,これで Raspberry Pi がルーター,無線LANルーター,DHCPサーバーとして動作する.
肝は iptables でルーティングを設定する箇所.一旦,dhcpを止めて,ルーティングを決めてから,dhcpを再起動する.
ただし,この設定のままではファイアーウォールがガバガバなので,Raspberry Pi をゲートウェイにする場合には,もう少し設定をするべき.
0 件のコメント:
コメントを投稿