วิธี Forward Port ร่วมกับ dynamic dns (No-ip) เพื่อให้เครื่องคอมพิวเตอร์ที่บ้าน เป็น server

บทความนี้จะมาแนะนำวิธีการ Forward port เพื่อให้สามารถเข้าถึง Network ข้างในบ้าน ร่วมกับ dynamic dns อย่าง No-ip กัน
โดยทั่วไปแล้ว ถ้ามีหากมี request จากข้างนอกเข้ามา จะโดน router กันไว้ก่อน จะไม่สามารถทะลวงเข้าหา local ip เครืองหลัง router ได้ (เหมือนมี Firewall กันไว้อยู่นั้นเอง)
ทำให้เครือง หรือ service ต่างๆ ที่อยู่หลัง router มีความปลอดภัยจากการบุกรุกจากข้างนอกนั้นเอง ดังนั้นถ้าอยากทำให้ local ip ข้างใน หรือ หลัง router เปิดให้บริการ service ต่างๆ
หรือทำเป็น server เพื่อให้คนข้างนอกเข้าถึงและใช้บริการได้ ก็จำเป็นที่จะต้อง forward port หรือทำ NAT นั้นเอง

Q : ถ้าถามว่า ทำไมถึงต้องมา forward port ละ ?
A : ก็เพราะว่าปรกติแล้ว internet ที่ใช้ตามบ้าน (Home use internet) “ส่วนใหญ่” จะเป็น Dynamic IP
นั้นก็หมายความว่า หมายเลข wan ip ของ router ที่ทาง ISP (ผู้ให้บริการ internet) แจกมานั้น จะไม่ได้ Fix นั้นเอง ซึ่งมัน “อาจจะ” เปลี่ยนแปลงไปเรื่อยๆ ทุกๆ ครั้งที่มีการ connect ใหม่ หรือแม้กระทั้ง เปลี่ยนทุกครั้งที่มีการ restart router ก็จะได้ ip ใหม่นั้นเอง

ดังนั้นถ้าหากเราเข้าผ่าน ip เดิมจากข้างนอก ก็จะกลับเข้ามาเข้าอีกไม่ได้นั้นเอง เพราะ wan ip เปลี่ยนไปแล้ว แต่ถ้าอยากได้แบบ Fixed IP ก็สามารถติดต่อโดยตรงกับ ISP ได้เหมือนกัน เหมือนจะมีค่าใช้จ่ายเพิ่มเติมนั้นเอง

การ Forward port นั้น ก็เปรียบเสมือนการกำหนดเส้นทางของข้อมูล ที่ติดต่อเข้ามาจากข้างนอก เพื่อเข้าถึง local ip ผ่าน service ต่างๆ หลัง router
โดยจะมีการพิจารณาจากหมายเลข port เป็นหลัก โดย router จะเป็นตัวกำหนดว่า จะให้ mapping port ดังกล่าวไปยัง port ของ service ไหน และ map กับ local ip ไร
นั้นก็หมายความว่า port ที่เปิดนั้น ก็จะเป็นพวก service หรือ application ต่างๆ โดยเราจะต้องเปิด service เหล่านั้นไว้ด้วย
เพื่อที่จะให้ TCP/UDP request จากข้างนอก สามารถเข้าถึง local ip ข้างใน ผ่านทาง port ที่เรากำหนดนั้นเอง

ยกตัวอย่างเช่น. ถ้าต้องการเปิดบริการ web server เพื่อให้คนข้างนอกเข้าถึง เราก็จะต้องมีเครือง computer เปิดให้บริการ web server port 80 นั้นเอง (จริงๆ port ไรก็ได้)
ในการ mapping นั้น เราจะต้อง map port ไปหา local ip ของเครือง computer ข้างใน ที่เปิดบริการ service ไว้แล้ว โดยแล้วระบุ port : 80 เป็นต้น

อย่าลืมว่า router บางรุ่นนั้น จะมี limit อยู่ว่า สามารถ forward port ไม่เกินจากที่กำหนด อย่างของผม TP-Link TD-W8968 ก็สามารถ forward สูงสุดได้แค่ 15 port
ในกรณี ถ้าขี้เกียจมานั้นใส่ที่ละ port หรือต้องการ forward port ได้เยอะๆ ก็สามารถเลือกแบบ DMZ ได้เลย โดยการใช้ DMZ นั้น router บางยี่ห้อ จะไม่สามารถใช้ร่วมกับ NAT/Forward port ได้  จะต้องเลือกอย่างได อย่างหนึ่ง

