12/28/2563

การใช้ Internet 3BB ADSL เป็น Server โดยใช้ DDNS ของ No-IP

 noip2 DDNS with RaspberryPi

No-IP คืออะไร

No IP ก็คือฟรีบริการที่เกี่ยวกับ Dynamic DNS ครับ ซึ่งคำว่า Dynamic DNS นั้นจะนำมาประยุกต์ใช้กับระบบ Internet ตามบ้านของเราได้ เนื่องจากหมายเลข IP Address ที่เราได้รับมาจากผู้ให้บริการ Internet นั้นเป็นแบบ Dynamic ก็คือ จะเปลี่ยนไปเรื่อยๆ ต่อการ connect เข้าไปใช้บริการอินเตอร์เน็ตแต่ละครั้ง ดังนั้นหากเรามีระบบอะไรก็ตามที่รันอยู่ที่บ้านเราผ่าน Internet เราก็จะต้องจำหมายเลข IP Address นี้แทน ซึ่งจะค่อนข้างลำบากครับ หาเลข IP ถูกเปลี่ยนไปเรื่อยๆ ดังนั้นจึงมีบริการ Dynamic DNS มาช่วยจัดการปัญหาพวกนี้ คือแทนที่เราจะทำเลข IP Address เราก็จำเป็นชื่อ Domain แทน ซึ่ง Domain ที่เราได้จาก No-IP นี้ก็จะไปลิงค์กับหมายเลข IP Address ของระบบที่เราใช้งานอยู่ที่บ้านอัตโนมัติ ซึ่งหากมีการเปลี่ยนแปลง IP Address ระบบของ No-IP ก็จะทำการอัพเดท IP Address เพื่อลิงค์กับระบบโดเมนเนมให้อัตโนมัติครับ ซึ่งมีประโยชน์มากหากเรานำ concept นี้มาใช้กับ Raspberry Pi

 

ดังนั้น ลองเอามาประยุกต์ใช้กับ Raspberry Pi ดู อย่างเช่นว่าเรารันระบบ web server ไว้ที่บ้านและเราต้องการ Remote เข้าไปดูความเรียบร้อยผ่านเว็บ ก็สามารถใช้หลักการนี้ได้เช่นกันครับ

1. วิธีการติดตั้ง No-IP ให้กับ Raspberry Pi

    
            1.1 สมัคร Account no-ip
 
 เข้าไปสมัครได้ที่ http://www.noip.com/ สมัครฟรีครับ
เมือสมัครเสร็จแล้วจะได้ User/Password แล้วให้ทำการเพิ่ม Add A Host ตามรูปข้างล่างครับ เพื่อใช้เป็น ddns ในการติดตั้งต่อไป
 
add hosting with noip
 
1.2 ติดตั้งโปรแกรม noip
 
 หลังจากได้ DDNS (ชื่อเครื่อง) เสร็จแล้ว ตอนนี้ก็ถึงขั้นตอน การติดตั้งโปรแกรม noip ที่ บอร์ด Raspberry pi ของเรา เพื่อเป็นโปรแกรม คอยส่งค่า IP จริงของ ADSL เราที่ใช้งาน ไปบันทึกที่ DDNS (ชื่อเครื่อง) บนเวป noip
 
 อันดับแรก สร้าง folder เพื่อเก็บตัว No-ip ที่เราจะติดตั้งกันก่อนครับ โดยใช้คำสั่ง..
mkdir /home/pi/noip
 หลังจากนั้นเข้าไปใน folder ที่เราได้สร้างไว้
cd /home/pi/noip
 เสร็จแล้วใช้คำสั่งเพื่อดาวน์โหลด No-IP
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
 เสร็จแล้วก็ extract ออกมาเลยครับ
tar -zxvf noip-duc-linux.tar.gz
จากนั้นลองใช้ คำสั่ง ls ดูครับ จะเห็นว่ามี no-ip version ออกมาตามภาพด้านล่าง (ขึ้นอยู่กับ version ที่เราดาวน์โหลดมา) หลังจากนั้นเข้าไปใน folder นั้นเพื่อเตรียม compile
 
install noip
 
ขั้นตอนต่อไปหลังจากเข้า folder (ในที่นี้คือ noip-2.1.9-1) ก็สั่ง compile เลยครับ โดยใช้คำสั่งต่อไปนี้
cd noip-2.1.9-1
sudo make
sudo make install
เสร็จแล้วจะมีหน้าต่างให้เราได้กรอก user กับ password พร้อมระบุ domain ที่เราจะใช้งาน ซึ่งก็ทำตามขั้นตอนได้เลยครับไม่ยาก
 
 
เสร็จแล้วครับ หลังจากนั้นให้รัน noip โดยใช้คำสั่ง
sudo /usr/local/bin/noip2
ทำการแก้ไขสิทธิ์การแก้ไขไฟล์ config ของ noip2 โดยใช้คำสั่ง
sudo chmod 7777 /usr/local/etc/no-ip2.conf
 ต่อไปจะทำการเขียน Script เพื่อใช้รันโปรแกรมเมื่อเวลา รันเครื่องใหม่อีกเครั้ง
sudo nano /etc/init.d/noip
 คัดลอกข้อความข้างล่าง เพื่อนำไปใช้ในการเขียน Script noip
 

#######################################################
#! /bin/sh
case "$1" in
start)
echo "Starting noip2"
/usr/local/bin/noip2
;;
stop)
echo -n "Shutting down noip2"
for i in `noip2 -S 2>&1 | grep Process | awk '{print $2}' | tr -d ','`
do
noip2 -K $i
done
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
#######################################################
 
