Ubuntu 18.04 ไม่มีความละเอียด DNS เมื่อเชื่อมต่อกับ openvpn


39

เมื่อฉันเชื่อมต่อกับเครือข่าย VPN ผ่าน Gnome Network-manager ฉันสูญเสียความละเอียด DNS และในทางปฏิบัติฉันไม่สามารถเข้าถึงทรัพยากรภายในเครือข่าย VPN หรือภายนอก

เมื่อฉันใช้ Ubuntu 16.04 และฉันใช้ VPN /etc/resolv.conf/ไฟล์ "" จะมีเซิร์ฟเวอร์ DNS ของเครือข่าย (VPN) ที่ฉันเชื่อมต่ออยู่ ตอนนี้มันมีรายการต่อไปนี้:

nameserver 127.0.0.53
search myprovider.com

จากสิ่งที่ฉันมีความเข้าใจ127.0.0.53เป็นที่อยู่ของต้นขั้วของ DNS system-resolvedที่ใช้โดย

ฉันสงสัยว่านี่เป็นข้อผิดพลาดเพราะ VPN ใช้งานได้ดีกับ Ubuntu 16.04 มีวิธีใดบ้างที่ฉันสามารถตั้งค่าเซิร์ฟเวอร์ DNS ของเครือข่ายของฉันเมื่อฉันใช้บริการ VPN

ปรับปรุง:

ฉันพยายามเชื่อมต่อกับเครือข่าย OpenVPN พร้อมไฟล์กำหนดค่าที่แนบท้ายโพสต์ แต่ฉันได้รับข้อผิดพลาด

 Authenticate/Decrypt packet error: cipher final failed

ฉันได้ตรวจสอบแล้วว่าเซิร์ฟเวอร์ใช้การบีบอัด lzo และฉันก็เปิดใช้งานด้วยเช่นกัน การเชื่อมต่อยังคงทำงานอยู่ แต่ฉันไม่สามารถนำทางไปยังหน้าใดก็ได้ภายในหรือภายนอก VPN

ในไฟล์กำหนดค่าที่แสดงด้านล่างฉันได้รวมวิธีแก้ไขปัญหาที่โพสต์ไว้ในคำตอบ

 client
 dev tun
 proto udp
 remote openvpn.bibsys.no 1194
 remote my-server-2 1194
 resolv-retry infinite
 nobind
 user myuser
 group myuser
 persist-key
 persist-tun
 ca ca-cert.pem
 cert openvpn.crt
 key openvpn.key
 cipher AES-256-CBC
 comp-lzo yes
 script-security 2
 up /etc/openvpn/scripts/update-systemd-resolved
 down /etc/openvpn/scripts/update-systemd-resolved
 down-pre

1
เมื่อทำการดีบักปัญหาที่คล้ายกันซึ่งไม่สามารถแก้ไขได้อย่างแน่นอนฉันก็ใช้resolvectl statusและหาresolvectl helpวิธีแก้ปัญหาเฉพาะของฉัน
notbad.jpeg

คำตอบ:


25

ฉันพบวิธีแก้ไขปัญหาในโพสต์บล็อกนี้ ในขณะที่มีวิธีการแก้ไขสองวิธีที่กล่าวถึงฉันชอบใช้วิธีที่สองเนื่องจากหมายความว่า DNS ของฉันถูกกำหนดโดยเซิร์ฟเวอร์ OpenVPN (โซลูชันแรกหมายถึงฉันใช้เซิร์ฟเวอร์ DNS เดียวกันไม่ว่าฉันจะเชื่อมต่อกับเซิร์ฟเวอร์ OpenVPN หรือไม่ก็ตาม)

ในระยะสั้น:

  • sudo mkdir -p /etc/openvpn/scripts
  • sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
  • sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved

จากนั้นแก้ไขไฟล์ไคลเอนต์ OpenVPN ของคุณ (เช่น client.ovpn) โดยเปลี่ยนสคริปต์ขึ้น / ลงเป็น:

script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved

(ฉันได้แสดงความคิดเห็นการตั้งค่าขึ้น / ลงต้นฉบับ)


หากมีใครใช้ยูทิลิตี gnome openvpn ที่ไฟล์ config.ovpn ควรจะถูกเก็บไว้ที่ไหน?
orestis

1
config.ovpnไม่พบ "พบ" - เป็นไฟล์กำหนดค่าไคลเอนต์ที่ใช้สำหรับเชื่อมต่อ คุณสร้างมันขึ้นมาหรือผู้ให้บริการ OpenVPN ออกให้คุณ (และอาจไม่ถูกเรียกconfig.ovpn- มันอาจเรียกได้ว่าเป็นอะไรก็ได้client.ovpn)
Andy Turfer

มันใช้งานได้อย่างสมบูรณ์แบบ
Ahsanul Haque