DMZ (Demilitarized Zone) ก็เปรียบเสมือนเอาเครืองไปตั้งไว้ หน้า router โดยไม่มีการ firewall กั้น ในการกำหนด dmz นั้น สามารถระบุ local ip ได้เลย โดยไม่จำเป็นต้องใส่ port  ดังนั้น request ที่วิ่งเข้ามาจากข้างนอก ก็จะสามารถเข้าถึง local ip ข้างในแบบเต็มๆ ส่วนใหญ่ local ip zone นี้จะนิยมทำเป็น server กัน   แต่ของเสียอีกอย่างคือ ส่วนใหญ่ router (Home use) แทบจะทุกรุ่นจะใส่ DMZ ได้แค่ ip เดียว (ผมยังไม่เคยเห็นรุ่นไหน ใส่มากกว่า 1 local ip)

สรุป : ถ้าต้องการเปิดหลายๆ port เพื่อให้ข้องนอกเข้าถึงแบบเต็มที่ ก็เลือก DMZ (แต่จะได้แค่ local ip เดียว)
แต่ถ้าอยากเปิดเป็นบาง port หรือ บาง service และมี service คนละ local ip ก็ให้เลือกแบบ Forward เป็น port ๆ ไป

ด้วยเหตุนี้เอง เราถึงต้องมีตัวทำการชี้ dns ไปหา IP ของ router  ในที่นี้จะขอแนะนำ No-ip ซึ่งมันก็เป็น Free Dynamic DNS ที่ยอดฮิตมากๆ ในขณะ นี้
ก่อนที่จะทำการตั้งค่า Forward port หรือ NAT บน Router เราจะต้องทำการลงทะเบียน No-ip ก่อน

โดยเข้าไปที่ https://www.noip.com/sign-up    ทำการสมัครสมาชิก ให้เรียบร้อย
ในที่นี้ ถ้าต้องการฟรี ให้เลือกภายใต้ Free นะครับ  อย่างตัวอย่าง ผมขอเลือก .ddns.net ละกัน (มันมีให้เลือก เยอะอยู่นะ)
ถ้าใช้ Hostnames ภายใต้ของฟรีนั้น จะมีข้อจำกัดอยู่เหมือนกัน  เช่น สามารถใช้ได้แค่ 3 HostNames  (ก็มันของฟรีนิ อิ อิ)  จริงๆ แค่นี้ก็เพียงพอละครับ

ข้อดี
–  ทำให้สามารถเข้าถึงอุปกณ์ Network ได้ เช่น  PC/Notebook, กล้อง IP Cam, Printer หรือแม้กระทั้งยังสามารถเข้าถึง Application ต่างๆ เช่น Web Server, Database Server, uTorrent , Bitcomet , Transmission bit .. ฯลฯ   เพื่อสะดวกในการควบคุมระยะไกลจากข้างนอก เป็นตัน

ข้อเสีย
–  เมื่อสามารถเข้าถึงจากข้างนอกได้ อาจจะมีผู้ไม่หวังดีทำการ Hack เข้าผ่านทาง Service ที่เปิดไว้ได้ เช่น โดยการ Brute-force, หรือ Hack เข้าผ่านทาง web application ดังนั้นเราจะต้องเปิด service ที่จำเป็น เพราะตั้งค่าความปลอดภัยเข้าไปด้วย ..   เดียวบทความหน้าจะมาพูดถึงตรงนี้อีกที

คำเตือน : การ Forward port เพื่อให้ข้างนอกสามารถเข้าถึง Service ต่างๆ นั้น จะมีทั้งผลดี และผลเสียนะครับ  ถ้าใครใช้อยู่อย่าลืมนึกถึงตรงนีด้วย

ในการลงทะเบียนครั้งแรก มันจะให้เราทำการสร้าง Hostnames ขึ้นมา  ในที่นี้ เราตั้งอะไรก็ได้ ให้ดูเทห์ๆ เข้าไว้ (ถ้ามีคนสร้างแล้ว ก็ให้สร้างชื่ออื่น)
หรือถ้าไม่อยากสรา้งตอนนี้ ก็ติ๊กช่อง Create my hosname later
เมื่อทำการกรอกข้อมูลเรียบร้อยแล้ว ก็กด Submit (Fee sign Up) ได้เลย (ถ้าผ่านตรงนี้ ก็ให้รอ active ผ่าน email อีกที)

