ว่าด้วยเรื่อง GRE Tunnel จากประสบการณ์ตรง
สวัสดีครับเพื่อนๆ วันนี้อยากมาแชร์ประสบการณ์ที่ได้ลองงมๆ กับเจ้าสิ่งที่เรียกว่า GRE tunnel เนี่ยแหละครับ ตอนแรกได้ยินชื่อก็งงๆ เอ๊ะ มันคืออะไรหว่า หน้าตาเป็นยังไง กินได้ไหม ฮ่าๆ ล้อเล่นครับ คือผมได้รับโจทย์มาว่าอยากจะเชื่อมเน็ตเวิร์คสองที่เข้าด้วยกัน ให้มันคุยกันได้เหมือนอยู่แลนเดียวกันเลย ทั้งๆ ที่มันอยู่คนละจังหวัดกันเลยนะ ตอนนั้นก็คิดหนักเลย จะทำยังไงดีหว่า
ผมก็เริ่มจากการไปค้นหาข้อมูลก่อนเลยครับ ว่าไอ้วิธีเชื่อมเน็ตเวิร์คระยะไกลแบบนี้น่ะมันมีกี่แบบบ้าง ก็ไปเจอเจ้า GRE tunnel นี่แหละครับ อ่านๆ ดูคอนเซ็ปต์มันก็น่าสนใจดีนะ เขาบอกว่ามันเหมือนเราสร้างอุโมงค์ส่วนตัวขึ้นมา ทะลุอินเทอร์เน็ตไปโผล่อีกฝั่งนึงเลย ข้อมูลอะไรที่วิ่งในอุโมงค์นี้ก็จะถูกห่อหุ้มไว้อย่างดี (อันนี้เข้าใจเอาเองตอนแรกนะ แต่เดี๋ยวมีต่อ)

ลงมือทำจริง มันเป็นอย่างนี้นี่เอง
เอาล่ะ พอได้คอนเซ็ปต์คร่าวๆ ผมก็เริ่มลงมือเลยครับ อุปกรณ์ที่ผมใช้ก็เป็นเราเตอร์สองตัวนะ ของแต่ละฝั่ง
ขั้นตอนที่ผมทำก็ประมาณนี้ครับ:
- เช็ค IP ก่อนเลย: อย่างแรกสุด ผมต้องรู้ IP จริง (Public IP) ของเราเตอร์ทั้งสองฝั่งก่อน อันนี้สำคัญมาก เพราะมันจะเป็นปากอุโมงค์กับปลายอุโมงค์ของเรา
- เข้าหน้าคอนฟิกเราเตอร์: จากนั้นก็รีโมทเข้าไปคอนฟิกเราเตอร์ทีละตัวเลยครับ เมนูมันก็จะแล้วแต่ยี่ห้อนะ แต่หลักการจะคล้ายๆ กัน คือหาเมนูที่เกี่ยวกับ Tunnel หรือ GRE นี่แหละ
- สร้าง Interface Tunnel: ในเราเตอร์แต่ละฝั่ง ผมก็สร้าง interface tunnel ขึ้นมาใหม่ มันเหมือนเราสร้างการ์ดแลนเสมือนขึ้นมาอีกอันนึงเลยครับ
- กำหนด Source กับ Destination: ทีนี้แหละครับ ผมก็ต้องบอกเราเตอร์ว่า ปากอุโมงค์ (Source) ของฝั่งนี้คือ IP จริงของมันเอง แล้วปลายอุโมงค์ (Destination) ก็คือ IP จริงของเราเตอร์อีกฝั่งนึงที่เราจะเชื่อมไปหา
- กำหนด IP ให้อุโมงค์: หลังจากนั้น ผมก็ตั้ง IP Address ให้กับตัว interface tunnel ที่สร้างขึ้นมาใหม่ อันนี้จะเป็น IP ภายในอุโมงค์นะครับ ไม่ใช่ IP จริง เช่น ฝั่ง A ผมตั้งเป็น 10.0.0.1/30 ฝั่ง B ก็ตั้งเป็น 10.0.0.2/30 ให้อยู่ในวงเดียวกัน
- ทำเหมือนกันทั้งสองฝั่ง: ผมก็ทำขั้นตอนคล้ายๆ กันนี้กับเราเตอร์อีกฝั่งนึงครับ แค่สลับ IP Source กับ Destination ให้ถูกต้อง
- ตั้ง Route ด้วยนะ: พอมันเชื่อมกันได้แล้ว สิ่งสำคัญอีกอย่างคือการทำ Routing ครับ คือต้องบอกให้เราเตอร์รู้ว่า ถ้าจะไปเน็ตเวิร์ควงแลนของอีกฝั่งนึงน่ะ ให้วิ่งผ่านทาง interface tunnel ที่เราสร้างไว้นะ ไม่งั้นมันไม่รู้จะไปทางไหน
ตอนแรกที่ทำเสร็จ ลอง ping IP ของ tunnel หากันดู ปรากฏว่า… เจอ! เฮ้ย ดีใจมากครับ เหมือนปลดล็อคอะไรบางอย่างได้ จากนั้นก็ลอง ping ข้ามไปหาเครื่องคอมพิวเตอร์ในวงแลนของอีกฝั่งดู ก็เจอเหมือนกัน! โอ้โห ตอนนั้นรู้สึกว่ามันเจ๋งดีแฮะ
ข้อควรรู้เล็กน้อย
แต่พอใช้ไปสักพัก แล้วก็ไปอ่านข้อมูลเพิ่มเติม ผมก็เพิ่งมารู้ทีหลังว่าไอ้ GRE เนี่ย มันแค่สร้างอุโมงค์เฉยๆ นะครับ มันไม่ได้เข้ารหัสข้อมูลอะไรให้เราเลย คือถ้ามีใครดักข้อมูลกลางทางได้ เขาก็อ่านข้อมูลของเราได้อยู่ดี ถ้าอยากให้ปลอดภัยจริงๆ จังๆ ก็ต้องไปทำพวก IPsec มาครอบ GRE อีกทีนึง อันนี้ก็เป็นอีกเรื่องที่ต้องไปศึกษาต่อ
สรุปง่ายๆ จากที่ผมลองเล่นมานะครับ GRE tunnel มันก็เป็นวิธีง่ายๆ วิธีนึงที่ทำให้เครือข่ายสองที่ที่อยู่ไกลกันมากๆ สามารถคุยกันได้เหมือนอยู่ใกล้กันนิดเดียว เหมาะกับเวลาที่เราอยากจะแชร์ทรัพยากรกันระหว่างสาขา หรือเชื่อมต่อเน็ตเวิร์คส่วนตัวผ่านอินเทอร์เน็ต แต่ถ้าเน้นเรื่องความปลอดภัยมากๆ ก็อาจจะต้องพิจารณาเรื่องการเข้ารหัสเพิ่มเติมด้วยครับ
หวังว่าประสบการณ์ของผมจะเป็นประโยชน์กับเพื่อนๆ ที่กำลังสนใจเรื่องนี้อยู่นะครับ ถ้ามีอะไรผิดพลาดก็ขออภัยด้วยนะครับ ผมก็มือใหม่หัดทำเหมือนกัน แชร์จากที่ลองผิดลองถูกมาล้วนๆ ครับ!