2
ฉันได้รับWARNING: Failed running command (--up/--down): external program fork failed
blockhead

น่าเสียดายที่นี่ใช้ไม่ได้กับ vpn ที่ใช้ tcp, เว็บไซต์นอก VPN ไม่ได้รับการแก้ไข, ดังนั้นฉันเริ่มใช้client.pritunl.com/#installพบว่ามีประโยชน์
Saisurya Kattamuri

48

ปัญหา

ไฟล์/etc/resolv.confไม่ได้รับการอัพเดตโดย/etc/openvpn/update-resolv-confสคริปต์เนื่องจากresolvconfไม่มีการติดตั้งตามค่าเริ่มต้นใน ubuntu 18.04

ในความเป็นจริงหนึ่งในบรรทัดแรกของสคริปต์นั้นจะตรวจสอบ/sbin/resolvconfไฟล์ที่ปฏิบัติการได้:

[ -x /sbin/resolvconf ] || exit 0

การติดตั้ง resolvconf ผ่านapt-getไม่ใช่วิธีแก้ปัญหาเนื่องจาก/etc/openvpn/update-resolv-confสคริปต์อัพเดต/etc/resolv.confไฟล์ด้วยรายการ DNS ที่พุชแต่อุปกรณ์ tun ดูเหมือนจะไม่สนใจ

วิธีการแก้

  1. Ubuntu 18.04 ใช้systemd-resolvedดังนั้นสิ่งที่คุณต้องทำคือติดตั้งสคริปต์ตัวช่วย openvpn สำหรับsystemd-resolvedผ่าน

    sudo apt install openvpn-systemd-resolved
    

    หรือด้วยคำแนะนำ GitHub เหล่านี้

  2. อัปเดตconfig.ovpnไฟล์ของคุณโดยเพิ่มบรรทัดเหล่านี้:

    script-security 2
    up /etc/openvpn/update-systemd-resolved
    down /etc/openvpn/update-systemd-resolved
    down-pre
    

    ซึ่งแทนที่จะเพิ่มขึ้นและลงของความเชื่อ/etc/openvpn/update-resolv-confมั่น

  3. เพื่อป้องกันการรั่วไหลของ DNS คุณควรเพิ่มบรรทัดนี้ในตอนท้ายของconfig.ovpnไฟล์ (ตามความคิดเห็นของปัญหา systemd นี้ ):

    dhcp-option DOMAIN-ROUTE .
    

1
ขอบคุณมากที่ทำงานกับฉันใน Ubuntu 18.04 และฉันต้องการที่จะระบุว่าพารามิเตอร์script-security 2ยังคงจำเป็นก่อนขึ้น / ลงเส้นมิฉะนั้นโปรแกรมลงไปกับข้อผิดพลาด (OpenVPN 2.4.4)
lucidyan

ดีใจที่มันช่วย :) เปลี่ยนประโยคสุดท้ายในคำตอบด้วยในกรณีของฉัน script-security 2ไม่จำเป็น นั่นอาจจะเป็นเพราะผมทำงานลูกค้า OpenVPN เป็นราก (กับ sudo)
Qlimax

1
@Qlimax คุณรู้หรือไม่ว่าเราจะนำเข้าการตั้งค่าเหล่านี้ไปยังไคลเอ็นต์ gnome openvpn ได้อย่างไร
orestis

2
@ หรือคุณต้องติดตั้งแพ็กเกจนี้sudo apt-get install network-manager-openvpn-gnome จากนั้นคุณควรจะสามารถนำเข้าไฟล์. vpn ไปยัง gnome network manager askubuntu.com/questions/187511/… UI มีการเปลี่ยนแปลงอยู่ตลอดเวลาคุณควรจะพบว่าใน settings-> network-> vpn
Qlimax

1
ประหลาดใจที่มันใช้งานได้สำหรับคุณหลายคน: ฉันมี ovpn.config ใช่ แต่ NetworkManager ดูเหมือนจะไม่ใช้มัน คุณแก้ไขไฟล์และนำเข้าอีกครั้งโดยเฉพาะเพื่อแทนที่สคริปต์ขึ้น / ลง เพราะฉันเห็นไบนารี / usr / lib / NetworkManager / nm-openvpn-service-openvpn-helper ที่ใช้ซึ่งฉันหาเอกสารไม่พบ หากต้องการนำเข้า ovpn.config อีกครั้งโปรดแก้ไขคำตอบ
Harald

4

ที่จริงแล้วมีวิธีแก้ปัญหานี้ง่ายกว่ามาก ปัญหานี้เกิดจากการรับส่งข้อมูล DNS และวิธีที่ Ubuntu 18 จัดการสิ่งนั้น โดยค่าเริ่มต้นการส่งต่อ IP ถูกปิดใช้งานซึ่งเป็นสิ่งที่ OpenVPN ต้องการเพื่อให้เครือข่ายที่เหมาะสม สิ่งที่คุณต้องทำคือเรียกใช้คำสั่งต่อไปนี้:

