ฉันใช้ Ubuntu 13.04 กับ Gnome และฉันเพิ่งตั้งค่า VPN (เปิด) มีวิธีการเปิดใช้งานเป็นค่าเริ่มต้นหรือไม่ ทุกครั้งที่ฉันบู๊ตหรือแม้กระทั่งขาดการเชื่อมต่อฉันต้องเปิดใช้งาน VPN ด้วยตนเอง มีตัวเลือกที่ฉันหายไปหรือไม่?
ฉันใช้ Ubuntu 13.04 กับ Gnome และฉันเพิ่งตั้งค่า VPN (เปิด) มีวิธีการเปิดใช้งานเป็นค่าเริ่มต้นหรือไม่ ทุกครั้งที่ฉันบู๊ตหรือแม้กระทั่งขาดการเชื่อมต่อฉันต้องเปิดใช้งาน VPN ด้วยตนเอง มีตัวเลือกที่ฉันหายไปหรือไม่?
คำตอบ:
ผ่านตัวบ่งชี้ Network Manager nm-applet (แอปเพล็ตถาดเครือข่าย GNOME หรือ Unity ที่ติดตั้งไว้ตามค่าเริ่มต้น) คุณสามารถกำหนดค่า NetworkManager ให้เชื่อมต่อกับ VPN โดยอัตโนมัติเมื่อเชื่อมต่อเครือข่าย
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/
เก็บรหัสผ่านในข้อความธรรมดาในแฟ้มการกำหนดค่าใน เพื่อทำสิ่งนี้:
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 เป็น 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
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
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
คำแนะนำ:
สร้างไฟล์ข้อความเปล่าชื่อ vpn-auto-connector.sh (ฉันบันทึกไว้ในโฟลเดอร์บ้านของฉันคลิกขวาที่ไฟล์และเลือกคุณสมบัติ -> สิทธิ์และตรวจสอบ "อนุญาตให้เรียกใช้ไฟล์เป็นโปรแกรม" (คุณอาจต้องจัดเก็บไฟล์ ที่อื่นและ / หรือแก้ไขสิทธิ์การอ่าน / เขียน / execture เช่นกันหากคอมพิวเตอร์ของคุณมีผู้ใช้หลายคน)
คัดลอกรหัสจากด้านบนไปยังไฟล์ที่คุณสร้าง แทนที่ค่าของตัวแปรสามตัวต่อไปนี้:
การเชื่อมต่อ = "Auto Ethernet"
vpn_connection = "การเชื่อมต่อ VPN ของฉัน"
run_interval = "60"
พวกเขาสามารถพบได้โดยการเปิดตัวจัดการเครือข่าย ในกรณีของฉันการเชื่อมต่อ = "Auto Ethernet" คือการเชื่อมต่อแบบใช้สายของฉัน (ไม่ได้ทดสอบด้วยไร้สาย) และ vpn_connection = "การเชื่อมต่อ VPN ของฉัน" เป็นชื่อของการเชื่อมต่อ VPN ของฉัน run_interval = "60" เป็นช่วงเวลาเป็นวินาทีเพื่อให้สคริปต์ซ้ำ
เปิดแอปพลิเคชัน -> เครื่องมือระบบ -> การตั้งค่า -> แอปพลิเคชันเริ่มต้น เพิ่มชื่อที่เหมาะสมเช่น "ตัวเชื่อมต่อ VPN อัตโนมัติ" และสำหรับคำสั่งให้เลือกไฟล์. sh ที่คุณบันทึกไว้ก่อนหน้า ตอนนี้สคริปต์ทุบตีจะทำงานเมื่อเริ่มต้นและจะทำการตรวจสอบว่าการเชื่อมต่อ VPN เปิดใช้งานอยู่หรือไม่ คุณสามารถลองได้โดยยกเลิกการเชื่อมต่อ VPN และควรเปิดใช้งานอีกครั้งโดยอัตโนมัติ
Vpnautoconnectทำงานได้ดีใน Ubuntu 12.04, 13.04 และ 13.10 (ฉันคิดว่าใน 13.10 ตัวเลือก "เชื่อมต่ออัตโนมัติ" ใน Network-Manager ได้รับการแก้ไขแล้วและทำงานได้ทันที)
ดังนั้นหากคุณมีปัญหาในการติดตั้งหรือใช้งานได้หรือไม่พบตัวเลือก "openvpn" ในเมนูแบบเลื่อนลงของ Network-Manager เพื่อสร้างการเชื่อมต่อ VPN แบบเปิดคุณสามารถติดตาม tuto นี้ได้ ขั้นตอนชัดเจนและง่ายต่อการใช้
ดูที่นี่
และแจ้งให้เราทราบ :-)
นี่คือสคริปต์ที่แข็งแกร่งและน่าเชื่อถือซึ่งจะ:
สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณเชื่อมต่อกับ 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 !!