Mac OS X LeopardでVPNを介してネットワークトラフィックを選択的にルーティングする方法


96

自宅から会社のネットワークに(VPN経由で)接続しているときに、すべてのネットワークトラフィックをVPNに送信したくありません。たとえば、自宅で仕事をしているとき、すべてのファイルを自宅のTime Capsuleにバックアップし、会社の内部ネットワークにアクセスできるようにしたいと思っています。

私は、LeopardのビルトインVPNクライアントを使用しています。「VPN接続を介してすべてのトラフィックを送信する」のチェックを外してみました。それを行うと、curlまたはWebブラウザーを介して会社の内部Webサイトにアクセスできなくなります(ただし、内部IPは到達可能です)。VPN経由でルーティングするIPまたはドメインのセットを選択的に選択し、残りを自分のネットワークに保持できると理想的です。これは、Leopardの組み込みVPNクライアントで実現できますか?ソフトウェアに関する推奨事項がある場合は、それも聞いてみたいと思います。


2
最初のソリューションは、PPP VPNでのみ機能します。次のソリューションは、Cisco VPN(および他のタイプのCisco特別なものはありません)上で動作しますsuperuser.com/questions/91191/...
DRのjimbob

回答:


84

次の内容でファイル/ etc / ppp / ip-upを作成します。

#!/bin/sh
/sbin/route add <SUBNET> -interface $1 

<SUBNET>サブネットに置き換えて、VPN経由でルーティングする(例:192.168.0.0/16)

ルートとして実行:

chmod 0755 /etc/ppp/ip-up

このファイルは、VPNに接続するたびに実行されます。

スクリプトに指定されたパラメーター:

  • $1:VPNインターフェース(例ppp0
  • $2:不明、0私の場合
  • $3:VPNサーバーのIP
  • $4:VPNゲートウェイアドレス
  • $5:LAN接続用の通常(非VPN)ゲートウェイ

1
アレクセイの先端は私のために働いた。最初の行(#!/ bin / sh)が何をしているのか疑問に思っています。コメントアウトされていませんか。私は私達の会社で使用するためにこれを記述し、おかげで、エドガー:-)より良い単純おりますので、私はこれを求めています
エドガーWieringa

1
@EdgarWieringa:回答をコメントに変換しました。それが良いことを願っています!:)
studiohack

6
@エドガー-いいえ。その最初の行は特別です。 en.wikipedia.org/wiki/Shebang_(Unix)
ジェームズ・ムーア

6
10.7 / Lionでは、次の方法で運が良かった:/ sbin / route add 172.16.0.0/16 -interface $ 1 ip-upの取得で見た引数は次のとおりです。$ 1 = VPNインターフェイス、たとえば「ppp0」 = 3 $)この値がわからイーサネット/無線LANのためのあなたのVPN IP $ 4 = VPNゲートウェイのパブリックIPアドレス$ = 5ノーマルデフォルトゲートウェイ
ゲイブ・マーティン-Dempesy

4
2つ以上のVPN接続を構成している場合はどうなりますか?/etc/ppp/ip-upそれに応じてルートを追加できるようにそれらを区別するにはどうすればよいですか?フレンドリVPN名は6番目の引数(ipparam)として渡されますか?
カル14

11

同様のことをしたかった。VPNを接続し、そのVPNを介して追加のネットワークをルーティングします。私は次のApplescriptのビットになりました:

-- Connect Work VPN

tell application "System Events"
    tell network preferences
        tell current location
            tell service "Work"
                connect
                tell current configuration
                    repeat until get connected = true
                        delay 1
                    end repeat
                end tell
            end tell
        end tell
    end tell
end tell

set gateway to "192.168.1.1"

do shell script "route add 172.16.0.0/16 " & gateway with administrator privileges

"Work"VPN接続の名前192.168.1.1、ゲートウェイアドレス、および172.16.0.0/16ルーティングするネットワークのアドレスに変更する必要があります。異なるアドレスで最終行を繰り返すことにより、追加のネットワークを追加できます。


1
(マイナーIPアドレスについて疑問に思う人のために:質問者が言ったように、172.16.0.0 / 16は10.xxxや192.168.xxのようなプライベートアドレススペースです。したがって、実際にはVPNの一部です。外部Webサイトなどではありません。)
Arjan

1
だから、192.168.1.1あなたのVPN上のルータ、またはLAN上のルータがありますか?また、デフォルトルートをLANに戻す必要はありませんか?
ジャックM.

8

MacOSのネットワーク設定には非表示の機能がありますインターフェイスを並べ替えることができます

システム環境設定->ネットワーク-> gear左下をクリック->Set service Order...

<code>サービスの注文を設定... </ code> VPNの注文

ネットワークインターフェイスを使用する順序に並べ替えることが重要です。すべての非LANデータをVPNに送信する場合は、VPNインターフェイスを一番上に配置します。このように並べ替える

  1. VPN
  2. イーサネット
  3. 空港

これは好きではありません:

  1. 空港
  2. イーサネット
  3. VPN

この方法では、次の設定を確認する必要はありませんSession Options

VPN接続を介してすべてのトラフィックを送信する

connection L2TP VPN接続時にテスト済み


OPがイーサネット経由でTime Machineにバックアップし、会社のネットワークビュー空港(ワイヤレス接続)に接続していない限り、これが質問に答えるとは思わない
ジョシュニューマン

1
私はpppスタートアップトリックを使用しましたが、vpn接続をワイヤレス接続の下に移動するまで機能しませんでした。これは有効な答えです。
アロスボロ

それが本当に主な答えになるでしょう!どうもありがとう、理解することは不可能でしょう!
アンドレソアレス

1
これはL2TP IPSec VPNでは機能しますが、Cisco IPSec VPNでは機能しません。Cisco IPSec VPNは、[サービス順序の設定]ダイアログで利用できません
-goofology

1

私は何かを見つけることができるかどうかを確認するためにオンラインで見てきましたが、私が理解できる限り、あなたは通常のようにあなたのコンピュータを使用したいようですが、社内のウェブサイトに接続することもできますカスタムルーティングテーブルを設定する必要があります。

このリンクは明らかに10.4にのみ適用されますが、コマンドラインは引き続き機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.