ซึ่งเมื่อก่อนที่ Dyndns.org ยังใช้ฟรีได้อยู่นั้นผมไม่เห็นความจำเป็นว่าต้องทำใน CentOS เพราะใน ADSL Router ก็มีให้คอนฟิกอยู่แล้ว แต่พอมาวันนี้บริการของ Dyndns.org มันไม่ฟรีอีกแล้วผมก็เลยมองหาทางอื่น (ที่ฟรี) ก็มาเจอ No-IP.com นี่แหล่ะครับ ใช่เลย ตัว ADSL Router ส่วนมากก็ดั้นนนไม่มี DDNS ของ NO-IP.COM ให้ด้วยสิ จึงต้องทำบนระบบปฏิบัติการแทน อย่างเช่น CentOS นี่ไงครับ
** เทคนิคนี้เอาไปใช้กับ Elastix ได้นะครับเพราะว่า Elastix ใช้ CentOS เป็นระบบปฏิบัติการ **
ทำไมต้องทำบน CentOS แทนที่จะทำบน ADSL Router
เพราะในเมนู DDNS ของ ADSL Router ที่ผมมักจะเจอ รวมทั้ง Router (RV-042) มันไม่มี no-ip.com หน่ะครับ
สมัครแอ๊คเค๊าท์ใน NO-IP.COM และสร้าง Host
เข้าเว็บนี้ครับ http://www.no-ip.com
หนึ่งอีเมล์สร้าง Host ฟรีได้ 3 ชื่อครับ อยากได้หลายๆชื่อก็สมัครหลายๆอีเมล์หรือไม่ก็จ่ายเงินเป็นกำลังใจให้คนพัฒนาเว็บก็ได้ครับ รูปต่อไปนี้คือที่ผมสร้างไว้ใน Account NOIP ของผมครับ ผมสร้างไว้ครบ 3 ชื่อแล้ว
ดาวน์โหลดไฟล์ซอร์สโค๊ดของ NO-IP
- โค้ด: เลือกทั้งหมด
cd /home
wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
tar xzvf noip-duc-linux.tar.gz -C /usr/src
cd /usr/src/noip-2.1.9-1
แก้ไขไฟล์ Makefile
(ไม่ต้องแก้ไขก็ได้นะครับ พอดีผมไม่ชอบให้โปรแกรมติดตั้งที่ไดเร็คตอรี่ /usr/local เลยแก้ไขนิดหน่อยครับ)
- โค้ด: เลือกทั้งหมด
vi Makefile
แก้ไขตามนี้ครับ
- โค้ด: เลือกทั้งหมด
PREFIX=/usr
CONFDIR=/etc
BINDIR=${PREFIX}/bin
ต่อไปก็คอมไพล์
- โค้ด: เลือกทั้งหมด
make
ข้อความที่ปรากฏ มีบรรทัดเดียวอย่างที่เห็นนี่แหล่ะครับ
gcc -Wall -g -Dlinux -DPREFIX=\"/usr\" noip2.c -o noip2
ต่อไปก็ติดตั้งครับ
- โค้ด: เลือกทั้งหมด
make install
ข้อความที่เห็นขณะติดตั้งครับ เราต้องป้อนข้อมูลเข้าโปรแกรมด้วยนะครับ เป็นข้อมูล Username, Password ที่เราใช้ Login เข้าเว็บ NOIP.COM หน่ะครับ
if [ ! -d /usr/bin ]; then mkdir -p /usr/bin;fi
if [ ! -d /etc ]; then mkdir -p /etc;fi
cp noip2 /usr/bin/noip2
/usr/bin/noip2 -C -c /tmp/no-ip2.conf
Auto configuration for Linux client of no-ip.com.
ถ้าในเครื่องมีเน็ตเวอร์คหลายๆอินเตอร์เฟส เช่น eth0, eth1, tun0, ppp0 จะมีตัวเลือกให้เราเลือกว่าจะให้ติดต่อกับ NOIP Server ทางอินเตอร์เฟสไหน ดังตัวอย่างครับ
Multiple network devices have been detected.
Please select the Internet interface from this list.
By typing the number associated with it.
0 eth0
1 tun0
0
ซึ่งตัวอย่างนี้ผมเลือก 0 ครับ (พิมพ์เลข 0) เพราะเครื่องนี้ออกเน็ตทาง eth0
จากนั้นก็กรอกข้อมูลต่อได้เลยครับ
Please enter the login/email string for no-ip.com arxxxxxx@gmail.com <-- ใส่ Username ที่สมัครกับ NO-IP.COM
Please enter the password for user 'arxxxxxx@gmail.com' *********** <-- ใส่ Password ที่ให้ไว้กับ NO-IP.COM
3 hosts are registered to this account. <-- ตรวจพบว่าเราสร้างไว้ 3 ชื่อ (ผม Add Host ไว้แล้วบนเว็บไซต์ของ no-ip.com)
Do you wish to have them all updated?[N] (y/N) n
Do you wish to have host [cplxxxx.no-ip.org] updated?[N] (y/N) y <-- จะอัพเดท Host ไหนก็เลือก Yes (Y) ครับ ซึ่งโปรแกรมติดตั้งก็จะเอา Host นี้ไปใส่ไว้ในไฟล์คอนฟิก
Do you wish to have host [hapxxxx.no-ip.org] updated?[N] (y/N) n
Do you wish to have host [idaxxxx.no-ip.org] updated?[N] (y/N) n
Please enter an update interval:[30] 1 <- อัพเดททุก 1 วัน
Do you wish to run something at successful update?[N] (y/N) n
New configuration file '/tmp/no-ip2.conf' created.
mv /tmp/no-ip2.conf /etc/no-ip2.conf
เป็นอันว่าติดตั้งสำเร็จครับ
ข้อมูลในไฟล์ /etc/no-ip2.conf
เป็นข้อมูล Account ที่ต้องใช้อัพเดทครับ เข้ารหัสไว้
- โค้ด: เลือกทั้งหมด
0.0.0.0QUAL2J\]eZoW109Y3BsdXNkZXYubm8taXAububm8tabWNoaXQlNDBnWFpbC5jb20mcGFzcz1jb21wYXF2MjAwMCZoWbWFpbC5jb20mcGFzcz1jbnb1th0dXNlcm5hbWU21wYXF2MjAwMCXAub3JndXNlcm5hbWU9YXJhbWNoaXQlNDB9YXJh09Y3BsdXNkZXY3Jn
ทดสอบอัพเดทกับ NOIP
- โค้ด: เลือกทั้งหมด
/usr/bin/noip2 -c /etc/no-ip2.conf
รันสคริปต์อัพเดทไอพี
ให้เพิ่มบรรทัดนี้ในไฟล์ crontab ครับ
- โค้ด: เลือกทั้งหมด
crontab -e
เพิ่มบรรทัดนี้ ให้อัพเดทวันละ 2 ครั้งตอนเคารพธงชาติ 08:00 และ 18:00
- โค้ด: เลือกทั้งหมด
00 08 * * * /usr/bin/noip2 -c /etc/no-ip2.conf
00 18 * * * /usr/bin/noip2 -c /etc/no-ip2.conf
คราวนี้ก็สบายแล้วครับ รีโมทได้ตลอดเวลาแล้ว
ดูในเว็บ no-ip.com ครับ
จะเห็นว่าไอพีอัพเดทแล้ว ในรูปนี้คือของจริงๆเลยนะครับ ผมคอนเฟิร์ม
** หมายเหตุครับ **
หากใช้ DNS Server ของไทย ยกตัวอย่างเช่น DNS Server ของ ISP รายต่างๆ ข้อมูล IP ในเว็บ No-IP.COM จะไม่อัพเดทแบบเรียลไทม์นะครับ ลองใช้ DNS Server 8.8.8.8 ของ Google ดูครับ