ตั้ง domain ใช้เองกับ dnsmasq

Byphunsanit

ตั้ง domain ใช้เองกับ dnsmasq

ก่อนอื่นการตั้งโดเมนสามารถทำได้ง่าย ๆ ในเครื่องตัวเองให้เป็น client และ server โดยการแก้ไฟล์ hosts ของ OS เช่น
windows: C:\Windows\System32\drivers\etc\hosts
mac และ Linux: /etc/hosts
โดยจะมี text อยู่ประมาณแต่มันก็ไม่สะดวกและไฟล์นี้ไม่ควรให้ใครก็ได้เข้ามาแก้ เพราะว่ามันสามารถชี้ไปเว็บที่ไม่มีอยู่

  1. ติดตั้ง dnsmasq ให้ติดตั้งก่อนโดย คำสั่ง
    brew install dnsmasq
  2. หาตำแหน่งที่ติดตั้ง dnsmasq ก่อนโดยใช้คำสั่ง
    brew info dnsmasq
    จะเห็น message กลับมา เช่น
    dnsmasq: stable 2.90 (bottled)
    Lightweight DNS forwarder and DHCP server
    https://thekelleys.org.uk/dnsmasq/doc.html
    Installed
    /opt/homebrew/Cellar/dnsmasq/2.90 (11 files, 656KB) *
    Poured from bottle using the formulae.brew.sh API on 2024-07-17 at 22:11:11
    From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/d/dnsmasq.rb
    License: GPL-2.0-only or GPL-3.0-only
    ==> Dependencies
    Build: pkg-config ✔
    ==> Caveats
    To start dnsmasq now and restart at startup:
    sudo brew services start dnsmasq
    Or, if you don’t want/need a background service you can just run:
    /opt/homebrew/opt/dnsmasq/sbin/dnsmasq –keep-in-foreground -C /opt/homebrew/etc/dnsmasq.conf -7 /opt/homebrew/etc/dnsmasq.d,*.conf
    ==> Analytics
    install: 2,471 (30 days), 7,703 (90 days), 37,343 (365 days)
    install-on-request: 2,400 (30 days), 7,485 (90 days), 35,956 (365 days)
    build-error: 1 (30 days)
    จะเห็นข้อมูลสำคัญ 3 จุดคือ
    • เวอร์ชั่นที่ติดตั้ง 2.90
    • อยู่ที่ /opt/homebrew/opt/dnsmasq/sbin/dnsmasq
    • ไฟล์ config คือ /opt/homebrew/etc/dnsmasq.conf
  3. Create directory for configuration and set permissions
    sudo mkdir -pv /opt/homebrew/etc/dnsmasq.d
    sudo chown -R $(whoami):admin /opt/homebrew/etc/dnsmasq.d
  4. Create a resolver directory โดยใช้คำสั่ง
    mkdir /etc/resolver
  5. Create the resolver file โดยใช้คำสั่ง
    sudo touch /etc/resolver/internal
  6. Pipe the localhost IP address 127.0.0.1 into the resolver file โดยใช้คำสั่ง
    sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/internal'
    โดยเนื้อหาในไฟล์ /etc/resolver/internal คือ
    nameserver 127.0.0.1
  7. start โดยคำสั่ง
    sudo brew services start dnsmasq
  8. จะเพิ่ม URL เทสของเราได้โดยใช้คำสั่ง
    echo 'address=/{ URL }/127.0.0.1' > $(brew --prefix)/etc/dnsmasq.d/development.conf
    echo 'address=/api.plusmagi.internal/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.d/development.conf
    echo 'address=/backend.plusmagi.internal/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.d/development.conf
    echo 'address=/dev.plusmagi.internal/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.d/development.conf
    echo 'address=/frontend.plusmagi.internal/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.d/development.conf
    echo 'address=/phunsanit.plusmagi.internal/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.d/development.conf
    echo 'address=/pitt.plusmagi.internal/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.d/development.conf
    echo 'address=/plusmagi.internal/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.d/development.conf
    echo 'address=/www.plusmagi.internal/127.0.0.1' >> $(brew --prefix)/etc/dnsmasq.d/development.conf
    
  9. โดยจะเป็นการบันทึกในไฟล์ /opt/homebrew/etc/dnsmasq.d/development.conf ตามตัวอย่าง
    address=/api.plusmagi.internal/127.0.0.1
    address=/backend.plusmagi.internal/127.0.0.1
    address=/dev.plusmagi.internal/127.0.0.1
    address=/frontend.plusmagi.internal/127.0.0.1
    address=/phunsanit.plusmagi.internal/127.0.0.1
    address=/pitt.plusmagi.internal/127.0.0.1
    address=/plusmagi.internal/127.0.0.1
    address=/www.plusmagi.internal/127.0.0.1
    
  10. test โดยใช้คำสั่ง
    sudo brew services stop dnsmasq
    sudo dnsmasq --test
    sudo brew services start dnsmasq
    sudo killall -HUP mDNSResponder
  11. Test DNS resolution
    dig pitt.plusmagi.internal @127.0.0.1
    ping pitt.plusmagi.internal
    scutil --dns

อ่านเพิ่มเติม

About the author

phunsanit administrator