2/08/2554

ผมจะต้อง set DNS อย่างไงดีครับ

รายละเอียด
1.เครื่องแม่ข่ายลง ubuntu 8.04 โดยมีไอพี 2 ชุด
คือชุดที่ 1
ip=192.168.1.2
gateway=192.168.1.1
dns=192.168.1.1
netmark = 255.255.255.0
โดยได้รับ DHCP มาจาก router ADSL

ชุดที่สอง
ip=192.168.100.1
gateway=192.168.100.1
dns=192.168.100.1
netmark = 255.255.255.0
ซึ่ง แจกไอพีชุดนี้ให้ลูกข่าย ซึ่งลูกข่ายสามารถเข้าเน็ตได้ทุกคนโดยทำ chillispot,authen,freeradius,squid,apache,mysql,php,ezradius ตามที่ VDO ของคุณชาลี(ต้องขอบคุณคุณชาลีมากเลยครับที่จัดทำ VDO ชุดนี้) ได้หมดแล้ว


ปัญหาคือ
มี server ภายในที่ทำขึ้นเพื่อเป็น intranet ให้บริการแก่ลูกข่ายข้างใน โดยมีไอพีดังนี้
192.168.100.2  สำหรับ database server
192.168.100.3  สำหรับ web intranet
192.168.100.4  สำหรับ program server

ซึ่งทั้งสามตัวลูกข่ายสามารถเข้าใช้งานได้โดยผ่าน ip address ของแต่ละตัว ถ้าเราจะให้เข้าผ่านชื่อเช่น
database.metro.ac.th คือ 192.168.100.2
intranet.metro.ac.th คือ 192.168.100.3
program.metro.ac.th คือ 192.168.100.4
 เรา ก็ต้องทำ DNS Server ใช่ไหมครับ ผมพยายามศึกษาจากเว็บบอร์ดหลาย ๆ ที่ และจากเอกสารของคุณขวัญชัย ทองคำ(ต้องขอขอบคุณอีกคนที่ทำเอกสารแจกทำให้ผมได้เข้าใจเกี่ยวกับ ubuntu มากมายเลย)
มันก็ยังติดปัญหาว่าลูกข่ายก็ไม่สามารถเข้า server โดยใช้ name server ได้
โดย ผมก็เข้าไป config ตามตัวอย่างหลาย ๆ ที่ ตอนแรกก็รัน service bind9 ผ่านไม่มีปัญหาอะไร แต่ใช้คำสั่ง nslookup เช็คดู เช่น nslookup database.metro.ac.th มันก็แจ้งว่าไม่เจอ  จนปัจจุบันทำไปทำมาตัว service bind9 รันแล้วมันจะขึ้น fail ตลอดขนาด remove bind9 ออกแล้วติดตั้งใหม่ก็ยังไม่ได้
ตอนนี้เลยไม่รู้จะทำอย่างไร ผมไม่อยากลง ubuntu ใหม่เพราะว่าผมเป็นมือใหม่ กว่าจะลง ubuntu และ config ค่าต่าง ๆ ได้เอาซ่ะไม่ได้หลับไม่ได้นอนตั้งหลายอาทิตย์
เลยอยากจะปรึกษาท่านผู้รู้ทั้งหลายว่าผมจะต้อง set DNS อย่างไร หรือแนวทางในการแก้ไขอย่างอื่นไหม
สหรับตัวอย่างไฟล์ config ต่าง ๆ ที่ผมเคยทำมาเป็นดังนี้ครับ

#file named.conf.local
zone "metro.ac.th" {
type master;
file "/etc/bind/metro.ac.th.db";
};


zone "100.168.192.in-addr.arpa" {
type master;
file "/etc/bind/rev.100.168.192";
};


#file named.conf.options
options {
      forwarders {
           192.168.100.1;
           192.168.1.1;
      };
};


