วิธีเชื่อมต่อ VPN โดยอัตโนมัติด้วย Network-Manager


17

ฉันมีการเชื่อมต่อ VPN ที่ใช้งานได้ ตอนนี้ฉันต้องการให้การเชื่อมต่อ VPN นี้เปิดใช้งานโดยอัตโนมัติเมื่อฉันอยู่ในเครือข่ายไร้สาย มีวิธีกราฟิกที่ไม่ล่วงล้ำโดยใช้ network-manager-applet หรือไม่? ถ้าฉันจำได้ถูกต้องมันใช้งานได้ชั่วขณะหนึ่งและไม่ทำงานอีกต่อไป

ฉันทำให้การเชื่อมต่อไร้สายเป็นปัญหาสำหรับผู้ใช้ทุกคนโดยไม่ต้องใส่รหัสผ่านทุกครั้ง

โปรแกรม CLI ที่ใช้คือ vpnc พร้อมเปิดใช้งาน Hybrid-Auth (รองรับ cisco VPN-ไคลเอนต์) จากsroA PPA ของ

แก้ไข: ฉันสามารถ 'ลองคำตอบอีกต่อไป (เพราะ eduroam) และเนื่องจากไม่มีคำตอบที่ดูเหมือนว่าจะได้รับคะแนนเสียงส่วนใหญ่ฉันจะปล่อยให้มันไม่ได้ตอบตอนนี้จนกว่าจะมีใคร upvoted แล้วฉันจะยอมรับว่า


คุณจะมาพร้อมกับสิ่งนี้ได้อย่างไร
rlemon

ฉันไม่ต้องการมันเป็นเวลานานแล้ว อาจจะมาเมษายนในมหาวิทยาลัยใหม่
เทอร์โบ

Possibel ซ้ำกันไหม askubuntu.com/questions/86365
fossfreedom

@fossfreedom ไม่ซ้ำกันอย่างแน่นอนเพราะคำถามของฉันเกี่ยวกับ vpnc มากกว่า openconnect
เทอร์โบ

ฉันเขียนโพสต์บล็อกสั้น ๆ เกี่ยวกับวิธีบล็อกการเชื่อมต่ออินเทอร์เน็ตของคุณเว้นแต่ว่า VPN เปิดใช้งานแล้ว: mentat.za.net/blog/2015/01/24/vpn-only-internet
Stefan van der Walt

คำตอบ:


18

วิธีแก้ปัญหาที่แนะนำโดยcon-f-useควรใช้งานได้ แต่ไม่ทำงานเนื่องจากข้อผิดพลาดที่ยาวนาน:

https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/280571

มีวิธีแก้ปัญหาว่า สำหรับ NetworkManager เวอร์ชันล่าสุดมี commandline utitility nmcliซึ่งสามารถแก้ไขและบันทึกเป็นสิ่งที่ต้องการ/etc/NetworkManager/dispatcher.d/vpn-up:

#! /bin/bash

REQUIRED_CONNECTION_NAME="<name-of-connection>"
VPN_CONNECTION_NAME="<name-of-vpn-connection>"


activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION_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

[ฉันไม่ได้ทดสอบสิ่งนี้ - โปรดทดสอบและแก้ไขตามผลลัพธ์]

โปรดดู: https://wiki.archlinux.org/index.php/NetworkManager#Use_dispatcher_to_connect_to_a_vpn_after_a_network-connection_is_established_a_network_con_th_id_id_idมีข้อมูลเพิ่มเติม


โปรดทราบว่าใน 13.04 ฉันต้องใส่สคริปต์นั้นใน /etc/network/if-up.d และแก้ไข / etc / NetworkManager / ระบบการเชื่อมต่อ / ชื่อการเชื่อมต่อตามaskubuntu.com/questions/198136/ …เพื่อหลีกเลี่ยง "ไม่ ข้อผิดพลาด VPN ที่ถูกต้อง "ข้อผิดพลาด
OlegYch

