web-dev-qa-db-ja.com

VPN自動接続

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

39
Paul Woitaschek

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

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

nm-connection-editor screenshot


これを有効にすると、NetworkManagerに バグがあり 、「このネットワークに自動的に接続する」機能を中断する可能性があります。 (Edit:このバグは、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はgnome-keyring-daemonからユーザーのVPNパスワードの取得に失敗したようです。回避策の1つは、NetworkManagerが/etc/NetworkManager/system-connections/の構成ファイルにプレーンテキストでパスワードを保存できるようにすることです。これをする:

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

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

66
Vincent Yu

Vpnautoconnectをご覧ください。

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

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

これも試してください:

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

または

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

8
Mitch

スクリプトをチェックアウトすることをお勧めします この記事では

#!/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

$ VPNNAMEのYourVPNUUIDの値を確認するには、次を実行します。

nmcli con list | grep -i vpn
2
rhoover

vpnautoconnectは12.04 LTSで機能しませんでしたが、私だけではないようです。

私はそれを少し調査し、いくつかの既存のコードを組み合わせて最初の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接続を切断することで試すことができ、再度自動的にアクティブ化されるはずです。

2

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

  • 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
0
Guest

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

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

ご覧ください HERE

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

0
Pouchette

@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でうまく動作しています!

0
Sharath B.J

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

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

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

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

vpnautoconnect は機能しません。

0
apos