เชื่อมต่อ VPN อัตโนมัติอีกครั้งเมื่อยกเลิกการเชื่อมต่อหรือไม่


16

ฉันเป็นผู้ใช้ Ubuntu GNOME และฉันสงสัยว่ามีวิธีที่จะเชื่อมต่อ VPN กับการตัดการเชื่อมต่ออีกครั้งโดยอัตโนมัติได้หรือไม่ ฉันใช้โปรโตคอลOpenVPN

ฉันได้ตรวจสอบตัวจัดการเครือข่ายอย่างละเอียดแล้ว แต่ไม่พบตัวเลือกดังกล่าวเพียงเพื่อเชื่อมต่อกับ VPN เมื่อเชื่อมต่อกับ WiFi เฉพาะ

คำตอบ:


20

ตั้งแต่ 18.10 (ไม่สามารถตรวจสอบในรุ่นก่อนหน้า) การเชื่อมต่อ VPN ใน NetworkManager มีการตั้งค่าvpn.persistentซึ่งทำเช่นนั้น: เชื่อมต่อ VPN กับการสูญเสียการเชื่อมต่อจนกว่าคุณจะยกเลิกการเชื่อมต่อด้วยตนเอง มันถูกตั้งค่าเป็นค่า"no"เริ่มต้นและน่าเสียดายที่ไม่มีการเปิดเผยทั้งในการตั้งค่าเครือข่าย Gnome หรือใน nm-connection-editor

แต่คุณสามารถตั้งค่าผ่าน CLI ดังนี้:

nmcli connection modify <Your VPN connection name> vpn.persistent yes

การเชื่อมต่อจะต้องมีอยู่ก่อนที่คุณจะทำเช่นนั้นแน่นอน


2
นี่คือสิ่งที่ฉันต้องการ ขอบคุณหนึ่งล้าน
Wyatt8740

เนื่องจากการตั้งค่านี้พร้อมใช้งานเหตุใดการตั้งค่าเครือข่ายจึงไม่แสดง แล้วคุณค้นพบที่ไหน / อย่างไร? ไม่มีการพูดถึงเรื่องนี้ที่developer.gnome.org/NetworkManager/stable/nmcli.htmlแต่เนื่องจากการรันคำสั่งดูเหมือนว่าจะประสบความสำเร็จฉันเดาว่ามันใช้งานได้ ...
Al F

@alf ผมคิดว่าผมพบว่าการตั้งค่านี้เพียงแค่จิ้มที่ nmcli ใน terminal แต่ก็ยังเอกสารที่developer.gnome.org/NetworkManager/stable/...และในหน้าคนนาโนเมตรตั้งค่า
m0NKey bR4in

19

OpenVPN มีกลไกในการตรวจจับลิงก์ที่ไม่ทำงานและเชื่อมต่อใหม่โดยอัตโนมัติ ใน Network Manager ไปที่ "แก้ไขการเชื่อมต่อ" เลือกการเชื่อมต่อ VPN ของคุณและเลือก "แก้ไข" ในแท็บ "VPN" คลิกที่ "Advanced ... " และไปที่แท็บ "ทั่วไป" คุณมีสองทางเลือกที่เกี่ยวข้อง:

"ระบุช่วงเวลา ping" บอก OpenVPN ความถี่ในการตรวจสอบว่าลิงก์ยังมีชีวิตอยู่หรือไม่ "ระบุทางออกหรือเริ่มการ ping ใหม่" บอกเวลาที่จะรอจนกว่าจะดำเนินการและดำเนินการใด

ตัวอย่าง: การตั้งค่าของฉันคือ "30 / ping-restart / 300" ซึ่งหมายความว่า OpenVPN จะตรวจสอบทุก ๆ 30 วินาทีว่าลิงก์ยังทำงานอยู่หรือไม่ หากลิงก์ไม่ทำงานเป็นเวลา 300 วินาทีลิงก์จะเริ่มต้นใหม่

วิธีนี้ไม่จำเป็นสำหรับสคริปต์ภายนอก ...


1
นี่ควรเป็นคำตอบที่ยอมรับได้
necbot

5
นี่ไม่เป็นความจริงสำหรับ Ubuntu 18.04 เป็นอย่างน้อย ฉันมีช่วงเวลา ping และ ping-restart แต่จะปิดตัวเองอยู่ดี
ชื่อที่แสดง

@SargeBorsch: คำตอบโดย m0NKey bR4in ดูเหมือนจะใช้งานได้ (ตั้งค่าvpn.persistentเป็นyes)
kontextify

1

หลังจากการขุดเล็กน้อยฉันพบคำตอบนี้ทดสอบ (บน Ubuntu GNOME 15.04) และดูเหมือนว่าจะใช้งานได้

สิ่งเดียวที่ฉันอาจเพิ่มคือเมื่อสร้างไฟล์สคริปต์แล้วไม่จำเป็นต้องบันทึกลงในโฟลเดอร์ / home ของคุณ คุณสามารถบันทึกได้ทุกที่ทำให้ใช้งานได้และเพิ่มลงในรายการโปรแกรมเริ่มต้น


0

หลังจากอ้างว่าเป็น SMOP (Simple Matter of Programming) ฉันเขียนสคริปต์ทุบตีที่ตรวจสอบ "Link Down" จากนั้นเรียกใช้สคริปต์ผู้ใช้ ใช้งาน CPU น้อยกว่าตอบสนองได้ดีกว่าwhile true....sleep 30วิธี ดูคำตอบของฉันที่นี่ มันเกี่ยวกับ "การเชื่อมต่อ WiFi ที่กำลังหมุน" แต่ก็อาจใช้ได้สำหรับคุณเช่นกัน


0

สคริปต์นี้จะทำงานบน 16.04 ซึ่งnmcli con statusไม่สามารถใช้งานได้อีกต่อไป:

#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
    nmcli con up $CON
fi

STATUS="$(nmcli con show -f name | grep purple)"บิตสั้น หรือคุณสามารถตรวจสอบได้ว่าการเชื่อมต่อจริงนั้นใช้งานได้หรือไม่nmcli con show --active id 'purple'
smac89

0

ฉันคิดว่าคำตอบที่สมบูรณ์ตามคำตอบอื่น ๆ ไปดังนี้:

#!/bin/bash +x
  while [ "true" ]
   do
        CON="Your-VPN-Name"
        STATUS=`nmcli con show --active | grep $CON | cut -f1 -d " "`
        if [ -z "$STATUS" ]; then
                echo "Disconnected, trying to reconnect..."
                (sleep 1s && nmcli con up $CON)
        else
                echo "Already connected !"
        fi
        sleep 30
   done
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.