Ubuntu 13.04とGnomeを使用していて、最近(オープン)VPNをセットアップしました。デフォルトで有効にする方法はありますか?起動するたびに、または接続を失うたびに、VPNを手動で有効にする必要があります。欠落しているオプションはありますか?
Network Managerインジケータnm-applet(デフォルトでインストールされるGNOMEまたはUnityネットワークトレイアプレット)を使用して、ネットワークの接続時にVPNに自動的に接続するようにNetworkManagerを構成できます。
nm-connection-editor
を実行します。これを有効にすると、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/
の構成ファイルにプレーンテキストでパスワードを保存できるようにすることです。これをする:
sudoedit /etc/NetworkManager/system-connections/<VPN>
、ここで<VPN>
は、VPNの構成ファイルです(ファイル名は通常、VPNに割り当てた名前です)。password-flags=1
をpassword-flags=0
に変更しますNetworkManagerは、VPNパスワード自体を保存するようになり(詳細はman nm-settings
を参照)、ネットワークの自動接続が再び機能するようになります。
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
スクリプトをチェックアウトすることをお勧めします この記事では :
#!/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
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
手順:
たとえば、空のテキストファイルを作成します。 vpn-auto-connector.sh(ホームフォルダーに保存しました。ファイルを右クリックして[プロパティ]-> [許可]を選択し、[ファイルをプログラムとして実行することを許可する]をオンにします。コンピューターに複数のユーザーがいる場合は、読み取り/書き込み/実行の権限も必要です。)
上記のコードを作成したファイルにコピーします。次の3つの変数の値を置き換えます。
connection = "自動イーサネット"
vpn_connection = "My VPN connection"
run_interval = "60"
これらは、ネットワークマネージャーを開くことで見つけることができます。私の場合、connection = "Auto Ethernet"はアクティブな有線接続(ワイヤレスでテストされていない)であり、vpn_connection = "My VPN connection"はVPN接続の名前です。 run_interval = "60"は、スクリプトを繰り返すタイミングの秒単位の時間間隔です。
[アプリケーション]-> [システムツール]-> [設定]-> [スタートアップアプリケーション]を開きます。適切な名前を追加します。 「VPN Auto Connector」、およびコマンド用に、以前に保存した.shファイルを選択します。これで、bashスクリプトが起動時に実行され、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
VpnautoconnectはUbuntu 12.04、13.04、および13.10で正常に動作します(13.10では、Network-Managerの「自動的に接続」オプションが修正され、今すぐ動作します)
そのため、インストールや動作に問題がある場合、またはNetwork-Managerのドロップダウンメニューで「openvpn」オプションが見つからないためにオープンVPN接続を作成できない場合は、このtutoに従ってすべてを提供できます。手順、非常に明確で簡単に適用できます。
ご覧ください HERE
そして、私に知らせてください:-)
@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でうまく動作しています!
私はいくつかのマシンでUbuntu 14.04 LTSを使用しています。実際、私にはいくつかの特別な前提条件があります。
私はこの非常に実績のある非常に信頼性の高いスクリプトを使用しています:
ただし、ネットワークマネージャアプレットには、一時的に解決できるいくつかの注意事項があります(記事のトラブルシューティングセクションを参照)。
vpnautoconnect は機能しません。