背景
実家はJ:COM 横浜南経由のインターネット接続をしています。最近1Gbpsの回線にアップグレードしたためか、半年に一回程度自宅固有だったり、町単位での回線不良(20-30%ぐらいパケットロス)が発生する場合があります。
両親はその問題の切り分けなどできないため、外部からのサポートが必要なのですが、J:COMのインターネット回線が切れていては、原因が自宅内部の機材の問題なのか、またはJ:COM側の問題なのかが断言できないです。
そのため、povoを使った安価なバックアップ裏接続回線を作ってみました。
povo 2.0は、6ヶ月おきに何らかのトッピングを一時的にすれば速度は128kbpsで接続可能です。ssh程度ならば問題なく接続できています。
ちなみに、J:COM回線の回線状況監視は、smokepingを用いて、各種サーバにパケットを投げて見える化しています。
準備するもの
- KDDI/au povo sim
- LANポート付きモバイルルータ(今回はSIMフリー化されたDoCoMo Wi-Fi Station L-02Fを利用。 自宅サーバとの接続をWi-Fiで用いる場合はLANポートは不要です)
- 自宅サーバ(Raspberry PIでも可能、今回はIAサーバにFreeBSDをインストールして利用)
- 2nd Ethernet用のLANカード(今回は速度が不要なためUSB 100BASE-TXのLUA3-U2-ATXを利用)
- 外部のクラウドサーバ(今回はGoogle Cloud Platformの無料枠のCompute Engineを利用、有料でサーバを立てても良いですし、Oracle Cloud Platformの Always Freeの利用も可能でしょう)
物理構成図
作成中
論理構成図
作成中
機材の設定
自宅サーバのpovo回線のUSB Ethernetのドライバ読み込み
こちらはFreeBSD固有ですが、kernel起動時にUSBを認識されるために、設定しています。
/boot/loader.conf.local
自宅サーバのpovo回線のDHCP Client設定
povo回線のインターフェース名はnet1としています。net1でdhclientを動かすとき用に
以下の設定をしました。
ポイントは
- DNSサーバは、J:COM回線側を利用する。(192.168.11.1は、J:COM側のデフォルトルータです)
- default routerは、J:COM側のままにするために、request行は必要最低限のみとする。
FreeBSDでのpovo回線用のDHCP設定 /etc/rc.conf
#########################################
#
# for seconday interface
#
ifconfig_ue0_name="net1"
ifconfig_net1="DHCP"
DHCP clientの設定 /etc/dhclient.conf
interface "net1" {
supersede domain-name-servers 192.168.11.1;
request subnet-mask, broadcast-address, time-offset;
}
自宅サーバからGoogle Cloud Platformへの通信は、povo経由にする(static route)
裏接続回線はpovoを使ってほしいので、static routeを設定。以下はFreeBSDの場合で、/etc/rc.confに追記した。
なお、今回利用したDoCoMo Wi-Fi Station L-02FのIPアドレスは192.168.225.1であったため、-gateway 以下はそのアドレスを設定した。
static_routes="gcpserver"
route_gcpserver="-net [Google Cloud PlatformのサーバIP] -gateway 192.168.225.1"
自宅サーバとクラウドサーバのVPN
wireguardを実家サーバからGooge Cloud PlatformのCompute Engineに向けて張りました。
詳細設定はwireguardの設定例をインターネットで探して設定ください。
パケット流れていないと、povoのNATテーブルが切れてしまうようなので、以下の設定をしています(30秒おきにVPN回線維持パケットを流す設定)。
私は試していませんが、
SoftEtherVPNでもpovo回線で利用できたとの話もありました。各自ためしてみてください。