
私はよくリモートで仕事をします。ネットワーク マネージャーを使用して VPN 接続を設定していますが、これは非常にうまく機能しています。現在、設定した VPN は、証明書付きパスワード (TLS) タイプを使用しています。やりたいことは、特定のトラフィックだけを VPN 経由でルーティングし、他のすべてのトラフィックを通常のローカル インターネット接続経由でルーティングすることです。
これは可能ですか?
私の状況を説明するために、VPN ネットワークで通常行う接続の種類の例を挙げます。私たちの職場ネットワークには「イントラネット」Web サイトが設定されているため、この Web サイトには VPN を使用しているときのみアクセスできますが、Google や askubuntu.com などの他のサイトにアクセスするのと同じ方法でアクセスできます。私は、デスクトップ コンピューターの名前 (IP アドレス)、ユーザー名、およびパスワードを入力して、リモート デスクトップ経由で VPN 接続を介してデスクトップ コンピューターに接続することがよくあります。MySQL サーバーには、IP アドレス、ユーザー名、およびパスワードを入力して MySQL Workbench を使用して接続します。Linux サーバーには、SSH を使用して接続することがよくあります。
上記のすべての接続には VPN が必要です。ただし、通常の Web サーフィンや、仕事用ネットワーク外のリソース (Gmail、Stack Overflow、ゲームなど) への接続も行います。これらの接続には VPN は必要ないため、VPN 接続経由でアクセスすることは避けたいです。VPN を使用すると、速度が遅くなるだけです。
このリンクで説明されているテクニックを試してみました:http://darrenwatt.com/split-tunnel-ubuntu/
これは私にはうまくいかなかったようです。具体的には、「この接続をネットワーク上のリソースにのみ使用する」チェックボックスをオンにして VPN に接続した後、「イントラネット」サイトに接続できませんでした。
VPN 経由でトラフィックを選択的にルーティングする方法を知っている人はいますか? これは理にかなっていますか?
ありがとう!!
答え1
NMでこれがどのように機能するかは分かりませんが、スクリプトを書いています
#!/bin/bash
function routeadd {
route add -host xxx.xxx.xxx.xxx dev ppp0
route add -net xxx.xxx.xxx.xxx/xx dev ppp0
}
function makepptp {
echo pty \"pptp xxx.xxx.xxx.xxx --nolaunchpppd\" >> /etc/ppp/peers/vpn;
echo remotename PPTP >> /etc/ppp/peers/vpn;
echo require-mppe-128 >> /etc/ppp/peers/vpn;
echo file /etc/ppp/options.pptp >> /etc/ppp/peers/vpn;
echo ipparam vpn >> /etc/ppp/peers/vpn;
pppd call vpn &
}
if [ -a /etc/ppp/chap-secrets ];
then
rm /etc/ppp/chap-secrets
echo $1 PPTP $2 '*' >> /etc/ppp/chap-secrets;
else
echo $1 PPTP $2 '*' >> /etc/ppp/chap-secrets;
fi
if [ -e /etc/ppp/peers/vpn ];
then
rm /etc/ppp/peers/vpn;
echo name $1 >> /etc/ppp/peers/vpn;
makepptp;
sleep 8;
routeadd;
else
echo name $1 >> /etc/ppp/peers/vpn;
makepptp;
sleep 8;
routeadd;
fi
使用法:
sudo /path_to_script/vpn username password
注: スクリプトに実行権限を設定します
ルートを追加した場合にのみトラフィックは VPN 経由でルーティングされ、それ以外の場合はデフォルトの GW がルーティングされます。