sudo nano /etc/sysctl.conf

net.ipv4.ip_forwardเมื่อคุณได้ไฟล์นี้เปิดให้มองหาบรรทัดที่ประกอบด้วย หากมีการแสดงความคิดเห็นบรรทัดนี้ลบเครื่องหมาย # ที่ด้านหน้าของบรรทัด (หากยังไม่ได้แสดงความคิดเห็นแล้วคุณมีปัญหาอื่น) บันทึกไฟล์จากนั้นรีสตาร์ทอินสแตนซ์เซิร์ฟเวอร์ OpenVPN ของคุณ

การแก้ไขนี้ไม่ต้องการการแก้ไขใด ๆ กับไคลเอนต์หรือรหัส OpenVPN หลังจากอัพเกรดเป็น Ubuntu 18 ผ่านการทดสอบและยืนยันการทำงาน

อย่างไรก็ตามสิ่งนี้ต้องการให้คุณดูแลเซิร์ฟเวอร์ได้อย่างชัดเจน และน่าเสียดายที่ข้อผิดพลาดมีอยู่สำหรับคนจำนวนมากที่เพิ่งเชื่อมต่อกับ 18.04 กับเซิร์ฟเวอร์ OpenVPN ที่จัดการโดยคนอื่น ...


ไม่ได้ผลสำหรับฉัน คุณทราบได้อย่างไรว่านี่เป็นปัญหาในกรณีของคุณ
hwjp

คำเตือน: คุณไม่จำเป็นต้องเปิดใช้งาน ip_forward บนไคลเอนต์ openvpn ไม่เคย! มันเป็นความเสี่ยงด้านความปลอดภัย บนเซิร์ฟเวอร์ openvpn คุณอาจจำเป็นต้องใช้ทั้งนี้ขึ้นอยู่กับการกำหนดค่าที่ใช้และนี่อาจเป็นสาเหตุที่ความคิดเห็นนี้ปรากฏขึ้น
higuita

2

ทดสอบกับ Ubuntu 18.04 เมื่อวันที่ 13 Sep 2018

มีอีกคำสั่งที่มีประโยชน์เพื่อตั้งค่าสิ่งที่คุณต้องการผ่านทางบรรทัดคำสั่ง แต่ในกรณีของฉันคุณสามารถควบคุมการเชื่อมต่อ VPN ของคุณได้ทั้งในบรรทัดคำสั่งและ GUI

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- เป็นสิ่งจำเป็นโดยค่าเริ่มต้น แต่ไม่มีผลอะไร

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default ไม่ควรใช้เกตเวย์ระยะไกลเป็นเส้นทางเริ่มต้น

และสัมผัสสุดท้ายที่น่าสนใจอีกมากมาย:

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

หลังจากนั้นคุณสามารถควบคุม vpn ด้วย GUI หรือใช้คำสั่งต่อไปนี้:

sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com


0

ฉันก็รับผลกระทบเช่นกัน ในกรณีของฉันฉันใช้ OpenVPN กับเนมเซิร์ฟเวอร์ภายใน (ซึ่งอยู่ใน VPN) ใช้งานได้จนถึง Ubuntu 17.10 (ด้วย "hosts: files dns" ใน /etc/nsswitch.conf)

/etc/resolv.conf ถูกอัพเดตอย่างถูกต้องโดยสคริปต์ openvpn (ผ่านการเรียกไปยัง / etc / openvpn / update-resolv-conf ในไฟล์กำหนดค่าไคลเอนต์ openvpn)

อย่างไรก็ตามการแก้ปัญหาชื่อสำหรับโฮสต์ภายใน VPN ไม่ทำงานอีกต่อไป (หรืออย่างน้อยประปราย ... ฉันเดาแคช DNS ท้องถิ่นได้รับชื่อ แต่หลังจากเวลานาน)

สิ่งที่ดูเหมือนจะช่วยหรือแก้ไขปัญหา (แม้ว่าจะยังเร็วเกินไปที่จะพูด) คือการติดตั้งแพ็คเกจด้านล่าง:

sudo apt ติดตั้ง openvpn-systemd- แก้ไขแล้ว

ในอีกไม่กี่วันฉันจะมีประสบการณ์มากขึ้นว่าจะแก้ไขปัญหาของฉันได้หรือไม่

หากคุณได้รับผลกระทบด้วยโปรดลองและโพสต์ความคิดเห็น!

ไชโย

ไมเคิล


ในที่สุดดูเหมือนว่าจะไม่ใช่วิธีแก้ปัญหา ฉันมีปัญหาอีกครั้ง ผมคิดว่าอย่างอื่นทำให้มันทำงาน ...
ไมเคิล Opdenacker

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