VPN自動接続


39

Ubuntu 13.04とGnomeを使用していて、最近(オープン)VPNをセットアップしました。デフォルトで有効にする方法はありますか?起動するたびに、または接続を失うたびに、VPNを手動で有効にする必要があります。欠落しているオプションはありますか?

回答:


66

Network Managerインジケータnm-applet(デフォルトでインストールされるGNOMEまたはUnityネットワークトレイアプレット)を使用して、ネットワークの接続時にVPNに自動的に接続するようにNetworkManagerを構成できます。

  1. ネットワークトレイアプレットをクリックし、[接続を編集...]をクリックするか、を実行しnm-connection-editorます。
  2. ネットワーク接続を選択し、「編集...」をクリックします
  3. [この接続を使用するときにVPNに自動的に接続する]をオンにし、ドロップダウンリストで目的のVPNを選択します。
  4. セーブ。

nm-connection-editorスクリーンショット


これを有効にすると、NetworkManagerにバグがあり、「このネットワークに自動的に接続する」機能が壊れる可能性があります。(編集:このバグは、Ubuntu 16.04で「修正リリース済み」としてマークされています)。NetworkManagerが自動的に接続しようとして失敗した場合、次のような行が表示され/var/log/syslogます。

<error> [1401130450.367538] [nm-vpn-connection.c:1374] get_secrets_cb(): Failed to request VPN secrets #2: (6) No agents were available for this request.

NetworkManagerはからのユーザーのVPNパスワードの取得に失敗したようですgnome-keyring-daemon。回避策の1つは、NetworkManagerで、パスワードをプレーンテキストで構成ファイルに保存すること/etc/NetworkManager/system-connections/です。これをする:

  1. ターミナルを開きます。
  2. sudoedit /etc/NetworkManager/system-connections/<VPN><VPN>VPNの構成ファイルです(ファイル名は通常、VPNに割り当てた名前です)。
  3. password-flags=1を変更しますpassword-flags=0
  4. 保存して終了。

NetworkManagerはVPNパスワード自体を保存し(詳細man nm-settingsを参照)、ネットワークの自動接続が再び機能します。


5
gnomeネットワークマネージャーには存在しません。
ポールウォイタチェック

4
開くときnm-connection-editor一般タブで接続を編集するときにこれを見つけることができます。
ロード14年

1
これにより、接続自体が自動接続されなくなります。これに対する解決策はありますか?
タマスバルタ

@BartaこれはNetworkManagerのバグです。回答に回避策を追加しました。
ビンセントゆう

8

vpnautoconnectをご覧ください。

vpnautoconnectは、ネットワークマネージャーで作成したvpnを(起動時に)自動的に再接続できるデーモンです。非常に迅速に再接続し、帯域幅を監視できます。pptpおよびopenvpn接続で動作します。

詳細およびダウンロードについては、ウェブサイトをご覧ください。

これも試してください:

AUTOSTART機能を使用します /etc/default/openvpn

または

VPN接続のUUIDを把握します。

nmcli con list | grep -i vpn

UUIDは、文字、数字、ダッシュを含む2番目の列です。

ターミナルで接続を開始します。キーボードのCtrl+ Alt+ Tを押すだけで、ターミナルが開きます。開いたら、以下のコマンドを実行します:

nmcli con up uuid <put you UUID here>

これを起動時に実行するように設定します。

ダッシュに移動し、スタートアップアプリケーションを入力して選択し、[追加]をクリックして、上記のnmcliコマンドを(UUIDを使用して)追加します。「追加」をクリックします。名前に使用したい名前を入力し、コマンドに上記のnmcli行全体を入力します。もう一度「追加」をクリックします。次に、再起動して試してください。

ソース:SourceForge


インストールして構成し、コンピューターを再起動しましたが、機能しません。
ポールウォイタチェック

回答にさらに情報を追加しました。
ミッチ

利用可能なドキュメントはありますvpnautoconnectか?彼らのウェブサイトは放棄されたSourceForgeプロジェクトページであり、パッケージにはマニュアルページがありません。それは有望に聞こえます。
タマスバルタ

見つからないようですが、探し続けます。
ミッチ

アクションリストは、15.04または15.10 に表示されるように名前が変更されまし
クロール

2

この記事のスクリプト確認することをお勧めします

#!/bin/bash

# YourVPN here is the name of desired vpn connection to monitor
# edit this line:
##################
VPNNAME=YourVPNUUID
# enter desired time between checks here (in seconds)
SLEEPTIME=15
##################

nice=0

for (( ; ; )); do

# creating infinite loop

tested=$(nmcli con status uuid $VPNNAME | grep -c UUID)
#possible results:
# 0 - no connection - need to start
# 1 - working connection, continue.

case $tested in
"0")
echo "Not connected - starting"

#increase nice counter
nice=$[nice+1]

#if "nice start" fails for 3 times
if [ $nice -ge 3 ];
then
#TRY to knock hard way, resetting the network-manager (sometimes it happens in my kubuntu 12.04).
      echo "HARD RESTART!"
      nmcli nm enable false
      nmcli nm enable true
      sleep 5
      nmcli con up uuid $VPNNAME
      nice=0
else
#not yet 3 falures - try starting normal way
      echo "trying to enable."
      nmcli con up uuid $VPNNAME
fi

;;

"1")
echo "VPN seems to work" 

;;
esac

sleep $SLEEPTIME

done

YourVPNUUID$ VPNNAMEのの値を調べるには、次を実行するだけです。

nmcli con list | grep -i vpn

2

12.04 LTSではvpnautoconnectが機能しませんでした。

