スマホとラズパイとWiFiルータ

また間があいてしまいました。

ADSLを解約してから、モバイルルータを家の中でも使っていたのだけど、やはり遅いし、どうにも使いにくい。あきらめて光にしたけど、今は混んでる時期なのか、工事は随分先に。そこでこれまでの家の中のWiFi環境をそのままに、ADSLモデムのかわりにスマホをつなぐことにします。これで他の機器は何も変更なしでいいので。構成は

スマホ—-(USB接続)—-Raspberry Pi3—-(Ethernet接続)—-Buffalo WiFiルータ

という感じです。もちろんスマホでUSBテザリングします。

すなおにスマホがusb0として認識されていればいいのですが、されてない場合は以下をやってみましょう。

$ sudo ifconfig usb0 up
$ sudo dhcpcd usb0

それで以下のようにIPが振られていてインターネットに接続できればOK。

$ ifconfig usb0
usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
       inet 192.168.42.116  netmask 255.255.255.0  broadcast 192.168.42.255

次にルータにつなぐeth0を設定しますが、めんどくさいので固定IPにします。/etc/dhcpcd.conf でこんな感じに。

interface eth0
static ip_address=192.168.0.10/24
static domain_name_servers=127.0.0.1

一方BuffaloのWiFiルータのインターネット側の設定も固定IPにして、

IPアドレス 192.168.0.2
デフォルトゲートウェイ 192.168.0.10
DNS(プライマリー) 192.168.0.10

などとします。

あとはforwardの設定をしておしまい。

動的には sysctl -w net.ipv4.ip_forward=1 で、パーマネントには
/etc/sysctl.conf で
net.ipv4.ip_forward=1
にします。そしてiptablesで以下のように。

sudo iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
sudo iptables -A FORWARD -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o usb0 -j ACCEPT

参考にしたのは以下です。

https://superuser.com/questions/1505796/4g-lte-device-usb-tethering-raspberry-pi-ethernet-router-is-this-poss