เมื่อทำการลงทะเบียน เสร็จ มันจะ link เพื่อยื่นยันอีกที เข้าอีเมล์ที่สมัคร

ทำการ Login เข้า email เพื่อทำการ Activate ให้เรียบร้อยด้วยนะครับ
ก็แค่ กด Link จาก Email เพื่อทำการยืนยันตัวตนนั้นเอง

เมือเข้ามาถึงหน้านี้แล้ว ผมแนะนำให้ทำการ สร้างกลุ่มด้วย นะครับ  จะได้จัดการง่ายหน่อย 
https://www.noip.com/members/dns/

ในที่นี้จะตั้งชื่อกลุ่มว่าไรก็ได้ แล้วทำการเพิ่ม  Hostnames เข้าไปในกลุ่ม แล้วกด Confirm changes

สำหรับถ้าหากต้องการที่จะสร้าง Hostnames เพิ่มเข้าไปอีก ก็สามารถทำได้เช่นกัน โดยการกดที่ Add A Host

จากนั้น ให้เราทำการตั้งค่าในส่วนของ Update host
โดยในที่นี้ ผมเลือกเป็น
Host Type : DNS Host (A)
IP Address : อันนี้มันจะ Default IP Getway ของเรา ณ. ตอนนั้น (ไม่ต้องกรอกไร)
Assing to Group : เลือก Group ที่เรา ได้ทำการสร้างไว้ตั้งแต่ข้างบน

หลังจากที่เราได้ทำการ Register เสร็จ ก็สามารถนำ Credential ไปใส่ที่ Config ของ Dynamic DNS ที่ตัว Router ได้เลย
ถ้า Router รุ่นใหม่ๆ น่าจะรองรับอยู่แล้ว

แล้วถ้า Router ไม่ support  : No-ip ล่ะ  ทำไง ?
ตอบ :  เราสามารถใช้ DUC  (Dynamic Update Client) แทนได้เหมือนกัน โดยจะต้องติดตั้งบนระบบปฏิบัติการ OS
แต่อาจจะต้องเปิดเครืองทั้งไว้ด้วย หรือถ้า Router มัน support อยู่แล้ว ก็ไม่จำเป็นต้องเปิดเครืองทั้งไว้นั้นเอง

ในที่นี้ผมจะใช้ Rasberry Pi ในการติดตั้ง DUC  เพื่อให้ update dynamic dns ของ no-ip  ส่วนการ Forward port ผมจะทำบน Router
ปล. บทความนี้จะเป็นการ Forward port เพื่อให้เข้าถึง Service ของ Raspberry Pi

มาถึงตรงนี้แล้ว เราจะต้อง Download ตัว DUC มาติดตั้งก่อน
DUC   มีทั้ง Windows/Mac/Linux  (ใช้ OS ไหน ก็โหลดมาติดตั้งตามใจชอบ)
https://www.noip.com/download?page=win (สำหรับ Windows)
https://www.noip.com/download?page=linux (สำหรับ Linux)
https://www.noip.com/download?page=mac  (สำหรับ Mac OSX)

อย่างในที่นี้ผมจะแนะนำติดตั้งบน Raspberry Pi ซึ่งเปิดทั้งไว้ทั้งวัน ได้สบายเลย เพราะกินไฟนิดเดียวเอง ไม่จำเป็นต้องเปิด PC/Notebook ทั้งไว้
วิธีการติดตั้งนั้น สามารถทำตามขั้นตอนดังนี้

จากนั้นทำการสร้าง file เพือให้ service no-ip มัน start ทุกครั้งเมือมีการ boot เข้า​ OS หรือ เปิดเครื่อง
โดยให้ทำการสร้างไฟล์ noip ใน /etc/init.d/

sudo vim /etc/init.d/noip

จากนั้นทำการ chmod และสั่งให้ service มันรันทุกครั้งที่มีการ reboot

เพื่อให้ชัวส์ ลองทำการตรวจสอบว่า status มัน run อยู่หรือป่าวโดยใช้คำสั่งนี้

กรณีต้องการที่จะถอนการติดตั้ง

