摘要
在进行Linux SBC应用程序开发(如NanoPI,RPi)时连接到Internet并不罕见。 (真的吗)
在这种情况下,如果智能手机以USB网络共享模式连接,设备可以轻松地发布到互联网,但是从这个设备,通过有线局域网连接的设备可以访问NanoPI,但可以发布到互联网没有。
在这里,我将向您展示如何配置NanoPI,以便连接到LAN的设备也可以发送到Internet。
はじめに
NanoPI, RPiといったLinux SBCの応用開発を行う際にInternetに接続されてないことはよくあることです。(ほんとかな)
こうした場合、スマホをUSBテザリングモードにして接続すれば、当該機器は簡単にインターネットに出られるのですが、この機器から、有線LANで繋がった機器はNanoPIにはアクセスできるものの、インターネットには出られません。
ここでは、NanoPIを設定して、LANに接続した機器もインターネットに出られるようにする方法を紹介します。
DNSをたてる
いきなりちょっとそれますが、NanoPI上でdeadwoodを動かす に従い自前のDNSを立てましょう。NanoPI1台ならスマホのDNSを使うという手もありますが、パフォーマンスが違いますし、LANにつながった機器から参照するとなればなおさらです。
fowardingを有効にする
Linuxのdefaultでは無効になっている、fowardingを有効にします。
# Controls IP packet forwarding
# net.ipv4.ip_forward = 0
net.ipv4.ip_forward = 1
設定を有効化します。
sysctl -p /etc/sysctl.conf
iptablesを操作してMASQUERADEを設定します。
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o usb0 -j MASQUERADE
iptables -A FORWARD -i usb0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o usb0 -j ACCEPT
iptables-save -c > /etc/iptables.rules
起動時この設定が有効になるようfileを作ります。
# !/bin/sh
/sbin/iptables-restore < /etc/iptables.rules
exit 0
intaerfacesを設定し、default routeがスマホを向くようにします。
allow-hotplug eth0
no-auto-down eth0
iface eth0 inet static
address 192.168.254.80
netmask 255.255.255.0
dns-nameservers 127.0.0.1
allow-hotplug usb0
no-auto-down usb0
iface usb0 inet dhcp
post-up route add -net default dev usb0
dns-nameservers 127.0.0.1
rebootで繋がるはずです。
dhcpdをたてる
これでインターネットにはつながりましたが、LANにつながった機器からインターネットに出るのは容易ではありません。default routeを向け、dns-serversを指定しなくてななりません。開発中は接続も頻繁に変わるのでいっそ、dhcpdをたてて、全自動化してしまいましょう。NanoPIにUdhcpdをたてる に別記事を書きました。
結論
二つ以上のインターフェースがあれば設定次第でRouter化することができるが、その操作は意外と面倒で難しい。