Yosemite で F5 Networks の FirePass (SSL-VPN) が動作しない問題。
https://discussions.apple.com/thread/6679959
F5 でもサポートされる様子がないため、いろいろ試して自力解決しました。
通常通り FirePass で接続後、
sudo route add -net 0/1 -interface ppp0
のようにルート情報を手動追加で OK でした。
0/1 である必要は特になく、単に Mavericks の時に FirePass が追加していたのが 0/1 だったからです。
既存の network と併用したい場合
sudo route -n add -net A.B.C -interface ppp0
のように、特定の subnet 向けの通信をルーティングすれば OK です。
ppp0 の default ルートが追加される場合もあるので、
netstat -rn -f inet
で確認して、存在していたらsudo route -n delete -net default -ifscope ppp0
をした方がいいかも。
ただし自分の場合は DNS の情報が変更されていて、IP アドレスベースでは接続できるものの名前解決ができず、ホスト名ベースで web や ssh 等が使えませんでした。
dig/nslookup では名前解決できるんですが、何故か ping だと Unknown Host となるので、scutil で DNS の設定を書き換えます。
ここでは 8.8.8.8 (Google の Public DNS) を指定しています。
sudo scutil <<EOF
get State:/Network/Service/F5NetworksServicePPP/DNS
d.add ServerAddresses * 8.8.8.8
set State:/Network/Service/F5NetworksServicePPP/DNS
quit
EOF
これで VPN 接続しながら、外部ネットワークにも VPN を介さず自由に通信できるようになりました。
/etc/resolv.conf は見ていないようで、Mac の名前解決の仕組みがいまいち理解できていない。。
ちなみに FirePass ではない場合でも、
scutil <<<'list ".*DNS"'
とすれば、DNS 系の Key 一覧が取得できるので、
scutil
> get [key_name]
> d.show
のように設定を確認できます。
VPN 接続時に自動で設定したい場合
毎回入力するのが面倒であれば、/etc/ppp/ip-up を作成し、
#!/bin/sh
if [ "$1" = "ppp0" ]; then
/sbin/route add -net 0/1 -interface ppp0
fi
とかしておくと少しだけ幸せになれるかも。
要 chmod 755、複数のVPNを併用している場合はもう少し調整が必要。