บทช่วยสอนนี้จะอธิบายวิธีเปลี่ยนเส้นทางการรับส่งข้อมูลทางอินเทอร์เน็ตจากคอมพิวเตอร์เครื่องหนึ่งที่ใช้ Linux ไปยังที่อยู่ IP อื่น
หากคุณเคยจัดการการโยกย้ายบริการเว็บหรือเว็บไซต์จากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่ง คุณจะรู้ว่าประสบการณ์ดังกล่าวจะบ้าแค่ไหน อย่างไรก็ตาม หากคุณแบ่งกระบวนการออกเป็นขั้นตอนที่ชัดเจน และทำการตรวจสอบอย่างต่อเนื่อง คุณสามารถทำให้ประสบการณ์นี้ง่ายขึ้นเล็กน้อยสำหรับตัวคุณเอง ปัญหาอย่างหนึ่งที่คุณอาจพบเมื่อสิ้นสุดการย้ายคือช่วงเวลาที่คุณให้เว็บไซต์ทำงานได้ดีบนตำแหน่งใหม่ แต่จำเป็นต้องรอให้ชื่อโดเมนถูกส่งต่อไปยังเซิร์ฟเวอร์ใหม่ คุณสามารถปิดบริการของคุณจนกว่าโดเมนจะทำการส่งต่อเสร็จสิ้น หรือคุณสามารถตั้งค่าเซิร์ฟเวอร์แรกของคุณเพื่อส่งต่อการรับส่งข้อมูลทั้งหมดไปยังเซิร์ฟเวอร์ใหม่ มาดูกันว่าคุณจะทำสิ่งนั้นได้อย่างไรบนเครื่อง Linux โดยใช้ IPTables
ในกรณีที่คุณยังไม่ทราบ IPtables เป็นซอฟต์แวร์ไฟร์วอลล์ที่มาพร้อมกับลีนุกซ์ส่วนใหญ่ เป็นซอฟต์แวร์ที่มีประโยชน์อย่างยิ่งและสามารถใช้ได้มากกว่าแค่ไฟร์วอลล์ ในแบบฝึกหัดนี้ เราจะกำหนดค่า IPTables บนเซิร์ฟเวอร์ Linux เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลทั้งหมดที่มาจากพอร์ต 80 (ซึ่งเป็นพอร์ตเริ่มต้นของเว็บเซิร์ฟเวอร์) ไปยังเซิร์ฟเวอร์ที่มี IP 122.164.34.240 . ขั้นตอนแรกคือการตั้งค่ากล่อง Linux ของคุณเพื่ออนุญาตให้มีการส่งต่อประเภทนี้ เปิดหน้าต่างเทอร์มินัล เข้าสู่ระบบในฐานะผู้ใช้รูท และเรียกใช้คำสั่งต่อไปนี้:
# echo 1>/proc/sys/net/ipv4/ip_forward
ขั้นตอนต่อไปคือการบอกให้ IPTables เปลี่ยนเส้นทางการรับส่งข้อมูลไปยังเซิร์ฟเวอร์ใหม่:
# iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to-destination 122.164.34.240
นี่คือจุดที่เวทมนตร์ IPTables เกิดขึ้น ด้วยขั้นตอนที่สามและขั้นตอนสุดท้าย เราบอกให้ IPTables เขียนต้นทางของการเชื่อมต่อไปยังพอร์ต 80 ของเซิร์ฟเวอร์ใหม่ใหม่เพื่อให้ดูเหมือนว่ามาจากเซิร์ฟเวอร์เก่า
# iptables -t nat -A POSTROUTING -p tcp -d 122.164.34.240 –dport 80 -j MASQUERADE
จำเป็นต้องมีขั้นตอนสุดท้ายเพราะถ้าเราไม่บอกเว็บเซิร์ฟเวอร์ของเซิร์ฟเวอร์ใหม่ว่าการเชื่อมต่อนั้นมาจากเครื่องไคลเอนต์ มันจะคิดว่ามาจากเซิร์ฟเวอร์เก่า