ติดตั้ง DNS แบบง่าย

เอามาจาก ThaiLinuxCafe - debian : ติดตั้ง dns อย่างง่าย

เรื่องของ DNS (Domain Name Server) เป็นเรื่องหลักของการใช้งานอินเทอร์เน็ต เนื้อหาซับซ้อนและทำความเข้าใจยาก สำหรับในที่นี้ เราเอาแค่ติดตั้งพอใช้งานได้ โดยเราจะติดตั้งเครื่องเซิร์ฟเวอร์เพื่อทำหน้าที่เป็น DNS สำหรับใช้งานเครือข่ายภายใน

โครงร่างคือ

  • เน็ตเวิร์กเราเป็น 192.168.1.0/24 มีโดเมนเป็น example.com
  • เครื่องที่ทำหน้าที่ name server มีชื่อว่า server1.example.com ไอพีเป็น 192.168.1.1 โดยมีชื่อเสมือนคือ ns1.example.com
  • มีเครื่องในวงเครื่องอื่น ๆ ดังนี้
    • ns2 = 192.168.1.2
    • client1 = 192.168.1.101
    • client2 = 192.168.1.102
    • client3 = 192.168.1.103

แพกเกจที่ทำหน้าที่ DNS ในเดเบียนชื่อ bind9 และแพกเกจที่เป็นโปรแกรมช่วยชื่อ dnsutils

งานปรับตั้งคือการสร้างไฟล์สำหรับให้ bind9 เรียกใช้ ดังนี้

  • โซนไฟล์ ไว้สำหรับค้นข้อมูลจากชื่อเป็นไอพี
  • รีเวิร์สไฟล์ ไว้สำหรับค้นข้อมูลย้อนกลับ คือจากไอพีเป็นชื่อ
  • คอนฟิกไฟล์ สำหรับบอก bind9 ว่าเราจะติดตั้ง DNS ในแบบไหน และประกอบด้วยไฟล์ข้อมูลอะไรบ้าง

เริ่มด้วย

ติดตั้ง DNS และโปรแกรมช่วย

# aptitude install bind9 dnsutils

ไปที่ไดเรกทอรีของการปรับตั้ง

# cd /etc/bind

เริ่มสร้างโซนไฟล์ ให้ชื่อว่า example.com.zone มีเนื้อไฟล์ดังนี้

# vi example.com.zone
$TTL    86400
@          IN      SOA    server1.example.com.    root.server1.example.com. (
                          51              ; serial (d. adams)
                          3H              ; refresh after 3 hours
                          15M             ; retry after 15 minutes
                          1W              ; expire after 7 days
                          1D )            ; minimum TTL (Time To Live) of 1 days
@          IN      NS      ns1.example.com.    ; primary NS
@          IN      NS      ns2.example.com.    ; secondary NS

ns1        IN      CNAME  server1

; append or edit host ip here
server1  IN      A      192.168.1.1
ns2      IN      A      192.168.1.2
client1  IN      A      192.168.1.101
client2  IN      A      192.168.1.102
client3  IN      A      192.168.1.103

สร้างรีเวิร์สไฟล์ ให้ชื่อว่า example.com.reverse มีเนื้อไฟล์ดังนี้

# vi example.com.reverse
$TTL    86400
@          IN      SOA    server1.example.com.    root.server1.example.com. (
                          51              ; serial (d. adams)
                          3H              ; refresh after 3 hours
                          15M             ; retry after 15 minutes
                          1W              ; expire after 7 days
                          1D )            ; minimum TTL (Time To Live) of 1 days
@          IN      NS      ns1.example.com.    ; primary NS
@          IN      NS      ns2.example.com.    ; secondary NS

; append or edit host name here
1        IN      PTR    server1.example.com.
2        IN      PTR    ns2.example.com.
101      IN      PTR    client1.example.com.
102      IN      PTR    client2.example.com.
103      IN      PTR    client3.example.com.

สร้างคอนฟิกไฟล์สำหรับโซน example.com ให้ชื่อว่า example.com.conf มีเนื้อไฟล์ดังนี้

# vi example.com.conf
zone "example.com" IN {
        type master;
        file "/etc/bind/example.com.zone";
        allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "/etc/bind/example.com.reverse";
        allow-update { none; };
};

เปลี่ยนสิทธิ์ให้ bind เป็นเจ้าของไฟล์

# chown bind:bind example.com.*

บอกให้ bind9 เอาไฟล์ของเราไปใช้งาน โดยการเพิ่มลงในไฟล์ named.conf.local ดังนี้

# vi named.conf.local
...
include "/etc/bind/example.com.conf";

เสร็จแล้วก็สั่งเริ่ม bind9 ใหม่

# /etc/init.d/bind9 restart

ถ้ามีข้อผิดพลาด ให้ดูที่ /var/log/syslog

ทดสอบโดย

# nslookup server1.example.com
Server:         192.168.1.1
Address:        192.168.1.1#53

Name:   server1.example.com
Address: 192.168.1.1

ทดสอบย้อนกลับ

# nslookup 192.168.1.1
Server:         192.168.1.1
Address:        192.168.1.1#53

1.1.168.192.in-addr.arpa        name = server1.example.com.