แฮ็ควิกิ Arch ทำงานได้จริง! ฉันลองใช้สคริปต์บน arch wiki เมื่อวันที่ 11 กรกฎาคม 2013 และแก้ไขจาก 'nmcli ... ' เป็น 'su [user] -c "nmcli ... "' ไม่ทำงาน! ทำตามคำแนะนำใน wiki และอย่าลืมไชโย + x;) ไชโย!

ข้อผิดพลาดที่กล่าวถึงโดย Hugo Eden ( bugs.launchpad.net/ubuntu/+source/network-manager/+bug/280571 ) ได้รับการแก้ไขอัปสตรีมในช่วง 5 เดือนที่ผ่านมา อย่างไรก็ตามฉันยังคงประสบกับปัญหานี้อย่างแม่นยำ ... จะให้อะไร
iGadget

สิ่งนี้ไม่ได้ผลสำหรับฉันดังนั้นฉันจึงตัดสินใจที่จะตรวจสอบ/var/log/syslogและเห็นข้อผิดพลาดต่อไปนี้: Mar 4 13:49:51 oleg-HP nm-dispatcher.action: Cannot execute /etc/NetworkManager/dispatcher.d/vpn-up ': เจ้าของไม่สามารถใช้งานได้' วิธีแก้ปัญหาคือsudo chmod 755 /etc/NetworkManager/dispatcher.d/vpn-up
Oleg Belousov

8

ใน Ubuntu Trusty 14.04 VPN เชื่อมต่ออัตโนมัติที่จัดเก็บบน GUI ในการตั้งค่า Wi-Fi แต่ละรายการที่บันทึกไว้ การตั้งค่าระบบ - เครือข่าย - ตรวจสอบ Wi-Fi หรือ Lan ที่สนใจ - การตั้งค่า (แท็บทั่วไป) - เลือก "เชื่อมต่ออัตโนมัติกับ VPN ... "


3

ถ้าฉันจำได้ถูกต้องมันใช้งานได้ชั่วขณะหนึ่งและไม่ทำงานอีกต่อไป

  • นี่อาจชัดเจน แต่บางครั้งฉันก็ไม่คิด คุณลองติดตั้งใหม่เช่น:

    sudo apt-get purge network-manager-vpn sudo apt-get install เครือข่าย manager-vpnc จากนั้น: ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้ฉันต้องการให้การเชื่อมต่อ VPN นี้เปิดใช้งานโดยอัตโนมัติเมื่อฉันอยู่ในเครือข่ายไร้สาย

  • มีวิธีการระงับ "ไม่สามารถเชื่อมต่อ" ประเภทข้อความเมื่อผู้ใช้ของคุณอยู่ในเครือข่ายที่ไม่ถูกต้อง แต่จำไม่ได้ว่ามันไปอย่างไร ฉันไม่เห็นวิธีอื่นในการเชื่อมต่อโดยอัตโนมัติในรูปแบบกราฟิก บางทีคุณอาจจะต้องเขียนสคริปต์ที่ทำการเชื่อมต่อเมื่ออยู่ในเครือข่าย wlan ดังกล่าว

หวังว่าจะช่วย


ฉันยังไม่ได้มาทดสอบจริง ฉันจะทำเครื่องหมายคำตอบเมื่อฉันจะ คำมั่นสัญญา
เทอร์โบ

จากประสบการณ์ของฉันสิ่งนี้ใช้ไม่ได้จริง ฉันเชื่อว่านี่เป็นข้อผิดพลาดใน NetworkManager
Conor Rynne

3
ใช่นี่คือสิ่งที่แตกสลายแม้ในแม่นยำ มันไม่เชื่อมต่อโดยอัตโนมัติ O_o
eggonlegs

ใช่ - หัก ไม่ทำงาน (Ubunutu 12.04)
user48956

3

ฉันสามารถยืนยันวิธีการแก้ปัญหาต่อไปนี้ใช้งานได้สำหรับฉัน ฉันใช้ Ubuntu 14.04 LTS

