0027 | ปัญหาโลกแตกกับ DNS

ว่าไปก็เห็นจะโลกแตกจริงๆ แฮะ
กับปัญหาล้านแปด แต่ดั๊นมาเซตผิดอยู่ที่เดียวอะไรอย่างนี้
เลยกลายเป็น lookup ไม่ออกมั่ง ออกแต่ ip มั่วมั่ง อะไรพวกนี้บ่อยไปครับ

ก่อนอื่นก็ต้องมาไล่กันที่ระบบ Root DNS ก่อน

Tracing to icez.net[a] via I.ROOT-SERVERS.NET, maximum of 1 retries
I.ROOT-SERVERS.NET (192.36.148.17)
|\___ I.GTLD-SERVERS.net [net] (192.43.172.30)
|     |\___ ns6.thzhost.com [icez.net] (203.146.170.140) Got authoritative answer
|      \___ ns2.thzhost.com [icez.net] (203.146.129.182) Got authoritative answer
…..
|\___ K.GTLD-SERVERS.net [net] (192.52.178.30)
|     |\___ ns6.thzhost.com [icez.net] (203.146.170.140) (cached)
|      \___ ns2.thzhost.com [icez.net] (203.146.129.182) (cached)
\___ J.GTLD-SERVERS.net [net] (192.48.79.30)
|\___ ns6.thzhost.com [icez.net] (203.146.170.140) (cached)
\___ ns2.thzhost.com [icez.net] (203.146.129.182) (cached)

ns2.thzhost.com (203.146.129.182)       icez.net -> 203.146.129.182
ns6.thzhost.com (203.146.170.140)       icez.net -> 203.146.129.182

นี่แหละครับ วิธี lookup ของระบบ DNS
ไอ้เจ้า I.ROOT-SERVERS.NET นี่เป็น server ของ ICANN ครับ
ทำหน้าที่รองรับ DNS request ของระดับ TLD
คือเป็น authoritive zone ของ TLD ทุกอัน
หากเกิด TLD ใหม่ขึ้นมาก็มาถามที่นี่ได้ครับว่ามันชี้ไปที่ไหนต่อ
จริงๆ ROOT SERVERS นี่มีเยอะครับ แต่เผอิญว่า I.ROOT-SERVERS.NET มันอยู่ในไทย (ที่ กสท) ก็เลยใช้ตัวนี้ซะเลย

ลำดับต่อมา พอได้ DNS ของ TLD มาแล้ว ก็ไปถามต่อว่า domain เราอยู่ DNS ไหน
(จริงๆ มันถามแค่ที่เดียวนะครับ นี่พอดีใช้ tool ช่วยนิดหน่อย มันเลยขึ้นมาหมดเลย)
อย่างกรณี .com .net พวกนี้จะมี GTLD-SERVERS.NET ของ verisign เป็นผู้ดูแล
ของไทยก็เป็น THNIC ดูแลอยู่ อะไรประมาณนี้แหละครับ

ทีนี้ เวลาได้ “ชื่อ” ของ nameserver มาแล้วเนี่ย เซิฟเวอร์มันจะบอก “IP” มาให้ด้วยเลย
ตามที่เราได้ลงทะเบียน nameserver ไว้นั่นแหละครับ
นั่นหมายความว่า ไม่ใช่ว่าอยู่ดีๆ เราจะตั้ง nameserver ทั่วไปได้เลย
ยังไงก็ต้องลงทะเบียนกับผู้ให้บริการจดโดเมนก่อน
ถ้าเอา “ชื่อ” ของ nameserver ไป lookup ดูมันก็จะได้อย่างนี้ครับ

Tracing to ns2.thzhost.com[a] via I.ROOT-SERVERS.NET, maximum of 1 retries
I.ROOT-SERVERS.NET (192.36.148.17)
|\___ F.GTLD-SERVERS.NET [com] (192.35.51.30) Got answer
|     |\___ ns6.thzhost.com [thzhost.com] (203.146.170.140) Got authoritative answer
|      \___ ns2.thzhost.com [thzhost.com] (203.146.129.182) Got authoritative answer
|\___ E.GTLD-SERVERS.NET [com] (192.12.94.30) Got answer
|     |\___ ns6.thzhost.com [thzhost.com] (203.146.170.140) (cached)
|      \___ ns2.thzhost.com [thzhost.com] (203.146.129.182) (cached)
……
|\___ I.GTLD-SERVERS.NET [com] (192.43.172.30) Got answer

