VPN Autoconnect


39

ฉันใช้ Ubuntu 13.04 กับ Gnome และฉันเพิ่งตั้งค่า VPN (เปิด) มีวิธีการเปิดใช้งานเป็นค่าเริ่มต้นหรือไม่ ทุกครั้งที่ฉันบู๊ตหรือแม้กระทั่งขาดการเชื่อมต่อฉันต้องเปิดใช้งาน VPN ด้วยตนเอง มีตัวเลือกที่ฉันหายไปหรือไม่?

คำตอบ:


66

ผ่านตัวบ่งชี้ Network Manager nm-applet (แอปเพล็ตถาดเครือข่าย GNOME หรือ Unity ที่ติดตั้งไว้ตามค่าเริ่มต้น) คุณสามารถกำหนดค่า NetworkManager ให้เชื่อมต่อกับ VPN โดยอัตโนมัติเมื่อเชื่อมต่อเครือข่าย

  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ของผู้ใช้จาก หนึ่งวิธีแก้ปัญหาคือการปล่อยให้ 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
Paul Woitaschek

4
เมื่อเปิดnm-connection-editorคุณจะพบสิ่งนี้เมื่อแก้ไขการเชื่อมต่อในแท็บทั่วไป
แร่

1
นี่ทำให้การเชื่อมต่อนั้นไม่เชื่อมต่อโดยอัตโนมัติสำหรับฉัน มีวิธีการแก้ปัญหานี้หรือไม่?
Tamás Barta

@Barta นั่นเป็นข้อผิดพลาดใน NetworkManager ฉันได้เพิ่มวิธีแก้ปัญหาให้กับคำตอบของฉัน
Vincent Yu

8

ลองดูที่ vpnautoconnect

vpnautoconnect เป็น daemon ที่อนุญาตให้คุณเชื่อมต่อใหม่โดยอัตโนมัติ (เมื่อเริ่มต้นด้วย) vpn สร้างด้วย network manager มันสามารถเชื่อมต่อใหม่ได้อย่างรวดเร็วและตรวจสอบแบนด์วิดท์ด้วยมันทำงานได้กับการเชื่อมต่อ pptp และ openvpn

สำหรับข้อมูลเพิ่มเติมและดาวน์โหลดเยี่ยมชมเว็บไซต์

ลองสิ่งนี้เช่นกัน:

ใช้คุณสมบัติ AUTOSTART ใน /etc/default/openvpn

หรือ

กำหนด UUID ของการเชื่อมต่อ VPN ของคุณ

nmcli con list | grep -i vpn

UUID เป็นคอลัมน์ที่สองที่มีตัวอักษรตัวเลขและขีดกลาง

เริ่มการเชื่อมต่อในเทอร์มินัล เพียงกดCtrl+ Alt+ Tบนแป้นพิมพ์เพื่อเปิด Terminal เมื่อเปิดขึ้นให้เรียกใช้คำสั่งด้านล่าง:

nmcli con up uuid <put you UUID here>

ตั้งค่านี้ให้ทำงานเมื่อเริ่มต้น

ไปที่ Dash พิมพ์และเลือกแอปพลิเคชันเริ่มต้นคลิกเพิ่มและเพิ่มคำสั่ง nmcli ด้านบน (ด้วย UUID) คลิก "เพิ่ม" ในชื่อพิมพ์ชื่อที่คุณต้องการใช้และในคำสั่งให้ใส่ทั้งบรรทัด nmcli ด้านบน คลิก "เพิ่ม" อีกครั้ง ตอนนี้รีบูตและลอง

ที่มา: SourceForge


ฉันติดตั้งและกำหนดค่ารีบูตเครื่องคอมพิวเตอร์ แต่ไม่สามารถใช้งานได้
พอล Woitaschek

ฉันได้เพิ่มข้อมูลเพิ่มเติมในคำตอบของฉัน
มิทช์

มีเอกสารสำหรับvpnautoconnectอะไรบ้าง? เว็บไซต์ของพวกเขาคือเพจโปรเจ็กต์ SourceForge ที่ถูกทิ้งร้างและแพ็คเกจไม่ได้จัดทำคู่มือเพจ มันฟังดูมีแนวโน้ม
Tamás Barta

ฉันไม่สามารถหาได้ แต่ฉันจะดูต่อไป
มิทช์

รายการการกระทำถูกเปลี่ยนชื่อเพื่อแสดงใน 15.04 หรือ 15.10
Croll

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

vpnautoconnect ไม่ทำงานสำหรับฉันใน 12.04 LTS และฉันดูเหมือนจะไม่เป็นคนเดียว

