ที่เราเตอร์ท่านคงทำ port forwarding กำหนดว่า หากมี request มาที่ ip ใน internet ของ router ก็ให้ forward ไปที่ port 80 ของ คอมพิวเตอร์ของท่าน
ip ใน internet ของ router มีค่าเปลี่ยนไปเรื่อยๆเพราะใช้ adsl แต่ทุกคนรู้ ip ได้จากบริการ no-ip
ทีนี้พอคนภายใน LAN เปิด
http://your_name.no-ip.xxx คอมพิวเตอร์ของคนๆนั้นก็ส่ง dns request ไปถามว่า your_name.no-ip.xxx คือ ip อะไร ก็ได้คำตอบกลับมาว่าเป็น ip ใน internet ซึ่งเป็น ip ของเราเตอร์ของท่าน
แล้วมันก็เปิดเว็บบน port 80 ของ router ของท่านซึ่งไม่มีเว็บใดที่ ServerName ตรงกับ your_name.no-ip.xxx
หาก router ของท่านเป็นคอมพิวเตอร์ที่ไม่ใช่กล่องสำเร็จรูป ท่านสามารถติดต้ง web server กำหนด ServerName ให้ตรง พอเปิดก็จะเห็นหน้าเว็บบนเราเตอร์ ซึ่งก็ไม่ใช่เว็บบนเครื่องของท่านแต่อย่างใด
ประเด็นคือ คนเปิดจากภายนอก ที่ไอพีนี้ ที่พอร์ตนี้ เราเตอร์รู้ว่ามาจากภายนอก เราเตอร์กระทำตามกฎการ forward port ไปยังไอพีในแลนต่อให้
แต่พอเปิดจากภายใน LAN เราเตอร์เห็นว่ามันมาจาก ขาภายใน จึงไม่ได้กระทำตามกฎการ forward port นั้น
แต่ถ้า router เป็น คอมพิวเตอร์เช่น linux ก็จะกำหนด port forwarding ขาในต่อได้ ทีนี้ถ้าใช้แบบกล่องสำเร็จรูปมัน forward ได้แค่ขาที่ต่อกับ internet
ข้อแนะนำ
ให้สร้าง dns server ขึ้นมา ทำบน router ก็ได้นะครับแบบง่ายๆ กดๆเอาในฟอร์มเขา ตั้งชื่อว่า hello.mylan ไรงี้ ให้เป็น ip ของคอมของท่าน แล้วประกาศว่าคนภายในแลนเวลาเปิดให้เปิด hello.mylan คนภายนอกเวลาเปิดใ้ห้เปิด your_name.no-ip.xxx แล้วไปตั้งค่าใน web server ของท่านให้ทั้งสอง ServerName นี้เป็น Virtual Host เดียวกัน ถ้า apache ก็ใช้ ServerAlias
แต่ถ้าท่านมีความจำเป็นฝุดๆ เช่น website ของท่านรับไม่ได้กับการเข้าหลายชื่อเว็บ ท่านอาจจำเป็นต้องตั้ง dns server ภายใน LAN จริงๆ เพื่อ override your_name.no-ip.xxx ให้เป็นไอพีภายในแลนของคอมของท่าน