Macbook DNS Issue with VPN

Worawat (Parn) Sittichokpun
Stories of Sellsuki
2 min readNov 1, 2022

สำหรับการทำงานในสายงาน SRE Macbook ถือเป็นตัวเลือกที่ใครหลายๆคนเลือกที่จะใช้ แต่เหลายๆคน คงเคยปวดหัวกับปัญหา DNS ใน Macbook มาก่อน เพราะการทำงานของ DNS request ใน Macbook นั้นไม่เหมือนกับ Window

เวลาที่ Window ตั้งค่า DNS Server ไว้หลายๆ Target มันจะสามารถส่ง Request ไปที่ทุกๆ DNS Server ได้พร้อมๆกัน แล้ว DNS Server ไหนที่ตอบกลับมาก่อน Window จะเลือกใช้อันนั้น สำหรับ Macbook นั้นการทำงานของระบบ DNS Request นั้นไม่เหมือนกัน

Macbook จะส่ง DNS Request ไปตามลำดับ ของ DNS Server ที่ตั้งค่าไว้ ถ้า DNS Server แรกยังไม่ตอบหรือยังไม่ TImeout Macbook จะไม่ส่ง DNS Request ไปที่ DNS Server ถัดไป

Ref: https://www.reddit.com/r/macsysadmin/comments/e67uc2/how_does_macos_handle_multiple_dns_servers/

และเนื่องจากปัญหาข้างต้นของ Macbook ทำให้เราไม่สามารถเชื่อมต่อ VPN หลายๆ Tunnel พร้อมๆกันและใช้งานได้

และถ้า DNS Server ของ Internal Network ของเราไม่ได้ ตั้งค่า Public DNS Server ไว้ เราจะไม่สามารถเชื่อมต่อไปที่ Internet ได้อย่างมีประสิทธิภาพได้เวลาที่เรากำลังเชื่อมต่อ VPN เพราะ Macbok จะส่ง DNS Request ไปที่ DNS Server อันใดอันหนึ่งก่อน ทำให้ DNS Record ที่อยู่อีก DNS Server จะใช้เวลานานหรืออาจจะไม่ได้เลยเพราะ Macbook จะมัวรอ Respond จาก DNS Server แรกก่อน

วันนี้เราจะมาแชร์วิธีแก้ปัญหาของ Macbook เมื่อเชื่อมต่อ VPN หรือหลาย VPN พร้อมกันแบบง่ายๆ

  • ติดตั้ง dnsmasq ที่เครื่อง
brew install dnsmasq
sudo brew services start dnsmasq
  • ตั้งค่า search domain ที่จำเป็นต้องใช้
  • ในตัวอย่างการตั้งค่าข้างล่างจะเป็นการตั้งค่า domain ที่อยู่ใน DNS Server จาก VPN
  • DNS Record *.example.orgx.domain จะส่ง DNS Request ไปที่ DNS Server x.x.x.x
#/opt/homebrew/etc/dnsmasq.conf -> dnsmasq --test-> sudo brew service restart dnsmasqall-serversno-resolvserver=8.8.8.8 -> Default DNS Server for internetaccessserver=8.8.4.4 -> Default DNS Server for internetaccessserver=/internal/x.x.x.xserver=/internal/y.y.y.yserver=/example.orgx.domain/x.x.x.xserver=/example.org.domainx/y.y.y.yserver=/example.orgy.domain/x.x.x.xserver=/example.org.domainy/y.y.y.y
  • ปิด nameserver ที่ตั้งค่ามาจาก tunnelblick
  • การตั้งค่าข้างล่างจะ Skip DNS Server ที่จะส่งมาจาก VPN
  • ตั้ง DNS Server ที่ Network Setting
  • ตั้งให้ DNS Request บน Macbook ส่งไปที่ dnsmasq ที่เรา ติดตั้งไว้
  • ทีนี้เราก็สามารถเชื่อมต่อ VPN หลายๆท่อได้พร้อมๆกันแล้วครับ

📢 มาร่วมเป็นส่วนหนึ่งในการทำให้วงการ E-Commerce ขับเคลื่อนไปข้างหน้า ส่งประวัติการทำงานพร้อมตำแหน่งงานที่คุณสนใจมาได้เลยที่อีเมล hr@sellsuki.com หรือเข้าชมเว็บไซต์ของเราที่ https://lnkd.in/gUqNHSEW 🐶

--

--