楽天UN-LIMITを自宅固定回線にした話(成功編)

PC/IT関連

前回の記事で半分失敗におわった本件…
別の手段でもってリベンジを行いました。
結果的にはうまくいき、恒久的に運用していきます。
(無料期間の間だけな)←

あらすじと手法

自宅の固定回線を楽天UN-LIMITに切り替えて無料化を目論む。
最初に取った手段は、「Raspberry Pi2+USBドングル(with楽天sim)」
しかし、USBドングルの発熱が想定以上に多く、
10数Mbps/sを出し続けると5分程でドングルが機能停止する事態に。

次なる手として、iPhone6s Plus(with楽天MNO)をUSBテザリング手法をとった。
USBドングルだったら見た目すっきり?したのになー。
なお、iPhone6s plusで楽天MNOに接続するには脱獄作業が必要です。
LTE通信を強制させないとつながらない為です。
iPhoneで楽天MNOに接続するにはこちらの記事

こんな感じでいく

ハマったポイント(概要)

先にハマったポイントを記載。
全部で数時間(かかったんかい)で解決できたからアレですけど…。

  1. /etc/network/interfacesに関する古い情報が散乱してる
  2. eth0(LANポート)がstatic IP取得してくれない
    (dhcpcd.serviceがちゃんと動いてくれない)
  3. iptablesが設定情報を保存してくれない
  4. ufwを採用したけど、NAT設定が反映されない

/etc/network/interfacesに関する古い情報が散乱してる

Linuxのネットワーク設定に関わる interfacesファイルの設計思想が変わり、ほとんど変更しなくなりました。
しかし、Googleで出てくる記事が古く、interfacesファイルを直接編集するようなものばかり。
自身の無知が原因ですが、ずいぶんと騙されました…。
結局、ハマりポイント2の原因になったし。

eth0(LANポート)がstatic IP取得してくれない

ラズパイにあるLANポートは、eth0が割り当てられており今回の構成では、static IPを設定して家庭内LANに接続し、ゲートウェイの役割を持たせます。

簡単な話なんですが、設定を入れてもeth0が想定通り動いてくれない事象が発生しました。設定をinterfacesファイルに書いてたのが原因できれいさっぱり、/etc/dhcpcd.confに記載することで問題解決に至りました。

iptablesが設定情報を保存してくれない

今回の構成では、ブリッジの役割があるのでNAT設定が必要です。
iptablesに設定を入れますが、再起動で綺麗さっぱりなくなる。
iptables-saveしても、消えちゃうので、「えぇ!?」ってなりました。
その辺は常識みたいで、iptables-persistantを導入で固定化できる模様です。
前に触ったときは、そんなことなかったんだけどな…

しかーし!ufwというiptablesのラッパーが存在するらしく
そちらの方が面白そうだったので、ufwで固定化を実現しました。

ufwを採用したけど、NAT設定が反映されない

初めて触ることになったufw…。
NAT設定を入れて再起動するも、反映してくれません。

情報が少なく、英語まで読み進めたところ、confに記載するCOMMITはフィルター毎に必要ということが判明。
COMMITの1文追加したら、普通に動いてくれました。

やったこと

では、やったことに入りたいと思います。

  1. 必要モジュールのインストール
  2. USBテザリング/LANポートのネットワーク設定
    (/etc/dhcpcd.confの編集)
  3. ip_forwardの有効化
  4. UFWへのNAT設定の追加
  5. USB接続時の自動接続設定(udev)

必要モジュールのインストールをします。
ずっとapt-get使ってたんですが、最近は時代遅れみたいですね…。

$ sudo apt-get install ipheth-utils libimobiledevice-utils ifuse usbmuxd
$ sudo mkdir /media/iphone
$ sudo ifuse /media/iphone

これでUSB接続したiPhoneを繋げるとテザリングできるようになります。
ifconfigコマンドで確認するとeth1が増えていることがわかると思います。
usbXが増える場合もあるみたいですね。

続いて、自宅LANに接続してルーターとして動作させる為に
ネットワーク周りに設定をいれていきます。
eth0は静的IP、eth1はDHCPでIP取得します。
基本的に /etc/network/interfaces には触らず、dhcpcd.confをいじります。
interfacesファイルに設定を入れてしまうと dhcpcd.service が動かなくなります。

$ sudo vi /etc/dhcpcd.conf

# 設定対象のインタフェースを指定
interface eth0
# 静的IPの指定 IPアドレスは何でも
static ip_address=192.168.100.1/24
# IPv6なんて意識高いのはLANで使わないので…
noipv6
# 問い合わせ先のルーター(GW)を指定
static routers=192.168.100.254
# DNSの設定
#static domain_name_servers=hogefuga

interface eth1
dhcp

NICの設定が完了したら、次は受信パケットを転送する許可をします。
デフォルトだとこの動作が無効化されていますので。
コメントアウト文があるので、#を削除すればそのまま使えます。

$ sudo vi /etc/sysctl.conf

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1 ←この行の#を削除

で、続いてiptablesにNATの設定を入れますが
今回は、ラッパーアプリである「ufw」の設定をして
ufwからiptablesに設定を反映してもらいます。
SSHでラズパイを操作してる環境だとSSHの許可設定も必要です。

$ sudo apt-get install ufw

まずは、forwardポリシーが拒否になっているので許可に変更

$ sudo vi /etc/default/ufw

DEFAULT_FORWARD_POLICY=“ACCEPT”

$ sudo vi /etc/ufw/before.rules

# NAT
*nat
-F ←ネットによると重複登録防止に必要らしいが、うちの環境はエラー
:POSTROUTING ACCEPT [0:0]
# LAN側(192.168.*)からeth1を出てくものはマスカレード設定
-A POSTROUTING -s 192.168.0.0/16 -o eth1 -j MASQUERADE
COMMIT

最後にufwを有効化します。
設定がまずいとenable時になんか言われると思います。
statusがアクティブになっていればOKです。

$ sudo ufw enable
$ sudo ufw status

この時点で、LANがラズパイルーターを通過して
インターネットの世界に出れているか確認ができます。

最後に、ラズパイを再起動したり、iPhoneの抜き差しをしても
自動でつながるようにする設定を入れておきます。
先にudevで実行するshell scriptを用意します。

$ sudo vi /lib/udev/iphoneconnect
$ sudo chmod 755 /lib/udev/iphoneconnect

#!/bin/bash
umount /media/iPhone #アンマウントされない用
ifuse /media/iPhone
ipheth_pair

続いてudevの設定をします。

$ sudo vi /lib/udev/rules.d/90-iphone-tether.rules

ACTION==”add”, SUBSYSTEM==”net”, ENV{ID_USB_DRIVER}==”ipheth”, SYMLINK+=”iphone”, RUN+=”iphoneconnect”

再起動して自動接続を確認したら完了です。

総括

USBドングルのような発熱問題もなく安定しています。
本来、数万円する端末なので当然といえば当然ですが…。
ライトニングケーブル接続なので、iPhoneの充電切れもありません。

これで、1年ほどはネット回線費用が0円になりました。
やったー。

コメント

タイトルとURLをコピーしました