วิธีกำหนดเซิร์ฟเวอร์ DNS ใน openvpn


17

ฉันตั้งค่าเซิร์ฟเวอร์ openvpn ด้วยรหัสคงที่ (โหมดใบรับรองไม่สามารถใช้งานได้เนื่องจาก DPI ที่เกตเวย์แห่งชาติ) แต่ฉันไม่สามารถเปลี่ยน DNS ได้โดยอัตโนมัติหลังจากการเชื่อมต่อ ฉันค้นหาผ่านทางอินเทอร์เน็ตและทางทิศตะวันออก, dhcp-optionและทุกคนแสดงให้เห็นการใช้งาน

ฉันพยายามเพิ่มบรรทัดนี้ไป client.ovpn

dhcp-option DNS 8.8.8.8

ไม่มีผลกระทบ ฉันพยายามเพิ่มบรรทัดนี้ในเซิร์ฟเวอร์ conf

push "dhcp-option DNS 8.8.8.8"

ไม่มีผลใด ๆ

ในความเป็นจริงตามคู่มือ

- ประเภท dhcp ตัวเลือก [Parm]

ตั้งค่าคุณสมบัติ TAP-Win32 TCP / IP แบบขยายต้องใช้กับ --ip-win32 dynamic หรือ --ip-win32 adaptive

แต่ลูกค้าของฉันเป็นเครื่อง Mac เซิร์ฟเวอร์ Linux วิธีการแก้ไขปัญหาใด ๆ ?


1
คุณควรพูดถึงไคลเอ็นต์ที่คุณใช้บนเครื่อง OSX
FloHimself

2
@FloHimself: openvpnยูทิลิตี้บรรทัดคำสั่งมาตรฐาน
Siyuan Ren

คำตอบ:


7

บนระบบ Linux คุณจำเป็นต้องเรียกใช้สคริปต์ภายนอก

นี่คือเอกสาร: https://wiki.archlinux.org/index.php/OpenVPN#DNS

พบสคริปต์ได้ที่นี่หรือรุ่น Linux ที่ใหม่กว่าที่นี่และคุณสามารถเรียกได้โดยเพิ่มสคริปต์นี้ในการกำหนดค่าไคลเอนต์ openvpn:

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

1
ถ้ารสชาติลินุกซ์ของคุณใช้ NetworkManager ดูการเปลี่ยนแปลงที่จะทำงานร่วมกับ nmcli
palswim

5

ฉันไม่ใช่ผู้เชี่ยวชาญ แต่จากการอ่านmanหน้าเว็บด้านล่างใบเสนอราคาของคุณ:

- ประเภท dhcp ตัวเลือก [Parm]

...

โปรดทราบว่าหาก--dhcp-option ถูกพุชผ่าน --push ไปยังไคลเอ็นต์ที่ไม่ใช่ windowsตัวเลือกจะถูกบันทึกในสภาพแวดล้อมของไคลเอ็นต์ก่อนที่สคริปต์จะถูกเรียกภายใต้ชื่อ "foreign_option_ {n}"

และภายใต้foreign_option_ {n} :

foreign_option_ {n}

ตัวเลือกที่พุชผ่าน --push ไปยังไคลเอนต์ที่ไม่สนับสนุนเช่น--dhcp-option บนระบบที่ไม่ใช่ Windowsจะถูกบันทึกในลำดับตัวแปรสภาพแวดล้อมนี้ก่อนที่ จะดำเนินการสคริปต์ up -

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

- ขึ้น cmd

รันคำสั่ง cmd หลังจากเปิดอุปกรณ์ TUN / TAP สำเร็จ (เปลี่ยน UID ผู้ใช้ล่วงหน้า)

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

เช่นTunnelblickก็ทำได้โดยใช้สคริปต์นี้

ทางออกก็อาจจะมีสคริปต์ที่ถูกโพสต์ลงในรายการทาง OpenVPN ที่DNS สำหรับลูกค้า OS X - แตกหักคู่มือ


แล้ว iPhone ล่ะ? ฉันไม่คิดว่าจะมีการทุบตีหรือคำสั่งใด ๆ ในการเปลี่ยน DNS โดยอัตโนมัติ
Siyuan Ren

โดยไม่ต้อง @SiyuanRen jailbraking คุณอาจไม่ใช้บรรทัดคำสั่ง OpenVPN ลูกค้าบน iPhone ...
FloHimself

แอป openvpn อย่างเป็นทางการเพียงโหลดไฟล์กำหนดค่าข้อความและเรียกใช้ ไม่มีฟังก์ชั่นเพิ่มเติม
Siyuan Ren

@SiyuanRen แอป openvpn อย่างเป็นทางการไม่ใช่แอปพลิเคชันบรรทัดคำสั่งที่กล่าวถึงที่นี่
FloHimself

รู้สึกเหมือนแฮ็ค เมื่อฉันเชื่อมต่อกับ PPTP หรือ L2TP มีอินเทอร์เฟซเฉพาะสำหรับการกำหนดค่าเครือข่ายโดยมีเฉพาะ IP และ DNS เท่านั้น OpenVPN ต้องการให้ฉันเปลี่ยนการตั้งค่า DNS ของอินเทอร์เฟซอื่นหรือไม่
Siyuan Ren

4

ฉันมีปัญหาเดียวกันกับทั้ง Linux OS (เซิร์ฟเวอร์และไคลเอนต์) และฉันแก้ไขการติดตั้ง dnsmasq บนเซิร์ฟเวอร์ที่ขาดหายไป

ดังนั้นขั้นตอนของฉัน:

apt-get install dnsmasq

ใน server.conf

push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"

และฉันสามารถเชื่อมต่อและเรียกดูโดเมนผ่าน IP ของเซิร์ฟเวอร์เชื่อมต่อกับ NetWorkManager ด้วย DNS ตั้งค่าเป็นอัตโนมัติ


-1

เพิ่มคำสั่งนี้ไปยังไฟล์ conf ฝั่งไคลเอ็นต์ของคุณ ..

# put actual dns name here
dhcp-option DNS 10.11.12.13 

มันจะทำงานได้อย่างแน่นอน ..

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