หมายเหตุ

  • เลขซีเรียลตามตัวอย่างเป็น 51 แต่ส่วนใหญ่นิยมใช้วันที่ เช่น 2006030401 เป็นต้น
  • ในเนื้อไฟล์ของโซนไฟล์และริเวิร์สไฟล์ เวลาพิมพ์ระวังอยาลืมเครื่องหมายจุด ท้ายชื่อโฮสต์
  • สำหรับเครื่อง DNS ที่ทำหน้าที่เกตเวย์ออกอินเทอร์เน็ต พบว่าเมื่อแก้ไขไฟล์ /etc/resolv.conf ให้ชี้ไปที่ DNS ของไอเอสพี เครื่องเราจะทำหน้าที่เป็น slave โดยอัตโนมัติ
  • ถ้าจะเพิ่มโดเมน และเป็นเน็ตเวิร์กคนละวง ก็ใช้วิธีเดียวกันได้ โดยสร้างโซนไฟล์ รีเวิร์สไฟล์ และคอนฟิกไฟล์สำหรับโดเมนที่เพิ่ม
  • ถ้าเพิ่มโดเมน และเป็นเน็ตเวิร์กวงเดียวกัน เช่น หนึ่งไอพี มีหลายโดเมน ให้สร้างเฉพาะโซนไฟล์ ไม่ต้องสร้างรีเวิร์สไฟล์ ซึ่งก็จะทำให้เรียกดูชื่อย้อนจากไอพีไม่ได้
  • ถ้าจะเพิ่มเน็ตเวิร์กเป็นสองวง โดยเป็นโดเมนเดียวกัน ให้ดูตัวอย่างที่ Debian Administration: Two-in-one DNS server with BIND9

เนื้อหาไม่ค่อยถูกตามหลักการนะครับ เพราะมันยาก ถ้าจะให้รู้เรื่องจริง ๆ ต้องเข้าใจระบบอินเทอร์เน็ตพอสมควร ในที่นี้เอาแค่พอใช้งานได้ครับ

อ้างอิงเพิ่มเติม

Re: ติดตั้ง DNS แบบง่าย

ถ้าผมมี ip จริง ผมสามารถทำให้เครื่องที่ได้ ip จริงตัวนี้เป็น dns สำหรับ domain อื่นได้หรือไม่ครับ

Re: ติดตั้ง DNS แบบง่าย

ได้ครับ

Re: ติดตั้ง DNS แบบง่าย

พอดี config bind9 แล้วมีปัญหาครับ คือผมมี server หนึ่งเครื่อง แล้วผมคอนฟิก หลายๆโดเมน ลงบนเครื่องเดียว สามารถทำได้ไม่มีปัญหามาติดตรงที่ reverse ครับ ผมสามารถสร้า ไฟล์ reverse หลายไฟล์ได้หรือเปล่าครับ พอผม set ให้ใช้ไฟล์ reverse มากกว่าหนึ่งไฟล์แล้วมันขึ้น error ครับ

Re: ติดตั้ง DNS แบบง่าย

คิดว่าทำ reverse ได้แค่โดเมนเดียวครับ คงต้องเลือกเอาว่าจะทำที่โดเมนไหน

Re: ติดตั้ง DNS แบบง่าย

เห็นตรงกันกับคุณ wd เช่นกันครับ
___
Neutron: Linux Addict!

Re: ติดตั้ง DNS แบบง่าย

อือ แล้วอย่างนั้น ผมจะทำเมลล์ server ที่มีหลายโดเมน เมื่อผมทดสอบส่งเมลล์แล้วเข้า เป็น spam mail ทุกที มีวิธีแก้หรือเปล่าครับ ไปหาอ่านจากที่อื่นมา เขาบอกว่ามันเกี่ยวกับ reverse DNS และ SPF record ถ้าทำ reverse DNS ไม่ได้ ก็คงแย่ หรือว่าต้องติดต่อกับเจ้าของเมลล์นั้นๆ โดยตรงครับ

Re: ติดตั้ง DNS แบบง่าย

ผมเดาว่าถ้าเป็นโฮสต์ที่มีไอพีไม่คงที่ เขาจะเหมาว่าเป็น spam ทั้งหมด
กรณีนี้คงไม่มีทางแก้ นอกจากจะอาศัยพึ่งบริการของ gmail

แต่ถ้าเป็นโฮสต์ที่มีไอพีคงที่นี่ ผมยังไม่มีประสบการณ์เหมือนกัน ว่าเขาตัดสินการเป็น spam อย่างไร

Re: ติดตั้ง DNS แบบง่าย

ขอบคุณมากเลยครับ มีอีกหนึ่งคำถามครับ หวังว่าคงยังไม่เบื่อนะครับ มีวิธีตรวสอบหรือเปล่าครับว่า DNS ที่เขา config สามารถใช้งานได้แล้วหรือยัง

Re: ติดตั้ง DNS แบบง่าย

ผมใช้คำสั่ง nslookup มีรูปแบบเป็น

$ nslookup [-option] [name | -] [server]

เช่น

$ nslookup example.com ourdns.example.com

สมมุติว่าเครื่อง name server ของเราชื่อ ourdns.example.com

บางครั้งหากทำหลายวงเป็น internal/external อาจต้องลองจากเครือข่ายข้างนอกครับ

Re: ติดตั้ง DNS แบบง่าย

แล้ว ถ้ามี Mail server ด้วยจะกำหนดยังไงบ้างครับ

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <blockquote> <img> <h3> <h4> <h5>
  • Lines and paragraphs break automatically.
  • E-Mail addresses are hidden with reCAPTCHA Mailhide.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.