先日家のWifiルーターが壊れました。新しいWifiルーターが届くまでの間なんとかしたいと思い、急遽RaspberyPiをWifiルーターに仕立てあげることにしました。
セキュリティ対策が不十分な可能性がありますので、ご注意ください。
使用機器
- Raspberry Pi 1 Model B
- OS : Raspbian
- 無線アダプタ(WLI-UC-GNM)
##接続構成
インターネット <-> VDSLBー100E <-> Wifiルーター <-> 各機器
- インターネット接続のためにPPPoEが必要
- Wifiルーターのローカル側IPアドレスは192.168.11.1
- 配下の各機器は192.168.11.xx
手順
以下piユーザーでログインして実施
流れは以下の通り
- ログインパスワードを変更
- PPPoE設定
- Wifi側の固定IP設定
- hostapd設定
- DHCPサーバ設定
- ルーティング設定
ログインパスワード変更
piのパスワードを変更しておく
$ passwd
PPPoE設定
必要なパッケージをインストール
$ sudo apt-get update
$ sudo apt-get install pppoe pppoeconf
以下を実行し、PPPoEの設定
$ sudo pppoeconf
接続IDとパスワード以外は全てdefalutを選択した
固定IP
/etc/network/interfacesを編集
wlan0に固定IPを振ります。
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.11.1
netmask 255.255.255.0
しかしOS再起動後、wlan0にIP割当たらない事象が発生
こちらを参考にとりあえず/etc/rc.localの起動スクリプトの末尾のexit 0の手前に、3行追加。
$ sudo vi /etc/rc.local
...
ifconfig wlan0 192.168.11.1 netmask 255.255.255.0 up
/etc/init.d/isc-dhcp-server start
/etc/init.d/hostapd start
exit 0
でも本当はどうするべきか原因を調べたいところ。
hostapd設定
インストールする
$ sudo apt-get install hostapd
/etc/hostapd/hostapd.conf を編集
ssidとwpa_passphraseを適切に修正する
interface=wlan0
ssid=myssid
hw_mode=g
channel=3
wpa=2
wpa_passphrase=raspberrypi
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
/etc/default/hostapdを編集
設定ファイルの場所を指定する
DAEMON_CONF="/etc/hostapd/hostapd.conf"
hostapdを起動、自動起動設定もしておく
$ sudo service hostapd start
$ sudo update-rc.d hostapd enable
DHCPサーバ
インストールする
$ sudo apt-get install isc-dhcp-server
/etc/dhcp/dhcpd.confに以下を追加
...
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.10 192.168.11.20;
option broadcast-address 192.168.11.255;
option routers 192.168.11.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="wlan0"
DHCPサーバを起動、自動起動設定もしておく
$ sudo service isc-dhcp-server start
$ sudo update-rc.d isc-dhcp-server enable
ルーティング
/etc/sysctl.conf の設定
以下の行のコメントを外して有効にします。
net.ipv4.ip_forward=1
今すぐ設定する場合は以下のprocエントリに書き込みます。
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
iptablesの設定
セキュリティの観点で以下の内容は見直しの必要がありそう。
$ sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
$ sudo iptables -A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT
$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
(最初、ppp0の箇所をeth0としてしまっててうまくいかなかった。)
これをネットワーク設定時に読み込む設定にします。
/etc/network/interface の最後に以下の行を追加
up iptables-restore < /etc/iptables.ipv4.nat
残課題
- 不安定かも。朝起きたら、無線アダプタが認識しなくなっていた。OS再起動で復旧。
- 電波が弱い(カバーできる範囲が狭い)
- セキュリティ対策が十分か未検証
参考にしたサイト
Raspberry Piの無線LANアクセスポイント化 - DesignAssembler
Raspberry PiにPPPoE接続でグローバルIPを割り当てる。 | Hobby Room of Cactus
ネット環境が壊れた?! Raspberry Piルーター化 | あっかぎのページ
Raspberry Pi をWi-Fiアクセスポイント&ルーター化する - 猫ぱーんち!
debian - I always need to ifdown/ifup wlan0 after reboot - Unix & Linux Stack Exchange