私はそれを少し調査し、いくつかの既存のコードを組み合わせて最初のbashスクリプトを作成しました。特定のVPN接続がアクティブかどうかを確認し、アクティブでない場合は接続します。接続されている場合、一定時間(1分間など)スリープし、プロセスを無期限に繰り返します。

#! /bin/bash

while true
do
   connection="Auto Ethernet"
   vpn_connection="My VPN connection"
   run_interval="60"

   active_connection=$(nmcli dev status | grep "${connection}")
   active_vpn=$(nmcli dev status | grep "${vpn_connection}")

   if [ "${active_connection}" -a ! "${active_vpn}" ];
   then
      nmcli con up id "${vpn_connection}"
   fi

   sleep $run_interval
done

手順:

  1. vpn-auto-connector.shなどの名前の空のテキストファイルを作成します(ホームフォルダーに保存しました。ファイルを右クリックし、[プロパティ]-> [権限]を選択し、[ファイルをプログラムとして実行する]をオンにします。コンピューターに複数のユーザーがいる場合は、どこか別の場所で読み取り/書き込み/実行のアクセス許可を変更します。

  2. 上記のコードを作成したファイルにコピーします。次の3つの変数の値を置き換えます。

    connection = "自動イーサネット"

    vpn_connection = "My VPN connection"

    run_interval = "60"

    これらは、ネットワークマネージャーを開くことで見つけることができます。私の場合、connection = "Auto Ethernet"はアクティブな有線接続(ワイヤレスでテストされていない)であり、vpn_connection = "My VPN connection"はVPN接続の名前です。run_interval = "60"は、スクリプトを繰り返すタイミングの秒単位の時間間隔です。

  3. [アプリケーション]-> [システムツール]-> [設定]-> [スタートアップアプリケーション]を開きます。適切な名前、たとえば「VPN Auto Connector」を追加し、コマンド用に以前に保存した.shファイルを選択します。これで、bashスクリプトが起動時に実行され、VPN接続がアクティブかどうかを確認し続けます。VPN接続を切断することで試すことができ、再度自動的にアクティブ化されるはずです。


まことにありがとうございます。このスクリプトは理解しやすいです。
エヴァン胡

0

Ubuntu 12.04、13.04、および13.10でVpnautoconnectは正常に動作します(13.10では、Network-Managerの「自動的に接続」オプションが修正され、動作するようになりました)

したがって、インストールや動作に問題がある場合、またはNetwork Managerのドロップダウンメニューで「openvpn」オプションを見つけてオープンVPN接続を作成できない場合は、このtutoに従ってすべてを提供できます手順、非常に明確で簡単に適用できます。

顔をしているHERE

そして、私に知らせてください:-)


0

以下は、非常に堅牢で信頼性の高いスクリプトです。

  • VPNに接続されているかどうかを確認します
  • そうでない場合は、最新のアクティブなVPNに接続します

これは、再接続する単一のVPN接続を指定する必要がないため、異なるVPNに定期的に接続する場合に特に便利です。

#!/bin/bash

nmcli --mode multiline --fields uuid,vpn connection status | grep -qc "^VPN:.*yes" 1>/dev/null 2>&1

if [ $? -ne 0 ]; then
        last_vpn_uuid=`nmcli --mode tabular --fields uuid,type,timestamp connection list | grep -E "\s+vpn\s+" | sort -k3 -nr | head -n1 | awk '{ print $1 }'`

        nmcli connection up uuid "$last_vpn_uuid"
fi

これは非常に興味深いですが、次のエラーがスローされます。$ nmcli -version nmcli tool、version 0.9.10.0 $ lsb_release -a LSBモジュールはありません。ディストリビューターID:Ubuntu説明:Ubuntu 15.04リリース:15.04コードネーム:vivid
gare

0

私はいくつかのマシンでUbuntu 14.04 LTSを使用しています。実際、私にはいくつかの特別な前提条件があります。

  1. パスワードマネージャーにパスワードを保存したくない
  2. ネットワーク再接続時にVPNを失うVirtualBoxゲストを使用しています
  3. 再接続時にパスワードダイアログが複数回開く
  4. バックアップVPNサーバーを使用しています(フェールオーバー)
  5. uuidに構成ファイルを使用する

私はこの非常に実績のある非常に信頼性の高いスクリプトを使用しています:

ただし、ネットワークマネージャアプレットには、一時的に解決できるいくつかの警告があります(記事のトラブルシューティングセクションを参照)。

vpnautoconnectが機能しません。


0

@vincentYoによる答えはまっすぐに見えますが、私はそれを成し遂げることができなかったので、私は以下のようにしました。

ステップ1:シェルスクリプトを作成してvpnコマンドを追加

vim auto_vpn.sh

#!/bin/sh vpnc --enable-1des

ステップ2:sudoerファイルを開き、カーネルにこのファイルのパスワードを要求しないように指示します。

sudo vim / etc / sudoers

このファイル内のほとんどの内容はコメント化されます。以下のように追加してください

ユーザー名ALL =(root)NOPASSWD:your_shell_script.sh

例:

sharath ALL =(root)NOPASSWD:/home/sharath/workspace/work/src/auto_vpn.sh

ステップ3:cronジョブをセットアップします。これにより、このシェルスクリプトがトリガーされ、cronジョブの下で毎分実行されます(bcz私のインターネットはオンとオフを維持するため、毎分)

* * * * * sudo /home/sharath/workspace/work/src/auto_vpn.sh

私はこれを多くの日から使用しており、ubuntu 16.04 LTS ..Chearsでうまく動作しています!

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