|     |\___ ns6.thzhost.com [thzhost.com] (203.146.170.140) (cached)
|      \___ ns2.thzhost.com [thzhost.com] (203.146.129.182) (cached)
|\___ H.GTLD-SERVERS.NET [com] (192.54.112.30) Got answer
|     |\___ ns6.thzhost.com [thzhost.com] (203.146.170.140) (cached)
|      \___ ns2.thzhost.com [thzhost.com] (203.146.129.182) (cached)
\___ G.GTLD-SERVERS.NET [com] (192.42.93.30) *

H.GTLD-SERVERS.NET (192.54.112.30)      ns2.thzhost.com -> 203.146.129.182
I.GTLD-SERVERS.NET (192.43.172.30)      ns2.thzhost.com -> 203.146.129.182
K.GTLD-SERVERS.NET (192.52.178.30)      ns2.thzhost.com -> 203.146.129.182
M.GTLD-SERVERS.NET (192.55.83.30)       ns2.thzhost.com -> 203.146.129.182
A.GTLD-SERVERS.NET (192.5.6.30)         ns2.thzhost.com -> 203.146.129.182
D.GTLD-SERVERS.NET (192.31.80.30)       ns2.thzhost.com -> 203.146.129.182
E.GTLD-SERVERS.NET (192.12.94.30)       ns2.thzhost.com -> 203.146.129.182
ns2.thzhost.com (203.146.129.182)       ns2.thzhost.com -> 203.146.129.182
ns6.thzhost.com (203.146.170.140)       ns2.thzhost.com -> 203.146.129.182
F.GTLD-SERVERS.NET (192.35.51.30)       ns2.thzhost.com -> 203.146.129.182

เห็นมั้ยครับว่า พอลงทะเบียน nameserver แล้ว
ไอ้ GTLD SERVERS แทนที่จะตอบว่า domain นี้มี dns อะไร
มันก็เลยตอบพ่วง IP มาให้ด้วยเลย

ตรงจุดนี้คือจุดที่ผิดพลาดกันอันดับแรกๆ เลยครับ
ก็คือ สมมติ domain icez.net ชี้ไปที่ ns2.thzhost.com กับ ns6.thzhost.com
แต่ใน domain thzhost.com ไม่มี record ของ ns2.thzhost.com กับ ns6.thzhost.com
ก็อาจทำให้ไม่สามารถ lookup ได้ เพราะ dns บางตัวจะไม่เอา ip มาจาก gtld-servers คือจะไป lookup หาเองตรงๆ
แล้วมันหา ip ของ nameserver ไม่เจอ หรือ IP ไม่ตรงกันกับที่ลงทะเบียนไว้ ก็เน่าครับ

———————————————

มากันที่จุดที่สอง: ว่าด้วย “NS record”
เหมือนจะง่ายครับ
แค่ชี้ใน domain ให้ตรงกับที่ lookup ขึ้นมาได้
อย่างของ icez.net ก็คือ ns2.thzhost.com กับ ns6.thzhost.com
ก็เข้าไปตั้งค่าใน DNS Server ตามนี้เลยครับ

icez.net. IN NS ns2.thzhost.com.
icez.net. IN NS ns6.thzhost.com.

———————————————

จุดที่สาม: IP ของ nameserver
นอกจากที่เราไปลงทะเบียน nameserver ไว้กับที่จดโดเมนแล้ว
เราก็ต้องมาเซตที่เครื่อง dns server เราด้วยครับ
ns2.thzhost.com กับ ns6.thzhost.com คือ subdomain ของ domain thzhost.com
ก็เข้าไปที่ DNS Server ของ thzhost.com
ไปเพิ่ม record ตามนี้ครับ

ns2 IN A 203.146.129.182
ns6 IN A 203.146.170.140