ฉันไปที่ไอคอนปิดเครื่องจากนั้นการตั้งค่าระบบ

เมื่อหน้าจอการตั้งค่าเปิดขึ้นฉันไปที่ 'เครือข่าย' และเครือข่าย WiFi ที่ฉันเชื่อมต่อ มีลูกศรขนาดเล็กด้านเดียวของชื่อเครือข่าย

ภาพหน้าจอการตั้งค่าเป็นภาษาอาหรับ

คลิกไอคอนนั้นและคุณจะเห็นตัวเลือกที่เรียกว่า "การตั้งค่า" หรือ "ตัวเลือก" (หรือบางอย่างที่คล้ายกัน) ที่นี่:

คลิกการตั้งค่า

เมื่อหน้าต่างถัดไปเปิดขึ้นเพียงไปที่แท็บ 'ทั่วไป' และคุณจะเห็นตัวเลือกที่ให้ตัวเลือกในการเชื่อมต่อกับ VPN โดยอัตโนมัติ เลือก VPN ที่คุณต้องการเชื่อมต่อเมื่อเชื่อมต่อกับ WiFi นี้และบูม! ทุกครั้งที่คุณเชื่อมต่อกับเครือข่ายนี้ Ubuntu จะเชื่อมต่อคุณกับ VPN นั้นด้วย :)

สำหรับฉันมันทำงาน ฉันหวังว่ามันจะใช้ได้กับคนอื่นด้วย ไม่ต้องใช้เครื่องมือแก้ไขข้อความหรือโปรแกรมแก้ไขรหัสหรืออะไรก็ได้ ..


0

ใช้ Python script Gist # 1547663ต่อไปนี้

พารามิเตอร์แรกของสคริปต์คือชื่อการเชื่อมต่อ VPN ใน NetworkManager และที่สองคือชื่อที่คั่นด้วยเครื่องหมายจุลภาคของเครือข่ายที่ควรละเว้น (เช่นการใช้การเชื่อมต่อ VPN ที่บ้านไม่มีประโยชน์)

ตัวอย่างการติดตั้งและปล่อยให้มันรันตอนบูท:

git clone git://gist.github.com/1547663.git /home/user/autovpn/
echo "python /home/user/autovpn/autovpn.py 'myvpn' 'Auto homenetwork,Auto worknetwork' > /var/log/autovpn.log&" > /etc/rc.local
/etc/rc.local

ตอนนี้ถ้าคุณเชื่อมต่อกับเครือข่าย (ทั้ง wifi หรืออีเธอร์เน็ต) ก็จะพยายามตั้งค่าการเชื่อมต่อ VPN


1
ฉันคิดว่าวิธีการนี้มีความสง่างามน้อยลงเนื่องจากกระบวนการพื้นหลังใช้งานได้ตลอดเวลาในขณะที่สามารถขับเคลื่อนด้วยกิจกรรมได้เหมือนคำตอบของ @hugoheden
gertvdijk

มันทำได้มากกว่าคำตอบของเขา: มันยังรองรับการเชื่อมต่อ VPN อีกครั้งและกรณีที่ผู้ใช้ปิดการเชื่อมต่อ VPN ด้วยตนเอง (ซึ่งหมายความว่าไม่ควรลองเชื่อมต่อ VPN อีกครั้งในกรณีนั้น)
iElectric

0

คุณไม่ต้องการสคริปต์ผู้มอบหมายงานอีกต่อไป! ใน 14.04 (Trusty Tahr) คุณเพียงแค่ทำตามขั้นตอนต่อไปนี้หลังจากตั้งค่าตัวเลือกการเชื่อมต่ออัตโนมัติใน NetworkManager GUI

เก็บ vpn-secret อย่างชัดเจนในไฟล์กำหนดค่าสำหรับการเชื่อมต่อ VPN ที่อยู่ด้าน/etc/NetworkManager/system-connections/YourVPNConnectionNameล่าง

