起動時にVPNに接続しようとするとエラーが発生する


13

この質問は更新されました。この投稿の末尾をご覧ください。

Mythbuntuコンピューターが起動時にVPNサービスに接続するように設定しようとしています。私の希望は、Mythbuntuコンピューターがすべてのインターネット接続に常にVPNを使用することです。

おそらくそれを行うスクリプト見つけましたが、次のようになります。

#!/bin/bash
while [ "true" ]
do
    VPNCON=$(nmcli con status)
    if [[ $VPNCON != "*MyVPNConnectionName*" ]]; then
        echo "Disconnected, trying to reconnect..."
        (sleep 1s && nmcli con up uuid df648abc-d8f7-4ce4-bdd6-3e12cdf0f494)
    else
        echo "Already connected !"
    fi
    sleep 30
done

マシンでこのスクリプトを実行すると、次のエラーが表示されます。

$ /home/mythbuntu/VPN_start.sh
Disconnected, trying to reconnect...
Error: Connection activation failed: Not authorized to control networking.

私はそれが許可の問題かもしれないと思ったので、私はsudoでそれを実行しようとしました:

$ sudo /home/mythbuntu/VPN_start.sh
[sudo] password for mythbuntu: 
Disconnected, trying to reconnect...
Active connection state: unknown
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/1
state: VPN connecting (need authentication) (2)
Error: Connection activation failed: no valid VPN secrets.

このスクリプトをエラーなしで実行し、ブートまたはログイン時に実行できるようにして、VPNで常に接続していることを確認するにはどうすればよいですか。

誰かがより良いスクリプトまたはメソッドを持っている場合、それは答えとしても十分でしょう。


これらは私の/ etc / NetworkManager / system-connections / MyVPNファイルの内容です(プライバシーのために一部の詳細をx文字に置き換えています):

[connection]
id=MyVPN
uuid=xxxxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxxxxx
type=vpn

[vpn]
service-type=org.xxxxxxxxxxxxxx.xxxxxxxxxxxxxxx.openvpn
username=xxxxxxxxxx
comp-lzo=yes
remote=us-xxxxxx.xxxxxxx.com
connection-type=password
password-flags=0
ca=/etc/openvpn/xxxxxxx.crt

[vpn-secrets]
password=xxxxxxxxxxx

[ipv4]
method=auto
never-default=true

また、Xfceパネルの右上隅にあるアプレットを使用してVPNをオンにすると、問題なく接続できることを追加したいだけです。そのため、この問題は不正な認証ではなく、コマンドラインからこれを実行しようとした場合の設定のように思えます。

更新:

何が変わったのかは完全にはわかりません-12.10へのアップグレードの可能性があります-しかし、コマンドラインからVPNサービスを開始できるようになりました。ただし、このコマンドは、コンピューターを最初に起動したときに1回だけ機能し、で実行する必要もありますsudo

mythbuntu@mythbuntu:~$ nmcli con up id "Private Internet Access SSL"
Error: Connection activation failed: Not authorized to control networking.
mythbuntu@mythbuntu:~$ sudo nmcli con up id "Private Internet Access SSL"
[sudo] password for mythbuntu: 
mythbuntu@mythbuntu:~$

これをsudo実行するために使用する必要があるため、起動時に自動的に実行することはできません。

スーパーユーザーの許可なしにVPNを開始できるようにするにはどうすればよいですか?

回答:


8

問題は、キーリングのパスワードにアクセスできないことです。

ソース

そこに記載されている解決策は、ファイル/ etc / NetworkManager / system-connections / ConnectionNameを開いて、

password-flags=0

以下の行をファイルに追加します

 [vpn-secrets]
 password=YourPassword

次に、ネットワークマネージャーを再起動して、変更を反映します。

 sudo restart network-manager

詳細については、ソースを参照してください


その有用な情報をありがとう。私が行き詰まっている部分の1つは、/etc/NetworkManager/system-connections/ConnectionNameファイルがなかったということです。そのため、「[vpn]で編集する」というメッセージが表示されたとき、その処理方法がわかりません。ファイルを作成するだけでいいですか?
質問者

はい/ etc / NetworkManager / system-connections / <vpn-connection-name>で、password-flagsフォーム1を0に変更nmcli conします。接続の一覧表示に使用します。
-devav2