———————————————

จบ เห้อ ยาวดีจัง ไม่ได้เขียนอะไรยาวๆ แบบนี้มาพักนึงและ
ไม่รู้เรื่องอย่าว่ากันนะครับ (ฮา) เขียนตอนเช้าก็เงี้ย

Tags: ,

0026 | ค้นหา และแก้ไขแฟ้มบน linux แบบโคตรง่าย

เอามาเก็บไว้ เพิ่งแก้เครื่องเสร็จไปเครื่องนึง (มีแววได้ใช้อีกเร็วๆ นี้)

ก่อนอื่นเลย คำสั่งค้นหา (ขอบคุณพี่วุธ ผ่านพี่โดม thaicybergames ด้วยครับ)

find /path/ -type f 2>/dev/null | xargs -i grep -l "search" {}

แล้วก็… คำสั่ง replace

perl -pi -w -e 's/search/replace/g;' filename

ทีนี้ก็… เอามารวมร่างกัน ใช้แค่คำสั่งนี้อันเดียวจบ

find /path/ -type f 2>/dev/null | xargs -i grep -l "search" {} | xargs perl -pi -w -e 's/search/replace/g;'

อ้างอิง: Linux - Search and replace over multiple files

Tags: , ,

0025 | ของเล่นใหม่ WP-Syntax

จริงๆ ก็ไม่ใหม่เท่าไหร่มั้งครับ (ฮา)
ชาวบ้านชาวช่องเค้าคงเล่นกันมาหมดแล้ว แต่ผมเพิ่งเจอ

ที่มา: WP-Syntax | JaideawHosting

ไม่พูดพล่ามมากความ ตามไปอ่านกันเองละกันนะครับ (ฮาๆ)
เอาเป็นว่าขอตามแก้ syntax ด้านล่างใหม่ซักหน่อยท่าจะดีนะเนี่ย อุอุ

ปล. เซ็ง เซิฟเวอร์ดับอนาถไม่รู้เรื่องราว

0024 | ลง MRTG บน CentOS/Fedora แบบง่ายๆ

ขั้นตอนพวกนี้ ก๊อปปี้แล้ววางได้เลยครับ
จดไว้กันลืม 555+
ทำมาด้วยความขี้เกียจของตัวข้าพเจ้าเองแหละ

yum -y install net-snmp mrtg
wget -O /etc/snmp/snmpd.conf www.icez.net/files/snmpd.conf
wget -O /var/www/mrtg/php.load.php www.icez.net/files/php.load.txt
chmod a+x /var/www/mrtg/php.load.php
/etc/init.d/snmpd restart
cfgmaker --global 'WorkDir: /var/www/mrtg' --global 'Options[_]: bits,growright' --output /var/www/mrtg/mrtg.cfg public@localhost
wget -O /tmp/mrtg.cfg www.icez.net/files/mrtg.cfg
cat /tmp/mrtg.cfg >> /var/www/mrtg/mrtg.cfg
/bin/cp -fv /var/www/mrtg/mrtg.cfg /etc/mrtg/mrtg.cfg
echo "Alias /mrtg /var/www/mrtg" > /etc/httpd/conf.d/mrtg.conf
/sbin/chkconfig snmpd on
indexmaker /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
/etc/init.d/httpd graceful

สั้นๆ ง่ายๆ ได้ใจความ

ปล. สำหรับ fedora 9 ไอ้ mrtg ที่แถมมามันรันไม่ขึ้น ไม่รู้เน่าตรงไหน
ก็เลยต้อง compile เพิ่มเองนิดหน่อยครับ
ขั้นตอนตามนี้ (copy แล้ววางอีกแล้วครับทั่น)

cd /usr/local/src
wget http://oss.oetiker.ch/mrtg/pub/mrtg-2.16.2.tar.gz
tar zxf mrtg-2.16.2.tar.gz
cd mrtg-2.16.2
yum -y install libpng-devel gd-devel
./configure --prefix=/usr/local/mrtg && make && make install
echo "*/5 * * * * root LANG=C LC_ALL=C /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok" > /etc/cron.d/mrtg

Tags: ,