สำหรับท่านที่ใช้งาน Synology NAS จากข้างนอกผ่าน QuickConnect จะพบปัญหาว่าความเร็วที่ได้ค่อนข้างต่ำมากแทบใช้งานไม่ได้เลย หลายท่านเลยก็ใช้วิธี Forward Port ผ่าน DDNS ของผู้ให้บริการไม่ว่าจะเป็น thddns.net ของ AIS, 3bbddns.com ของ 3BB หรือ trueddns.com ของทางฝั่ง TrueOnline ที่ส่วนมากจะสุ่ม Port มาให้ใช้งาน 10 Port ด้วยกัน ถามว่าใช้งานได้ไหม ก็พอได้อยู่แต่ว่าในแง่ของความปลอดภัยนั้นคงไม่แนะนำเนื่องจากเราต้องเปิดพอร์ตหลายพอร์ตสำหรับหลายเซอร์วิส เหมือนเปิดประตูบ้านหลายบานการดูแลก็คงไม่ทั่วถึง บางครั้งก็มีอะไรหลุดรอดสายตาเราเข้ามาได้นั่นเอง วันนี้เลยมาแนะนำวิธีการเปิดประตูบานเดียวให้ทุกอย่างผ่านเข้าประตูนี้ พร้อมกับยามเผ้าประตูอีกชั้นหนึ่งด้วย นั่นก็คือการใช้งานผ่านโดเมน (Domain) ของเราเองที่ผูกไว้กับทาง Cloudflare ครับผม
1 เรียกใช้งานผ่านซับโดเมน (Sub Domain) ดียังไง?
- อย่างแรกเลยคือมันดูเท่ห์ครับ ฮ่าๆ อย่างผมมีโดเมน ชื่อ homelab.in.th ถ้าต้องการจะใช้งาน Synology Photos ก็เพียงแค่สร้างซับโดเมนขึ้นมาสมมติว่าชื่อ photo.homelab.in.th แล้วก็เข้าใช้งานผ่าน URL นี้เลย หรือจะเข้าไปใช้ Plex ก็สร้าซับโดเมน ที่ชื่อ plex.homelab.in.th ก็สามารถเข้าไปดูหนังผ่านลิงค์นี้ได้เลยเช่นกัน จะเห็นได้ว่าเราสามารถแยกเซอร์วิสต่างๆ ได้อย่างเป็นระบบ ผ่านซับโดเมนของเราได้นั่นเองครับ
- ข้อดีต่อมาคือ ด้วยวิธีนี้เราจะเปิดพอร์ตที่เราเตอร์แค่พอร์ตเดียวครับ คือพอร์ตของ HTTPS หรือ พอร์ต 443 ไม่ว่าจะมีกี่ซับโดเมนก็ตาม การมอนิเตอร์ก็จะทำได้ง่ายขึ้นอีกทั้งเรายังสามารถทำ SSL Certificate หรือเครื่องหมายกุญแจหน้า URL เพื่อเข้ารหัสการเชื่อมต่อให้ปลอยภัยมากขึ้นได้อีกด้วย
- เมื่อเราใช้งานผ่าน Cloudflare DNS Proxy ตัว Cloudflare จะทำหน้าที่เป็น Proxy Server หรือด่านหน้าให้กับเราก่อนโดยการซ่อน IP จริงของเราไว้ป้องการการถูก DDOS และยังเป็น ไฟร์วอลล์วอร์ด่านหน้าปราการแรกให้กับเราอีกด้วย ยกตัวอย่างเช่นถ้าเราใช้งานอยู่แค่ในประเทศไทย ก็ตั้งค่า ไฟร์วอลล์ของ Cloudflare ให้อนุญาตการเข้าถึงจาก IP แค่ในประเทศไทยเท่านั้น ต่างประเทศบล็อคให้หมด ถือว่าคัดกรองภัยคุกคามออกไปได้เยอะเลยทีเดียว
- สามารถจัดการการเข้าถึงด้วย ไฟร์วอลล์หรือ Access Control Profile ใน Synology NAS ได้เลยผ่านพอร์ต 443
2 แล้วเราต้องมีอะไรบ้าง ถึงจะใช้งานแบบนี้ได้?
- พลังอันยิ่งใหญ่ก็ต้องมากับภาระอันใหญ่ยิ่ง ถ้าคิดจะมาสายนี้แล้วก็ต้องไปให้สุดครับ เนื่องจากเราจะเรียกใช้งานผ่านซับโดเมน ดังนั้นสิ่งที่ขาดไปไม่ได้เลยก็คือโดเมนของเราครับ จะ .con .net .io หรือดอทอะไรก็แล้วแต่ วิธีที่ง่ายและปลอดภัยที่สุดคือจดทะเบียนผ่าน Cloudflare ไปเลย ราคาก็จะอยู่ที่ประมาณ 250-400 บาทต่อปี สำหรับโดเมน ที่เป็น .com .net และแพงขึ้นไปตามความนิยมของชื่อครับ สำหรับใครต้องการสมัครก็สามารถสมัครได้ตามลิงค์นี้เลยครับ www.cloudflare.com/products/registrar/ ก่อนสมัครเค้าจะบังคับให้สร้างบัญชีผู้ใช้ของ Cloudflare ก่อน ก็ทำการสมัครตามขั้นตอนได้เลยครับ
- ส่วนใครที่ไม่อยากเสียเงินจ่ายค่าโดเมนรายปี สามารถสมัครโดเมนฟรีกับทาง DuckDNS ที่เว็บไซต์ www.duckdns.org หรือ Synology เองก็มีบริการโดเมนฟรีเช่นกัน เข้าไปตั้งค่าได้ที่ Control Panel > External Access > DDNS แล้วเลือก Service Provider เป็น Synology ตรงนี้เราต้องสมัคร Synology Account ให้เรียบร้อยก่อนถึงจะใช้บริการนี้ได้
- Public IP หรือ IP จริงตามแล้วแต่เราจะเรียกกันครับ ณ ตอนนี้ถ้าใครใช้เน็ตของ True หรือ 3BB น่าจะยังขอกันได้ฟรีอยู่ครับ แต่ AIS Fibre ต้องจ่ายค่า Public IP เพิ่มอีกเดือนละ 200 บาท วิธีการขอก็คือโทรไปที่คอลเซนเตอร์ของผู้ให้บริการแล้วบอกว่าขอ Public IP หรือ ปลด NAT ครับ
- และสุดท้ายที่ขาดไม่ได้เลยคือ Synology NAS ครับ โดย NAS ที่ผมใช้เป็นรุ่น DS920+ กับ DSM เวอร์ชัน 7.2 ครับ ใครที่ยังไม่อัพเดทก็แนะนำให้อัพเดทให้เรียบร้อยครับ เพื่อปิดช่องโหว่และเพิ่มฟีเจอร์ใหม่ๆ
3 ตั้งค่าการใช้งาน และ Sub Domain ในฝั่ง Cloudflare
- ล็อกอินเข้า dash.cloudflare.com เลือกโดเมนที่เราต้องการใช้งาน ทางแถบซ้ายเลือกไปที่ DNS > Record จากนั้นกด Add record
- ในส่วนของ Type เลือกเป็น “CNAME” หรือจะเลือกเป็น “A” ก็ได้หากต้องการชี่ไปที่ IPv4 address โดยตรง
- ช่อง Name เลือกใช้ชื่อเว็บแอพที่เราจะใช้งาน ตรงนี้คือส่วนของซับโดเมนนั้นเอง ตัวอย่างเลือกเป็น photo จะได้ FQDN หรือลิงค์ที่เข้าใช้งานเป็น “https://photo.homelab.in.th”
- Target คือส่วนของโดเมนที่เราจะชี้ไป ในตัวอย่างชี้ไปที่ domain หลักของเราคือ homelab.in.th ก็เลือก “@” หรือ “homelab.in.th” ได้เลย
- Proxy status เราจะเปิดหรือปิดก็ได้ ถ้าเลือกเปิด Cloudflare จะซ่อน IP จริงของเราให้และใช้งาน WAF หรือ Web application firewall ของทาง Cloudflare ได้อีกด้วยป้องกัน DDOS ได้ระดับหนึ่ง แต่ถ้ามีการรับส่งข้อมูลไฟล์รูปภาพหรือไฟล์วีดีโอจำนวนมากๆ แนะนำให้ปิดเพราะอาจจะขัดกับนโยบายของ Cloudflare และโดนจำกัดความเร็วได้
- จากนั้นกด Save
- ตรงนี้เราก็จะได้ซับโดเมนที่เราพร้อมจะใช้งานในส่วนของ Cloudflare แล้ว
- ส่วนเรื่องการอัพเดทข้อมูล “A record” หรือ DDNS อัตโนมัติเมื่อ Public IP ของเราเปลี่ยน สามารถเข้าไปดูบทความที่เกี่ยวข้องได้ที่นี่เลย www.homelab.in.th/cloudflare-ddns-synology-nas-container-manager/
4 ฟอร์เวิร์ดพอร์ต 443 ในเราเตอร์ไปยัง NAS
เมื่อเราเรียกใช้งานผ่านเว็บบราวน์เซอร์ ตัวอย่างเช่น https://photo.homelab.in.th ทาง Cloudflare จะรับส่งข้อมูลผ่านพอร์ต 443 อัตโนมัติ ดังนั้นเราเตอร์ของเราเองก็จำเป็นต้องเปิดพอร์ต 443 และฟอร์เวิร์ดพอร์ต 443 ไปยัง IP Address ของ NAS ในวงแลน (LAN) เพื่อเรียกใช้งานเว็บแอพผ่าน Reverse Proxy วิธีการฟอร์เวิร์ดพอร์ตเราเตอร์แต่ละรุ่นก็จะแตกต่างกันไป ต้องอ่านดูจากคู่มือของเราเตอร์ที่ท่านใช้งานเอง ซึ่งส่วนมากจะอยู่ในหัวข้อของ NAT หรือ Network Address Translation นั้นเอง ในที่นี้จะใช้ pfSense เราเตอร์เป็นตัวอย่าง ในตัวอย่างนี้เข้าใช้งานผ่าน AIS Public IP และ NAS มีเลขไอพีอยู่ที่ 10.9.0.26
- Protocol: TCP
- Dest. Ports (บางรุ่นคือ Source Ports): 443
- NAT IP (บางรุ่นคือ Destination IP): 10.9.0.26
- NAT Port (บางรุ่นคือ Destination Ports): 443
5 ตั้งค่า Reverse Proxy ใน NAS
เปิดการตั้งค่า Reverse Proxy โดยไปที่ Control Panel > Login Portal > Advanced > Reverse Proxy จะได้หน้าการตั้งค่าขึ้นมาตามรูปที่ 5 เลือกกด Create
- Reverse Proxy Name: เลือกคำอธิบาย ในที่นี้เลือก “photo”
- การตั้งค่าในส่วนของ Source หรือต้นทางที่มา
- Protocol: HTTPS
- Hostname: คือซับโดเมนของเราที่ต้องการใช้งาน ในที่นี้เลือก “photo.homelab.in.th”
- Port: พอร์ตที่ฟอร์เวิร์ดมาจากเราเตอร์ ในที่นี้เลือก “443” ตามที่เราตั้งค่าไว้ก่อนหน้านี้
- Enable HSTS: บังคับให้ใช้เฉพาะ HTTPS หรือไม่ ติ๊กถูกถ้าต้องการ
- Access control profile: อนุญาตให้เฉพาะ IP Address ที่กำหนดเท่านั้นที่ใช้งานได้ ในที่นี้เลือกให้เฉพาะ IP ของ Cloudflare ผ่านเท่านั้น ซึ่งส่วนนี้จำเป็นต้องตั้งค่าเพิ่มเติม
- การตั้งค่าในส่วนของ Destination หรือปลายทางที่เราจะเรียกใช้
- Protocol: ในส่วนนี้จะเป็น HTTP/HTTPS ขึ้นอยู่กับเว็บแอพที่เราจะเรียกใช้ ในที่นี้เรียกใช้ SynologyPhoto ผ่านพอร์ต 5001 ซึ่งเป็น HTTPS จึงเลือกเป็น HTTPS
- Hostname: IP Address ปลายทาง ในที่นี้คือไอพีของ NAS เอง
- Port: พอร์ตของเว็บแอพที่เราจะใช้ SynologyPhoto สามารถเรียกใช้งานผ่านพอร์ต 5001
ในส่วนของแท็บ Custom Header เราสามารถใส่ตัวเลือกเพิ่มเติมเมื่อแอพนั้นต้องการอย่างเช่นใน SynologyPhoto ถ้าต้องการใช้งานให้ได้เต็มรูปแบบต้องใช้ WebSocket ด้วย เราก็สามารถเพิ่มได้ตรงส่วนนี้
อ่อ ลืมบอกไป ท่านใดที่เปิด Firewall ไว้ใน NAS ก็อย่าลืมเพิ่มกฏให้อนุญาตพอร์ต 443 จากประเทศไทยและสิงค์โปรด้วย เนื่องจาก IP ของ Cloudflare บางครั้งก็มาจากประเทศสิงค์โปร์เช่นกัน
6 สร้าง SSL Certificate ใน NAS ด้วย Let’s Encrypt
ใน Cloudflare หากเราทำการตั้งค่า SSL/TLS ไว้ที่ระดับ Full (strict) เพื่อเพิ่มระดับความปลอดภัยสูงสุด ป้องกันการโจมตีแบบ Man-in-the-middle Attack และอื่นๆ ดังรูปที่ 7 จะทำให้เมื่อเราเรียกใช้งานผ่านซับโดเมน https://photo.homelab.in.th เกิด “error code 526” หรือ “Invalid SSL certificate” ได้ดังรูปที่ 8
วิธีแก้ไขสามารถทำได้สองวิธีคือ
- (ไม่แนะนำอย่างยิ่ง) เปลี่ยน Cloudflare SSL/TLS มาอยู่ที่ระดับ Full หรือ Flexible
- สร้าง SSL Certificate ขึ้นมาใช้งานโดยใช้ Let’s Encrypt ซึ่งทาง Synology ได้เพิ่มฟังก์ชันนี้มากับตัว NAS แล้ว
ก่อนอื่นหากเราจะสร้าง SSL Certificate จาก Let’s Encrypt ต้องทำการฟอร์เวิร์ดพอร์ต 80 จากเราเตอร์เข้ามายัง NAS ของเราด้วยวิธีการเช่นเดียวกับตอนฟอร์เวิร์ดพอร์ต 443 แค่เปลี่ยนเลขพอร์ตเป็น 80 เท่านั้นเอง โดยทาง Let’s Encrypt จะยืนยันความเป็นเจ้าของซับโดเมนของเราผ่านช่องทางนี้ ถ้าไม่เปิดไว้จะทำให้การขอ SSL Certificate ไม่ผ่าน ซึ่งเมื่อเราได้ Certificate มาแล้วก็ทำการปิดพอร์ต 80 ได้เลย
วิธีการสร้าง SSL Certificate
- Control Panel > Security > Certificate > Add
- เลือก Add a new certificate แล้วกด Next
- Description: ใส่คำอธิบาย ในที่นี้เลือก “photo”
- เลือก “Get a certificate from Let’s Encrypt”
- กด Next
- Domain name: เลือกซับโดเมนที่เราจะสร้างมา ในที่นี้ “photo.homelab.in.th”
- Email: ใส่อีเมล์ของเราเอง
- จากนั้นกด Done
- รอสักครู่ เมื่อสำเร็จจะได้ SSL Certificate ในชื่อ “photo.homelab.in.th”
- นำ SSL Certificate ไปใช้งานกับซับโดเมนของเราโดยการกดเลือกที่ Certificate ที่ได้มา ในที่นี้คือ “photo.homelab.in.th”
- กดเลือก “Settings”
- เลื่อนไปยังซับโดเมนของเรา
- เปลี่ยน Certificate ให้ตรงกับชื่อซับโดเมน
- เรียบร้อย
เพียงเท่านี้ก็สามารถเข้าใช้งานเว็บแอพของเราได้อย่างเต็มประสิทธิภาพและปลอดภัยได้แล้วครับ
หากติดขัดตรงไหนสามารถทิ้งคำถามไว้ใต้บทความได้เลยครับผม
ขอบคุณครับ กำลังหา วิธีใฃ้ cloudflare กับ nas อยู่พอดี
ยินดีครับผม ติดขัดขั้นตอนไหนสอบถามได้เลยนะครับ
สวัสดีครับ HTTPS สามารถใช้กับ 3bbddns ได้ไหมครับ พอดีใช้ synology nas แล้วใช้ 3bbddns บน synology photo app ของ ios แล้วดูวีดีโอ ไม่ได้เลยครับ มันขึ้น “Unable to play the video because your certificate is invalid. Please go to More > Settings to enable Play Content Over HTTP.” พอจะทราบวีธีแก้ไหมครับ