หลังจากที่เขียนไฟล์เสร็จแล้วให้ออกและบันทึก โดยใช้คำสั่ง ctrl-x to เพื่อออก และกด y เพื่อบันทึก
 
ทำการเปลี่ยนสิทธิ์ให้สามารถรันไฟล์ได้
sudo chmod 7777 /etc/init.d/noip
เสร็จแล้ว ลองทดสอบ Script ได้โดยใช้คำสั่ง
sudo /etc/init.d/noip stop
sudo /etc/init.d/noip start
 ตอนนี้ เราจะมาทำการเพิ่มให้รัน Script เมื่อตอน Start เครื่อง โดยเข้าไปเพิ่มคำสั่งลงในไฟล์ rc.local
sudo nano /etc/rc.local
 ในบรรทัดข้างบน "exit 0" ให้เพิ่มบรรทัดคำสั่งนี้เข้าไป
/etc/init.d/noip start
 
ทดสอบได้โดยการ restart เครื่องด้วยคำสั่งด้างล่าง และตรวจสอบว่ามี Service noip2 รันอยู่หรือไม่
sudo init 6
 สามารถดู Config ของ noip2 ได้จากคำสั่ง
sudo /usr/local/bin/noip2 -S
 
 
ตั้ง update ip ได้ทุกๆ 1 นาทีโดยใช้คำสั่ง
sudo /usr/local/bin/noip2 -U 1
 ดู help ได้จากคำสั่ง
sudo /usr/local/bin/noip2 -h
 
 
 
 
3bb true tot adsl
เริ่มต้นหลังจากติดตั้ง noip2 เสร็จแล้ว อย่างแรก ต้องเข้าใจก่อนนะครับว่า IP จริงที่เราจับคู่กับ DDNS ของ noip2 นั้นเป็น IP จริงที่ ADSL Router ใช้ในการวิ่งออก internet เพราะฉะนั้นเมื่อเราใช้ DDNS ของ noip2 จะเป็นการเข้ามาที่ ADSL Router ถ้าเราอยากให้เข้ามาที่ บอร์ด raspberry pi เรา เราต้องทำการ Forwarding Port ก่อนครับ อย่างที่สอง โดยทั่วไป ADSL จะไม่เปิด Port web,sshd (80,22) ขาเข้าไว้นะครับ ต้องโทรไปขอเปิดที่ผู้ให้บริการก่อน ว่าต้องการเปิด Port 80 และ Port 22 ขาเข้า ก่อนถึงจะใช้ได้ หรือไม่ก็เปลี่ยนไปใช้งาน Port อื่นครับ โดยในที่นี้จะแสดงตัวอย่างของการ Forwarding Port ของ 3BB ADSL Router นะครับ
 
ก่อนที่เราจะทำการ Forwarding Port ไปเราควรที่จะ Fixed IP ภายในของบอร์ด RaspberryPi ก่อนนะครับ โดยสามารถดูได้จากบทความ ตั้งค่า IP Address แบบคงที่ บน RaspberryPi
 

2. การตั้งค่า ADSL Router เพื่อ Forwarding Port และใช้กับ noip2

   
 2.1 การเข้าไป config ADSL Router
 
จริงๆการเข้าไป config จะมีหลายวิธีนะครับ แต่ในที่นี้จะเข้าไป config ผ่านเวปนะครับ โดยทั่วๆไป สามารถเข้าได้โดย http://192.168.1.1
 โดยทั่วไปของ 3bb User: admin  Password: 3bb
 
ADSL Router Login
 
 2.2 การตั่งค่า Forwarding Port ใน Visual Server
 
 
โดยทั่วไป Router แต่ละคนจะไม่เหมือนกันนะครับ แต่ดูไว้เป็นตัวอย่างนะครับ คิดว่าคงไปหาวิธีได้ไม่ยาก
 
3bb ADSL Config Port Forwarding for RaspberryPi
 
ในที่นี้ผมใช้ IP 192.168.1.99 เป็น IP ของบอร์ด Raspberry pi นะครับ เท่านี้ เมื่อเราอยู่ข้างนอก เราก็จะสามารถเข้าผ่าน DDNS ของ Noip2 เข้ามาทำงานได้ครับ โดยขึ้นอยู่กับการตั้ง Forwarding Port ของเราบน Virtual Server ครับ ^ ^

 

3. ตรวจสอบการ get Public IP ของ No-IP,3BB

           ในที่นี้ Public IP ที่ควรได้จะเป็น 171.7.0.141
    
noip getpublic ip

                   ใน raspberrypi กับเวป no-ip ก็ควรจะได้ ip เดียวกับที่ดูใน Router นะครับ

 noip getpublic ip rpinoip getpublic ip rpi 2

            หรือเข้าไปเช็คได้จากเวป http://www.portchecktool.com/ 

                 แต่ถ้าได้ Public IP ไม่เหมือนกับที่ดูใน Wan ของ Router อาจจะเกิดจาก ISP ได้ทำการ NAT Public IP เอาไว้ครับ ในกรณีนี้ ISP คือ 3BB เราก็โทรไปแจ้งให้เขาปลดให้ครับ แจ้งเขาไปว่าเราจะทำ DDNS สำหรับกล้องวงจรปิดหรืออะไรก็ได้ครับ แต่ Get Public IP ได้มาไม่ตรงครับ เดี๋ยวทางผู้ให้บริการเขาก็จะปลดออกให้ครับ

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

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