また間があいてしまいました。
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
/etc/network/interfaces に
auto eth0
iface eth0 inet dhcp
があるとdhcpcdの再起動でエラーになるのでコメントアウトしたほうが良さそうです。