Mac OS XでVPN張ったときに経路を自動で追加できるようにした


正月休みに自宅のネットワーク環境を整備していたのですが、僕の家のネットワークには複数のセグメントがあります。
いままで仕事でVPNを張るときには、コマンドラインでsudo route add〜などといちいち打って経路を追加していたのですが、あっちこっちの拠点のネットワーク構成をIPアドレスごと覚えておくのは面倒なものです。

そんなわけで、VPNを張ったときにshell scriptを自動で実行する方法がないものかと呟いてみたところ、

とステキ情報を教えていただきました。

/etc/ppp/ip-upにシェルスクリプトを置いておくだけでOKの模様です。
ということで、ググりつつ実践してみました。

私の家は、ifconfig -aすると

ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
	inet 192.168.128.49 --> 192.168.127.1 netmask 0xffffff00

と、リモートのIPアドレスが192.168.127.1であることが分かります。ということは、これを参照して条件分岐してrouteを書いてやれば良いということになります。

#!/bin/sh
#
# $1 interface-name
# $2 tty-device
# $3 speed
# $4 local-IP-address
# $5 remote-IP-address
# $6 ipparam
 
if [ "${5:-}" = "192.168.127.1" ]
then
   /sbin/route add 192.168.1.0/24 $5
   /sbin/route add 192.168.10.0/24 $5
fi

こんなshell scriptを/etc/ppp/ip-upに書いてやって、ファイルのownerをroot、permissionsを0755にして置いてやるだけです。
if-upじゃなくて、ip-upであることに注意してください。私はこれで5分くらい無駄にしましたorz