[Mac]routeコマンドを使って常用のアクセスと開発環境へのアクセスと分ける

POSTED: Dec 9, 2010, 3:44 pm
TAGS: ,

アクセスするホストやネットワークで回線を分けたかったのでやってみました。イントラのネットワークには繋がっていたい、でも開発で固定IPの回線でしかアクセス出来ない案件もやらなければといった場合にかなり役立ちます。

まずは前提として、異なった回線が2つ、ネットワークインターフェースが2つ必要です。

ちなみに今回、回線は普段常用している動的IPの回線とサーバーメインで使っている固定IPの回線を使い、ハードはMacBook Airを使っているのでAirMacとPlanexの無線LAN子機GW-USNanoを別途購入して使用しています。

PLANEX ゲーム・パソコン・ケータイをかんたんWi-Fi接続 世界最小 150Mbpsハイパワー無線LAN USBアダプタ GW-USNano

USB無線LAN子機はMac対応のものが少ないのですが、こいつはドライバをインストールするだけですぐに使えるようになります。

MacOSXの場合、routeコマンドでのルーティングテーブル追加はこんな感じで入力します。

$ sudo route add -net 192.168.1.0/24 192.168.2.1
$ sudo route add -host hoge.com 192.168.1.1

ルーティングテーブルの確認は。

$ netstat -rn

netstatコマンドでAirMacがen0、USB無線LAN子機がen1になってるのが確認できます。

AirMacのほうが常時使用の回線(192.168.0.1)に、USB無線LAN子機が開発専用回線(192.168.1.1)をゲートウェイにして通信するようにrouteを切ります。

$ sudo route -nv add -host hoge.com 192.168.1.1

これでhoge.comへのアクセスは192.168.1.1をゲートウェイにしアクセスするようになります。
192.168.1.0のネットワークへはUSB無線LAN子機(en1)からしか接続できないので自動的にen1をネットワークインターフェースとして通信するようになります。
コマンド中、「-n」をつけることでDNS逆引きをせず接続するようにできます。

netstatで確認すると下記が最下部に追加されています。

222.222.111.111    192.168.1.1        UGHS            0      869     en1

さて、これで完了かと思いきやMacを再起動すると設定したルーティングがもとに戻ってしまいます。
そこでルーティングを有効にしたい時にサクッとできるようにAutomatorでアプリケーションとして保存しておきます。

スクリーンショット(2010-12-11 10.26.30)

「password」にはsudoするときのパスワードを入れておきます。

これをアプリケーションで保存しておけば、後はルーティング切りたい時に作成したアプリケーションを実行するだけ。
QuickSliverなどのランチャーでも入れておけばサクっと実行してルーティングを有効にすることができます。