特定のホストだけVPNを通さないよう設定する

f:id:xlc:20190417235428p:plain:w280:right

中国で暮らしているのでネット接続は常にVPN経由である。回線速度が遅いのにはまあ慣れたのだが、VPN経由だとアクセスを拒否されるページがあるのが厄介。例えばさくらVPSのコントロールパネルにアクセスするとこのようにアクセスを拒否されてしまう。

なので特定のホストだけVPNを通さないように設定することにした。

routeコマンド

自宅のネット環境では、まずPPPoEでプロバイダ(中国联通)に接続し、次にL2TPVPN(さくらVPS)に接続している。インタフェース名はPPPoEが ppp0、VPNが ppp1 になる。VPNを通さないためには ppp0 を経路にすればよいわけだ。以下のコマンドでさくらVPSコントロールパネル(secure.sakura.ad.jp)への経路を ppp0 に変更することができる。

$ sudo route add  -host secure.sakura.ad.jp -interface ppp0

ip-up の設定

上記コマンドでVPNを通らなくなったのだが、毎回これを打ち込むのも面倒である。Unix系OSではppp接続の際に /etc/ppp/ip-up が実行されるので、ここで経路設定をすればよい。

#!/bin/sh

if [ $1 = ppp1 ]
then
    /sbin/route add -host secure.sakura.ad.jp -interface ppp0
    /sbin/route add -net 160.16.0.0/16 -interface ppp0
fi

ip-up の第1引数には有効化されたインタフェース名が設定されるので、VPN(ppp1)が有効になったときに経路制御をしている。

ついでにさくらVPSと思われるアドレス全体(160.16.0.0/16)もVPNを通さないようにしてみた。これで天鳳を打っている最中にVPNが切れても影響ないはずである😁*1

/etc/ppp/ip-up には実行権をつけるのをお忘れなく。

$ sudo chmod +x /etc/ppp/ip-up

*1:天鳳はさくらVPSと思われるアドレスで運営されている