#file metro.ac.th.db
$TTL     604800
@      IN     SOA    stdmetro.metro.ac.th. root.metro.ac.th. (
                            2              ; Serial
                  604800              ; Refresh
                    86400              ; Retry
                2419200              ; Expire
                  604800              ; Negative Cache TTL
;
metro.ac.th.  IN  NS   stdmetro.metro.ac.th.

stdmetro       IN A  192.168.100.1
database       IN A  192.168.100.2
intranet         IN A  192.168.100.3
program        IN A  192.168.100.4


#file rev.100.168.192
$TTL     604800
@      IN     SOA    stdmetro.metro.ac.th. root.metro.ac.th. (
                            1              ; Serial
                  604800              ; Refresh
                    86400              ; Retry
                2419200              ; Expire
                  604800              ; Negative Cache TTL
;
                 IN   NS     metro.ac.th.
1               IN   PTR    stdmetro.metro.ac.th.
2               IN   PTR    database.metro.ac.th.
3               IN   PTR    intranet.metro.ac.th.
4               IN   PTR    program.metro.ac.th.


#file zones.rfc1918
zone "100.168.192.in-addr.arpa" { type master; file "/etc/bind/rev.100.168.192"; };


#file resolv.conf
search metro.ac.th
nameserver 192.168.100.1
nameserver 192.168.1.1

===============================================
ไม่เข้าใจว่าทำไมแทบทุกคนใช้ bind9 (เคยแนะนำให้ใช้ dnsmasq ครั้งหนึ่งไป โดนคนใช้ bind ตัดหน้าตอบ)

ใช้ dnsmasq ได้ครับงานแค่นี้ โดยเซตดังนี้

1. ให้เครื่องลูกใช้ dns server เป็นเครื่องที่ติดตั้งไว้
2. แก้ไข /etc/hosts เครื่อง server ตามที่ต้องการ
3. restart dnsmasq

ตัวอย่าง เช่นผมใช้ dnsmasq เป็น dhcp ดังนั้นมันจะแจกจ่ายตัวเองให้อยู่แล้ว ข้อ 1 ไม่ต้องทำ จากนั้นข้อ 2 ให้แก้ไข /etc/hosts ตามต้องการ เช่นผมก็ใส่
192.168.1.5   whsgroup.ath.cx s
เพื่อบังคับ whsgroup.ath.cx และ s ไปที่ 192.168.1.5 สุดท้ายทดสอบที่เครื่องลูก ดูว่าได้รับ dns ถูกต้อง

whs@WHSnotebook ~ % cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.5

แล้วทดสอบว่า ip คืนค่าถูกต้อง
whs@WHSnotebook ~ % nslookup s
Server:      192.168.1.5
Address:   192.168.1.5#53

Name:   s
Address: 192.168.1.5
แสดงว่าการดึงข้อมูล whsgroup.ath.cx ถูกต้อง คือคืนค่า 192.168.1.5 ตามที่ได้กำหนดไว้

==========================================

สอบถามเพิ่มเติมครับหลังจากที่ผมลองติดตั้ง dnsmasq เรียบร้อยแล้ว
และทดสอบโดยใช้คำสั่ง nslookup database.metro.ac.th ปรากฎว่ามัจะมีข้อความขึ้นดังนี้
Server:               192.168.1.1
Address:             192.168.1.1#53

** server can't find database.metro.ac.th: SERVFAIL

ผมเลยเข้าไปเพิ่มข้อมลูใน file hosts ดังนี้

192.168.100.1   stdmetro.metro.ac.th     stdmetro
192.168.100.2   database.metro.ac.th     database
192.168.100.3   intranet.metro.ac.th        intranet
192.168.100.4   program.metro.ac.th      program

และผมก็ลองเข้าไปแก้ไขใน file resolv.conf
ซึ่งมันมีคำว่า
nameserver 192.168.1.1

ผมก็เลยเพิ่มเป็น
nameserver 192.168.100.1
nameserver 192.168.1.1

ผลลัพธ์ก็ได้ดังนี้

Server:               192.168.100.1
Address:             192.168.100.1#53

Name:          database.metro.ac.th
Address:       192.168.100.2

ซึ่งมันน่าจะ work แล้วตามความคิดผม แต่เวลาเราจะเรียกผ่าน browser มันกลับบอกว่าไม่เจอ
เช่น http://database.metro.ac.th เรียกไม่ได้ แต่ถ้าเรียกผ่านไอพี
      http://192.168.100.2 เรียกได้

ผมเลยอยากถามว่าผมต้องปิด service chillispot ก่อนหรือเปล่า เพราะเห็นว่า dnsmasq มันเป็น DHCP ด้วย
แล้วถ้าจะแก้ไข file dnsmasq.conf ผมต้องแก้ไขตรงจุดไหนบ้างเพื่อให้รองรับกับระบบของผม

0 ความคิดเห็น:

แสดงความคิดเห็น