คุณสามารถทำได้โดยการตั้งค่าIPSec secret-flags=0และXauth password-flags=0ในไฟล์กำหนดค่า จากนั้นไปที่ NetworkManager GUI และบันทึกการตั้งค่าการเชื่อมต่อ VPN อีกครั้ง ตอนนี้ส่วนที่ชื่อว่า [vpn-secret] ควรมีอยู่ในไฟล์กำหนดค่า ตรวจสอบอีกครั้งและการเชื่อมต่ออัตโนมัติควรทำงานในขณะนี้!


0

แม้ว่าหน้า man จะแสดงรายการnmcli con statusเป็นคำสั่งที่ถูกต้อง แต่วิธีแก้ไขปัญหาข้างต้นนั้นได้รับจากการHugo Hedenส่งคืนข้อผิดพลาด"Error: Object 'status' is unknown, try 'nmcli help'"

ฉันใช้ nmcli 1.2.2 ( nmcli -v) และฉันได้ทดสอบและแก้ไขสิ่งต่อไปนี้/etc/NetworkManager/dispatcher.d/vpn-upและมันทำงานได้อย่างมีเสน่ห์

#! /bin/bash

REQUIRED_CONNECTION_NAME="<name-of-connection>"
VPN_CONNECTION_NAME="<name-of-vpn-connection>"


default_conn=$(nmcli con show --active | grep "${REQUIRED_CONNECTION_NAME}")
vpn_conn=$(nmcli con show id | grep "${VPN_CONNECTION_NAME}")
if [ "${default_conn}" -a ! "${vpn_conn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi

หมายเหตุ: คุณสามารถใช้nmcli con showเพื่อดูชื่อการเชื่อมต่อทั้งหมดซึ่งไม่เหมือนกับชื่อที่แสดงใน GUI การเชื่อมต่อเครือข่าย


OP กำลังถามเกี่ยวกับ Ubuntu
fosslinux

กาลีและอูบุนตูเป็นทั้งเดเบียนดังนั้นจึงมักจะแก้ปัญหาเหมือนกัน ฉันเพิ่งไปข้างหน้าและทดสอบสิ่งนี้บนอินสแตนซ์ Ubuntu 15.10 และข้อผิดพลาด nmcli เหมือนกับที่ฉันได้กล่าวถึงข้างต้น การแก้ปัญหาทำงานเหมือนกันเช่นกัน เวอร์ชัน nmcli ที่ติดตั้งบนกล่อง 15.10 คือ 1.0.4
jw00druff

0

ถ้าคุณชอบเทอร์มินัลคุณสามารถใช้nmcliฉันทำได้โดยใช้คำสั่งต่อไปนี้:

ก่อนอื่นค้นหาและเปิดการเชื่อมต่อ VPN ที่คุณต้องการอัปเดต

➜  ~ nmcli c show --active |grep vpn
MyVPN           115ae594-aa91-4d13-8c92-421af245f935  vpn     wlp61s0         
➜  ~ nmcli c edit MyVPN

นี่จะเปิดพรอมต์ nmcli จากที่นี่คุณสามารถค้นหาค่าและตั้งค่าเช่นนี้:

===| nmcli interactive connection editor |===
...
nmcli> print connection.autoconnect
connection.autoconnect: no
nmcli> set connection.autoconnect yes
nmcli> save persistent
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? (yes/no) [yes] yes
Connection 'MyVPN' (115ae594-aa91-4d13-8c92-421af245f935) successfully updated.

และคุณควรจะทำ!


0

คุณสามารถเพิ่ม uuid ของโปรไฟล์ VPN โดยใช้ฟิลด์ "secondaries" ในการเชื่อมต่อหลักของคุณ

ตัวอย่างเช่น, /etc/NetworkManager/system-connections/Wired

[connection]
id=Wired
uuid=95ad54f8-9d72-3e65-a4a7-b106aa310eed
type=ethernet
secondaries=66ecf287-8b26-413b-86f2-caca7608bc67;

ข้อมูลอ้างอิงhttps://developer.gnome.org/NetworkManager/stable/nm-settings.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.