Raspberry Pi で ルータつくる

「Ubuntu 16.04 でルータつくる」
https://qiita.com/nanbuwks/items/fe8145fc8b989be9d427
上記内容をRaspberry Pi (Raspbian Jessie) でやってみた。

このページには上記記事とは異なったところだけ記します。
なお、これはWi-FiのAPとしては機能させません。Wi-FiのAPとして動かすには、別記事で。
「Raspberry Pi 3 で BUFFALO WI-U2-433DM 動かして無線LANルータにする」
https://qiita.com/nanbuwks/items/cb2f50bbe240a9ee9f09


# 固定アドレスを割り振る

```

$ sudo vim /etc/dhcpcd.conf
```

として、末尾に以下を追記

```

interface eth0
static ip_address=102.168.42.1/24
```
## isc-dhcp-server

```

$ sudo /etc/init.d/isc-dhcp-server start
[....] Starting isc-dhcp-server (via systemctl): isc-dhcp-server.serviceJob for isc-dhcp-server.service failed. See 'systemctl status isc-dhcp-server.service' and 'journalctl -xn' for details.
 failed!
```

となったので、

```

# grep -v -e ^# -e ^\s*$ /etc/dhcp/dhcpd.conf
```
としたら

```

ddns-update-style none;
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
```

空っぽでした。なので、

```

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
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;
    }
```
を書き足しました。

# iptablesのパラメータ

```
$ ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:4e:68:13 
          inetアドレス:192.168.42.1 ブロードキャスト:192.168.42.255  マスク:255.255.255.0
          inet6アドレス: fe80::8c27:2c04:1750:9b0c/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:261 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:141 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:16033 (15.6 KiB)  TXバイト:20111 (19.6 KiB)

eth0:1    Link encap:イーサネット  ハードウェアアドレス b8:27:eb:4e:68:13 
          inetアドレス:169.254.12.24 ブロードキャスト:169.254.255.255  マスク:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1

eth1      Link encap:イーサネット  ハードウェアアドレス 98:f1:99:7f:9d:79 
          inetアドレス:192.168.179.3 ブロードキャスト:192.168.179.255  マスク:255.255.255.0
          inet6アドレス: fe80::e3d2:ef35:8418:f30/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:136 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:80 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:27577 (26.9 KiB)  TXバイト:13393 (13.0 KiB)

lo        Link encap:ローカルループバック  
          inetアドレス:127.0.0.1 マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:65536  メトリック:1
          RXパケット:200 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:200 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1 
          RXバイト:16656 (16.2 KiB)  TXバイト:16656 (16.2 KiB)

wlan0     Link encap:イーサネット  ハードウェアアドレス b8:27:eb:1b:3d:46 
          inet6アドレス: fe80::87a4:8014:c1d3:46f7/64 範囲:リンク
          UP BROADCAST MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)
```
だったので、

```

$ sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
$ sudo  iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo  iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

```

としました。

# ハードウェアの対処

outbound側をWiMaxアダプタを接続したのですが、NEC Speed Wi-Fi NEXT WX03がトラブル出まくりました。

- フリーズする
- RaspberryPiとのコネクションが切れる
- RasbperryPiとのコネクションが切れるとその後回復してもisc-dhcp-serverやdnsmasqが動かなくなる
- WiMax側の電波を掴まなくなる

いつもはWX03用のクレイドルを使っていて、クレイドル使っているときは上記の問題は発生はするものの頻度は少なかったことから、今回の接続に主原因があると考えました。
試しに Rasbperry Pi の USBコネクタの VBus の電圧を測ってみたところ、4.6V程度でした。これが原因かな。

対策として以下の作業をしたところ、かなり軽減した感じです。

- Rasbperry Pi の USB ポートに電源ブーストの配線を取り付け
- Raspberry Pi の 5V供給方法をmicroUSB経由からGPIPピン経由に変更
- WX03のUSBケーブルを太い感じのものに交換
- WX03のWiFi機能をOFFに