จากนั้นให้ Login เข้า Router แล้วมองหาหัวข้อ Forward port บางรุ่นก็อาจจะเป็น Virsual Network หรือ NAT ก็ได้
แล้วทำการ Map IP ของเครื่อง Local และ Port ที่ต้องการเข้าถึงจากข้างนอกได้เลย
ตัวอย่างจากรูป ผมจะ forward port ให้วิ่งหาเครือง local ด้วย port 443 (HTTPS/SSL)
เวลาเข้าจากข้างนอก ก็สามารถใช้  mydomain.ddns.net:443  เป็นต้น

แถมๆ
สำหรับการ Forward port หรือ NAT นั้น บาง ISP (บางเจ้า) เค้าก็จะทำการ Blocked บาง port ไว้นะครับ
ถ้า forward ไม่ผ่าน ก็แสดงว่า อาจจะโดนผู้ให้บริการปิด port ดังกล่าวไว้ (เค้าปิดไว้ ก็เพราะเพื่อความปลอดภัยจากการโจมตีข้างนอกนั้นเอง)
อย่าง case ของผม ใช้ 3BB ที่ผมเคยเจอมา คือ ISP เค้าปิด port 80 และ 22, 23 ไว้ (ตอนแรก ผมก็งม ตั้งนาน ทำไง ก็เข้าข้างนอกไมได้)
สุดท้าย เลยตัดสินใจ โทรถาม call center ให้ตรวจสอบให้ ปรากฏว่า โดน ISP blocked ไว้จริงๆ นั้นเอง ^ ^”
จริงๆ เราสามารถแจ้งให้เค้าเปิดให้ได้ครับ ก็อ้างเหตุผลว่า เราต้องการเปิด server ที่บ้าน หรือต้องการติดต่อ service กับ local ip ข้างในก็ได้ 😉

อีกอย่าง ถ้าเปิดแล้ว แนะนำเปลี่ยน default password ของ router ด้วยนะ เพราะทุกคนสามารถเข้าถึง router ของเราจากข้างนอกได้
ระวังเดียวมีคนแอบ brutefore password router เราก็เป็นได้ อิอิ

ขอให้สนุกกับการทำ server ไว้ใช้ที่บ้านนะครับ

Facebook Comments
Share Button

Watchara Pongsri

Senior Software Developer, Network Engineer CEH, CHFI, ECSA, MCSA My hobby is - Blogger - Programming & Security Researcher

More Posts - Website

Follow Me:
TwitterFacebookLinkedInGoogle Plus

Related Post

