「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に