วิธีดึงเซิร์ฟเวอร์ชื่อใหม่บนการเชื่อมต่อ VPN โดยอัตโนมัติ


11

ฉันใช้ Ubuntu xenial 16.04

เราใช้ openvpn เพื่อเชื่อมต่อกับคลาวด์ส่วนตัวเสมือน คลาวด์นั้นมีเซิร์ฟเวอร์ DNS ของตัวเอง (เช่นเดียวกับเส้นทางท้องถิ่นของเรา - บ้านหรือสำนักงาน)

เมื่อฉันเชื่อมต่อกับ VPN IP ทั้งหมดในเครือข่ายนั้นพร้อมใช้งาน แต่ฉันไม่สามารถเข้าถึงด้วยชื่อโฮสต์ เหตุผลนั้นง่าย: ไฟล์ resolv.conf ยังคงแสดงเนมเซิร์ฟเวอร์สำนักงานในพื้นที่ของฉัน ถ้าฉันเขียนทับ resolv.conf ด้วยตนเองเพื่อให้เซิร์ฟเวอร์ชื่อที่ถูกต้องทั้งหมดดี

ดังนั้นฉันจะให้มันตั้งค่า resolv.conf ใหม่โดยอัตโนมัติเมื่อเชื่อมต่อกับ VPN ได้อย่างไร

ฉันขอเกี่ยวกับเหตุการณ์ของระบบและรันสคริปต์ได้หรือไม่


1
ปกติแล้วจะมีตัวเลือกให้ VPN ผลักเซิร์ฟเวอร์ DNS ของตัวเอง คุณใช้ไคลเอนต์ใด - tunnelblick
ไรเดอร์

ฉันใช้ไคลเอนต์ openvpn อย่างเป็นทางการ ฉันอ่านว่ากระบวนการ VPN ไม่สามารถอัปเดต DNS
Christian Bongiorno

คุณลอง--register-dnsตัวเลือกแล้วหรือยัง อีกทางเลือกหนึ่งคือตัวเลือกฝั่งไคลเอ็นต์ที่คุณสามารถตั้งค่าเป็น dhcp-options (ด้านพลิกของคำแนะนำที่นี่openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
Ryder

คำตอบ:


8

แพคเกจ OpenVPN /etc/openvpn/update-resolv-confมีสคริปต์สำหรับเรื่องนี้ใน คุณต้องกำหนดค่าด้วย:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

สิ่งนี้จะดึงข้อมูลที่อยู่เซิร์ฟเวอร์ DNS จากdhcp-option DNSตัวเลือกที่ส่งผ่านโดย OpenVPN เพียร์ / เซิร์ฟเวอร์และกำหนดค่าresolvconfตามลำดับ มันจัดการdhcp-option DOMAINเช่นกัน

อย่างไรก็ตามมันไม่สมบูรณ์เนื่องจากจะเป็นการเพิ่มเซิร์ฟเวอร์ชื่อเหล่านั้นลงในรายการเซิร์ฟเวอร์ชื่อที่มีอยู่แทนที่จะเขียนทับรายชื่อเซิร์ฟเวอร์ หากคุณใช้งานopenresolvอยู่-xสามารถใช้เพื่อเขียนทับการกำหนดค่า DNS แทนการเตรียมการล่วงหน้า


หากคุณกำลังใช้systemd-resolvedคุณสามารถใช้/etc/openvpn/update-systemd-resolvedซึ่งตะขอเข้าไปแทนsystemd-revolvedresolvconf

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

ใน Debian openvpn-systemd-resolvedสคริปต์นี้อยู่ใน


2
ด้านบน 2 บรรทัดคุณจะต้องเพิ่มscript-security 2หรือเรียกใช้openvpnด้วย--script-security 2
32r34wgf3e

0

นี่คือวิธีแก้ปัญหาที่ฉันพบ: มีสวิตช์ที่ให้คุณเรียกใช้สคริปต์เมื่อทันเนลและทำงาน ฉันใช้สวิตช์เพื่อเขียนทับไฟล์ resolv.conf โดยที่ฉันรู้ว่าถูกต้อง ฉันรู้ว่ามันแฮ็คทั้งหมด

sudo openvpn --up reset-dns.sh --client client.ovpn

สคริปต์ (reset-dns):

#!/bin/bash
cp ~/resolv.conf /etc/resolv.conf

นอกจากนี้สำหรับผู้ที่พูดว่า "OMG! คุณกำลังเรียกใช้อุโมงค์นั้นในฐานะรูท!" มันจะไม่วิ่งไปทางอื่น ก่อนแฮ็ค DNS ของฉัน

แน่นอนว่าฉันเปิดรับวิธีที่ดีกว่า ตัวจัดการเครือข่ายสำหรับ Ubuntu นั้นใช้งานไม่ได้ ฉันตัดตั๋วไปอูบุนตูด้วยซ้ำหลายครั้ง

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