วิธี Upgrade PHP บน MacOS Sierra ไปเป็น PHP versio...
views 1,581
บทความนี้จะมาแนะนำวิธีการ ติดตั้ง  PHP บน MacOS Sierra 10.12.1 ให้เป็น vesion ล่าสุด (ซึ่งตอนนี้ version ล่าสุดก็คือ PHP 7.1.X)  แต่หลังจากที่หลายๆ ท่...
มารู้จักวิธีการ Sync settings profile และ extensio...
views 2,531
หลายคนคงรู้จัก IDE ที่ชื่อ Visual studio code ของ Microsoft กันอยู่แล้ว  ชึ่งแน่นอนว่ามันเป็นที่ชื่นชอบคง developer หลายๆ คน รวมถึงผมด้วย  นอกจากมันจะ...
วิธีทำ Auto Mount Partition บน Linux หรือ Raspberr...
views 2,167
บทความนี้จะมาพูดถึงวิธีทำ auto mount สำหรับ Hard disk หรือ USB Drive บน Raspberry Pi หรือใช้กะ Linux ก็ได้เหมือนกัน โดยปรกติแล้วบน Raspberry เวลาเสีย...
วิธีปรับแต่ง Terminal/Vim บน MacOS Sierra เพื่อให้...
views 1,573
หลังจากที่มาใช้ MacOS Sierra เหมือนผมจะมีปัญหากับปุ่ม Home/End สะเหลือเกิน  เนื่องจากบน Macbook มันจะไม่มีปุ่มดังกล่าวมาให้   ถ้าบน application อื่น เ...
มารู้จัก Sublist3r – Enumeration Tool เครื่อ...
views 1,481
Sublist3r เป็นเครืองมือในการค้นหารายละเอียดของ subdomains ที่เกี่ยวข้อง ภายใต้ เว็บไซต์เป้าหมาย  โดยการเก็บรายละเอียดนั้นจะอาศัย search engines อย่าง ...
วิธีเปิดใช้งาน Nginx ให้รองรับ HTTP/2 บน CentOS 7...
views 3,244
HTTP/2 หรือ (เดิมเรียกว่า HTTP/2.0) เป็นมาตรฐานใหม่ของ web protocol ซึ่งจะมาแทนที่ HTTP/1.1 ซึ่งออกมาตั้งแต่ 1997 (RFC 2068) และใช้อยู่จนถึงปัจจุบัน  ...
วิธีเปิดใช้งาน PHP 7 บน Vesta CP เพื่อใช้งานร่วมก...
views 4,714
ทุกวันนี้จะเห็นว่ามีคนหันมาใช้ VPS (Virtual Private Server) กันเยอะขึ้น  และคงจะรู้จักตัวจัดการ Hosting อย่าง Vesta CP กันมาบ้างแล้ว  ซึ่งเจ้า Vesta C...
วิธีเปิดใช้งาน mod_deflate (Compress ) บน Apache เ...
views 2,360
mod_deflate เป็น Module ของ web server ที่ใช้ในการบีบอัดขข้อมูล (Compress ) ให้มีขนาดเล็กลง ก่อนที่จะส่งไปให้ Client หลังจากฝั่ง Client (Browser) ได้ร...
วิธีปิดการให้บริการ SSLv3 บน Apache เพื่อป้องกันกา...
views 2,049
ที่ผ่านมาเราจะเคยได้ยินข่าว เกียวกับช่องโหว่ของ SSLv3 ซึ่งเป็น Protocol ที่ออกมาตั้งแต่ปี 1996 (เก่ามากๆ)  และเป็นช่องโหว่ที่ถือว่าร้ายแรงเหมือนกัน มี...
วิธีติดตั้ง Let’s encrypt SSL (Free SSL) บน CentOS...
views 5,937
SSL (Secure Sockets Layer) เป็นเครื่องหมายรับรองความปลอดภัยทางอิเล็กทรอนิกส์ ที่จะบอกว่าเว็บนั้นมีความปลอดภัยและน่าเชื่อถือ จะเห็นได้ว่าทุกวันนี้ หลาย...
มาเริ่มต้นเรียนรู้วิธีใช้งาน Raspberry Pi แบบ Step...
views 21,136
Raspberry Pi เป็น Single Bord หรือจะว่ามันเป็น Embedded pc ก็ได้  ในตอนนี้ ถือว่ามันเป็นบอร์ดที่ยอดฮิต ณ. ปัจจุบัน เนื่องจากมีขนาดเล็ก (เล็กเท่ากับ AT...
วิธีการ Debug : MySQL Query Profiling บน Linux...
views 2,422
วันนี้จะมาแนะนำวิธีการ Debug Query บน MySQL  หรือเรียกอีกอย่าง คือ Profiler นั่นเอง  ซึ่งการทำ Profiler นั้น มันมีประโยชน์อย่างมากเลยในการวิเคราะห็ Pr...
แก้ปัญหาเวลาเปิด Visual Studio แล้ว Error “A...
views 3,679
บทความนี้จะแนะนำวิธีแก้ปัญหาเวลาเปิด Project visual studio แล้ว Error ข้อความข้างบน ซึ่ง Error เกิดจากเครืองเรายังไม่ได้ทำการ register .NET Framew...
วิธีติดตั้ง PHP เพื่อใช้งานกับ IIS ผ่าน (FastCGI) ...
views 13,629
ภาษา PHP เป็นภาษาที่นิยมกันอย่างแพร่หลายในปัจจุบัน เนืองจากเป็น Open source (ฟรี), เขียนง่าย แล้วยังสามารถรันได้แทบทุกระบบปฏิบัติการ (Cross platform) ...
ถึงเวลาที่จะต้อง Upgrade PHP 5.X มาเป็น PHP 7 บน C...
views 4,184
บทความนี้จะขอกล่าวถึงขั้นตอนในการ upgrade PHP version เก่า ให้เป็น PHP v7 ซึ่งเป็น version ใหม่ ของปี 2015 ซึ่งเป็นของใหม่ อยู่ ณ. ตอนนี้ และตอนนี้ Se...
เปลี่ยนจาก Shared Hosting มาเป็น VPS – Digit...
views 3,628
ช่วงนี้มีเวลาว่างเหลือนิดหน่อย เลยจะกลับมาเขียนบทความอีกครั้ง หลังจากช่วงหลังๆที่ผ่านมา งานประจำก็ยุ่งๆ เหลือเกิน + ความขี้เกีขจของผมเอง ^ ^" เลยไม่ค่...