Ubuntu 13.04とGnomeを使用していて、最近(オープン)VPNをセットアップしました。デフォルトで有効にする方法はありますか?起動するたびに、または接続を失うたびに、VPNを手動で有効にする必要があります。欠落しているオプションはありますか?
Ubuntu 13.04とGnomeを使用していて、最近(オープン)VPNをセットアップしました。デフォルトで有効にする方法はありますか?起動するたびに、または接続を失うたびに、VPNを手動で有効にする必要があります。欠落しているオプションはありますか?
回答:
Network Managerインジケータnm-applet(デフォルトでインストールされるGNOMEまたはUnityネットワークトレイアプレット)を使用して、ネットワークの接続時にVPNに自動的に接続するようにNetworkManagerを構成できます。
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/
です。これをする:
sudoedit /etc/NetworkManager/system-connections/<VPN>
、<VPN>
VPNの構成ファイルです(ファイル名は通常、VPNに割り当てた名前です)。password-flags=1
を変更しますpassword-flags=0
NetworkManagerはVPNパスワード自体を保存し(詳細man nm-settings
を参照)、ネットワークの自動接続が再び機能します。
nm-connection-editor
、一般タブで接続を編集するときにこれを見つけることができます。
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プロジェクトページであり、パッケージにはマニュアルページがありません。それは有望に聞こえます。
#!/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
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
手順:
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
私はいくつかのマシンでUbuntu 14.04 LTSを使用しています。実際、私にはいくつかの特別な前提条件があります。
私はこの非常に実績のある非常に信頼性の高いスクリプトを使用しています:
ただし、ネットワークマネージャアプレットには、一時的に解決できるいくつかの警告があります(記事のトラブルシューティングセクションを参照)。
vpnautoconnectが機能しません。
@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でうまく動作しています!