RaspberryPiをPPPoE対応Wifiルーターにする

先日家のWifiルーターが壊れました。新しいWifiルーターが届くまでの間なんとかしたいと思い、急遽RaspberyPiをWifiルーターに仕立てあげることにしました。
セキュリティ対策が不十分な可能性がありますので、ご注意ください。

## 使用機器
- Raspberry Pi 1 Model B
  - OS : Raspbian
- 無線アダプタ(WLI-UC-GNM)


##接続構成
インターネット <-> VDSL<N>Bー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を振ります。

``` /etc/network/interfaces
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.11.1
netmask 255.255.255.0
```

しかしOS再起動後、wlan0にIP割当たらない事象が発生
[こちら](http://akkagi.info/20150717_web/)を参考にとりあえず/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を適切に修正する

```/etc/hostapd/hostapd.conf 
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を編集
設定ファイルの場所を指定する

```/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に以下を追加

```/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を編集
インターフェイスを指定

```/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 の設定
以下の行のコメントを外して有効にします。

```/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](http://hyottokoaloha.hatenablog.com/entry/2015/02/24/000655)
[Raspberry PiにPPPoE接続でグローバルIPを割り当てる。 | Hobby Room of Cactus](http://www.sabo-net.info/2015/05/06/raspberry-pi%E3%81%A7pppoe%E6%8E%A5%E7%B6%9A%E3%81%A7%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%ABip%E3%82%92%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%80%82/)
[ネット環境が壊れた?! Raspberry Piルーター化 | あっかぎのページ](http://akkagi.info/20150717_web/)
[Raspberry Pi をWi-Fiアクセスポイント＆ルーター化する - 猫ぱーんち！](http://d.hatena.ne.jp/penkoba/20130806/1375742819)
[debian - I always need to ifdown/ifup wlan0 after reboot - Unix & Linux Stack Exchange](http://unix.stackexchange.com/questions/93063/i-always-need-to-ifdown-ifup-wlan0-after-reboot)