さて、私は今それを手に入れました。正しいファイルを見つけるのを間違えていたことに気付きました。ただし、現在、提案されたすべての編集を行ったので、残念ながらまだ同じNot authorized to control networkingエラーが発生しています。
質問者

NetworkManager接続エディターを再度開き、VPNパスワードまたはシークレットを再入力してください。
devav2

ネットワークマネージャーを開き、パスワードを再入力しました(インターフェイスを開いたときは空白でした)。「秘密」に関連するものは他にありませんでした。スクリプトを保存してから再試行しました。それでも同じエラーメッセージ。
質問者

2

起動時にVPNを自動的に起動するには

資格情報ファイルが機能していると仮定するとdispatcher.d、VPNを最初に起動する必要があったようなスクリプトを使用できるはずです。スクリプトを少し変更して、2つの接続(自宅の無線ルーターと職場の有線接続)で動作するようにしました。その理由は、必要なインターネット接続のいずれかが稼働しているときにVPNが開始されない場合、VPNを開始することです。私の例では、デフォルトの名前で設定しましたが、自分の名前に合わせて変更する必要があります。

これをファイルに入れて、/etc/NetworkManager/dispatcher.d/vpn-up実行可能にするchmod +x

#! /bin/bash

REQUIRED_CONNECTION1_NAME="linksys"
REQUIRED_CONNECTION2_NAME="Wired connection 1"
VPN_CONNECTION_NAME="My VPN"


activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION1_NAME}\|${REQUIRED_CONNECTION2_NAME}")
activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi

NetworkManagerでクライアント証明書を構成するには

VPNの認証にパスワード付きのクライアント証明書を使用している場合は、少し文書化されていません。

NetworkManager 0.9設定仕様を参照した後、設定ファイルでvpn証明書パスを指定する方法を決定できませんでした。開いてseahorse、「VPNシークレット」(証明書のパスワード)を見つけました。

My VPN / org.freedesktop.NetworkManager.openvpn / vpnVPN証明書パスシークレット」のようなものとしてリストされていました。詳細タブをクリックすると、setting-key名前の手がかりが得られました。

setting-name: vpn
setting-key: cert-pass
connection-uuid: 0badcafe-f00d-dead-beef-feedfacef00d

NetworkManager 0.9.4.0を使用して、Ubuntu 12.04(正確なPangolin)でルートとしてVPNを自動的に開始するには:

ファイルが次のようになるように/etc/NetworkManager/system-connections/My VPNcert-passVPNシークレットを開いて追加します。

[connection]
id=My VPN
uuid=0badcafe-f00d-dead-beef-feedfacef00d
type=vpn
timestamp=1234567890

[vpn]
service-type=org.freedesktop.NetworkManager.openvpn
key=/home/<your-user>/path/to/certs/your.secure.key
ca=/home/<your-user>/path/to/certs/your.vpnca.crt
connection-type=tls
cert=/home/<your-user>/path/to/certs/your.crt
remote=your.vpn-server.com
cert-pass-flags=0
[vpn-secrets]
cert-pass=your-vpn-pass

[ipv4]
method=auto
never-default=true

この答えをありがとう。私system-connectionsはあなたのものとは異なりますが、あなたの編集を適用するかどうかはわかりません。私は持っていないkeytimestamp、と私の接続タイプがあるpassword、ありませんtls。質問にファイルを追加しました。
質問者

あなたが使用している場合connection-type=password、あなたはおそらく使用されなければならないpassword-flags=0password=YourPassword[vpn-secrets]devav2によって示唆されているように、見出し。
TrinitronX

ただし、表示されているエラーは、実行VPN_start.shしているユーザーにネットワークを管理する権限がないことを示しています。アクセス許可を持たない非ルートユーザーとしてVPN接続を管理する場合は、/etc/dbus-1/system.d/org.freedesktop.NetworkManager.confファイルにいくつかのポリシーを追加する必要があります。
TrinitronX

許可の問題だけであれば、スクリプトを実行すると機能しsudoませんか?私の質問で述べたように、一緒に実行すると失敗sudoします。
質問者

いい視点ね!sudoで実行している場合にこのエラーが発生する理由はわかりません。あなたのVPNタイプを自分でテストすることはできませんでした。私のルーターはそのために簡単に設定できないようです。NetworkManagerアプレットを介して開始したときにVPN接続が正常に機能する場合、他に何を確認するのかわかりません。
TrinitronX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.