ฉันค้นคว้ามันเล็กน้อยและรวมรหัสที่มีอยู่บางอย่างเพื่อสร้างสคริปต์ทุบตีแรกของฉัน มันจะตรวจสอบว่าการเชื่อมต่อ 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 (ฉันบันทึกไว้ในโฟลเดอร์บ้านของฉันคลิกขวาที่ไฟล์และเลือกคุณสมบัติ -> สิทธิ์และตรวจสอบ "อนุญาตให้เรียกใช้ไฟล์เป็นโปรแกรม" (คุณอาจต้องจัดเก็บไฟล์ ที่อื่นและ / หรือแก้ไขสิทธิ์การอ่าน / เขียน / execture เช่นกันหากคอมพิวเตอร์ของคุณมีผู้ใช้หลายคน)

  2. คัดลอกรหัสจากด้านบนไปยังไฟล์ที่คุณสร้าง แทนที่ค่าของตัวแปรสามตัวต่อไปนี้:

    การเชื่อมต่อ = "Auto Ethernet"

    vpn_connection = "การเชื่อมต่อ VPN ของฉัน"

    run_interval = "60"

    พวกเขาสามารถพบได้โดยการเปิดตัวจัดการเครือข่าย ในกรณีของฉันการเชื่อมต่อ = "Auto Ethernet" คือการเชื่อมต่อแบบใช้สายของฉัน (ไม่ได้ทดสอบด้วยไร้สาย) และ vpn_connection = "การเชื่อมต่อ VPN ของฉัน" เป็นชื่อของการเชื่อมต่อ VPN ของฉัน run_interval = "60" เป็นช่วงเวลาเป็นวินาทีเพื่อให้สคริปต์ซ้ำ

  3. เปิดแอปพลิเคชัน -> เครื่องมือระบบ -> การตั้งค่า -> แอปพลิเคชันเริ่มต้น เพิ่มชื่อที่เหมาะสมเช่น "ตัวเชื่อมต่อ VPN อัตโนมัติ" และสำหรับคำสั่งให้เลือกไฟล์. sh ที่คุณบันทึกไว้ก่อนหน้า ตอนนี้สคริปต์ทุบตีจะทำงานเมื่อเริ่มต้นและจะทำการตรวจสอบว่าการเชื่อมต่อ VPN เปิดใช้งานอยู่หรือไม่ คุณสามารถลองได้โดยยกเลิกการเชื่อมต่อ VPN และควรเปิดใช้งานอีกครั้งโดยอัตโนมัติ


ขอบคุณมาก สคริปต์นี้เข้าใจง่าย
Evan Hu

0

Vpnautoconnectทำงานได้ดีใน Ubuntu 12.04, 13.04 และ 13.10 (ฉันคิดว่าใน 13.10 ตัวเลือก "เชื่อมต่ออัตโนมัติ" ใน Network-Manager ได้รับการแก้ไขแล้วและทำงานได้ทันที)

ดังนั้นหากคุณมีปัญหาในการติดตั้งหรือใช้งานได้หรือไม่พบตัวเลือก "openvpn" ในเมนูแบบเลื่อนลงของ Network-Manager เพื่อสร้างการเชื่อมต่อ VPN แบบเปิดคุณสามารถติดตาม tuto นี้ได้ ขั้นตอนชัดเจนและง่ายต่อการใช้

ดูที่นี่

และแจ้งให้เราทราบ :-)


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, รุ่น 0.9.10.0 $ lsb_release -a ไม่มีโมดูล LSB รหัสผู้จัดจำหน่าย: Ubuntu คำอธิบาย: Ubuntu 15.04 เผยแพร่: 15.04 รหัสลับ: vivid
gare

0

ฉันใช้ Ubuntu 14.04 LTS ในหลาย ๆ เครื่อง เนื่องจากข้อเท็จจริงที่ว่าฉันมีข้อกำหนดเบื้องต้นบางประการ:

  1. ฉันไม่ต้องการบันทึกรหัสผ่านในเครื่องมือจัดการรหัสผ่าน
  2. ฉันใช้แขก VirtualBox ซึ่งสูญเสีย VPN ในการเชื่อมต่อเครือข่ายอีกครั้ง
  3. ช่องโต้ตอบรหัสผ่านจะเปิดขึ้นหลายครั้งเมื่อทำการเชื่อมต่ออีกครั้ง
  4. ฉันกำลังใช้เซิร์ฟเวอร์ VPN สำรอง (ล้มเหลว)
  5. ใช้ไฟล์กำหนดค่าสำหรับ uuids ของฉัน

ฉันทำงานกับสคริปต์ที่พิสูจน์แล้วและน่าเชื่อถือมากนี้:

อย่างไรก็ตามมี - บางประการที่มีแอปเพล็ตผู้จัดการเครือข่ายซึ่งฉันสามารถแก้ไขได้ชั่วคราว (ดูหัวข้อการแก้ไขปัญหาของบทความ)

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.