เอกสาร
เริ่มต้นอย่างรวดเร็ว + คำอธิบายฟังก์ชันของแต่ละส่วนและแต่ละอุปกรณ์ (อัปเดตต่อเนื่อง)
การส่งต่อพอร์ต
บทความนี้อธิบาย «การส่งต่อพอร์ต» ของแผงควบคุม — การทำการส่งต่อพอร์ตแบบดั้งเดิม (iptables/nftables DNAT) บนเซิร์ฟเวอร์ที่มี IP สาธารณะของตัวเอง
เข้าใจในประโยคเดียว
คุณมีเซิร์ฟเวอร์ที่มี IP สาธารณะหนึ่งเครื่อง ต้องการให้มันส่งทราฟฟิกที่เข้ามาที่ «พอร์ตสาธารณะหนึ่ง» ต่อไปยัง «อีกเครื่องหนึ่ง (หรืออีกพอร์ตหนึ่งของเครื่องเดียวกัน)» โดยอัตโนมัติ การส่งต่อพอร์ตก็คือการทำสิ่งนี้
แนะนำฟังก์ชัน
สำหรับเซิร์ฟเวอร์ที่มี IP สาธารณะของตัวเอง สามารถส่งทราฟฟิกขาเข้าที่ «พอร์ตสาธารณะหนึ่ง» ไปยัง «IP เป้าหมาย:พอร์ต» ผ่านไฟร์วอลล์ของระบบ (iptables/nftables) นี่คือการส่งต่อพอร์ตแบบดั้งเดิมในระดับระบบ
ความต่างจากทะลุพอร์ต (แยกก่อนว่าจะใช้อันไหน)
| การส่งต่อพอร์ต (บทความนี้) | ทะลุพอร์ต | |
|---|---|---|
| เซิร์ฟเวอร์ที่ใช้ | มี IP สาธารณะของตัวเอง | ไม่มี IP สาธารณะ (เซิร์ฟเวอร์ทะลุ) |
| วิธีทำ | DNAT ของไฟร์วอลล์ระบบ | อุโมงค์ย้อนกลับ |
| ตำแหน่งที่ส่งต่อ | ตัวเซิร์ฟเวอร์เป้าหมายเอง | เซิร์ฟเวอร์แผงควบคุม |
| ต้องมี Agent | ไม่ | ใช่ |
สถานการณ์ที่ใช้
- ส่งต่อพอร์ตหนึ่งของ IP สาธารณะของเซิร์ฟเวอร์ไปยังบริการของอีกเซิร์ฟเวอร์หนึ่ง
- แมปพอร์ตที่ไม่มาตรฐาน (เช่น 8888) ไปยังพอร์ตบริการมาตรฐาน
- ให้เครื่องในเครือข่ายภายในเปิดเผยบริการผ่านเครื่องที่มี IP สาธารณะ
ตัวอย่าง
คุณมีเซิร์ฟเวอร์สาธารณะ 1.2.3.4 และมีเครื่องในเครือข่ายภายใน 192.168.1.100 ที่รันบริการเว็บอยู่ (พอร์ต 80) คุณต้องการให้คนข้างนอกเข้าถึง 1.2.3.4:8888 แล้วเท่ากับเข้าถึงพอร์ต 80 ของเครือข่ายภายใน:
- โปรโตคอล: TCP
- พอร์ตที่รับฟัง:
8888 - IP เป้าหมาย:
192.168.1.100 - พอร์ตเป้าหมาย:
80
วิธีใช้งาน
เข้าสู่ «แผงจัดการระบบ → ไฟร์วอลล์ → การส่งต่อพอร์ต» ของเซิร์ฟเวอร์เป้าหมายที่มี IP สาธารณะ แล้วเปิด «การจัดการส่งต่อพอร์ต»:
1. คลิก «เพิ่มการส่งต่อ» แล้วกรอก:
- โปรโตคอล: TCP / UDP
- พอร์ตที่รับฟัง: พอร์ตขาเข้าบนอินเทอร์เน็ต
- IP เป้าหมาย: ที่อยู่จริงของเป้าหมายการส่งต่อ (IP สาธารณะ หรือ IP เครือข่ายภายในที่เส้นทางไปถึงได้)
- พอร์ตเป้าหมาย: พอร์ตของบริการเป้าหมาย
2. หลังสร้างแล้ว ทราฟฟิกจะถูกส่งต่อทันที
3. การส่งต่อที่สร้างแล้วจะแสดงเป็นรายการ แก้ไข หรือ ลบ ได้
คำอธิบายทางเทคนิค (กฎการส่งต่อ)
แผงควบคุมจะตั้งกฎสามข้อบนเซิร์ฟเวอร์ให้อัตโนมัติ (ยกตัวอย่าง TCP รับฟัง 8888 เป้าหมาย 192.168.1.100:80):
1. DNAT: เขียนทราฟฟิกที่มาที่ :8888 ใหม่ไปยัง 192.168.1.100:80
2. เปิดทาง FORWARD: เปิดทางให้ทราฟฟิกส่งต่อขาไป/ขากลับ
3. MASQUERADE: แปลงที่อยู่ต้นทาง เพื่อให้แพ็กเก็ตตอบกลับกลับมาได้ถูกต้อง
> เข้าใจแบบง่าย ๆ: DNAT คือ «เปลี่ยนปลายทาง» MASQUERADE คือ «เปลี่ยนที่อยู่ขากลับ» ต้องมีกฎครบทั้งสามข้อการส่งต่อจึงทำงานสมบูรณ์
ข้อควรระวัง
1. ต้องมี IP สาธารณะของตัวเอง: การส่งต่อพอร์ตทำที่เครื่องของเซิร์ฟเวอร์เป้าหมาย ต้องให้เซิร์ฟเวอร์เครื่องนี้มี IP สาธารณะของตัวเอง (ทราฟฟิกยิงมาที่มันจริง)
2. เปิดทางไฟร์วอลล์: เมื่อส่งต่อไปยังอีกเซิร์ฟเวอร์หนึ่ง เซิร์ฟเวอร์เป้าหมาย/ไฟร์วอลล์กลางต้องเปิดทางพอร์ตเป้าหมาย
3. แก้ไข = ลบกฎเก่า + สร้างใหม่: กฎไฟร์วอลล์ของระบบไม่รองรับการแก้ไขในที่ เวลาแก้ไขจะลบกฎเก่าก่อนแล้วเพิ่มกฎใหม่
4. แผงควบคุมปรับตัวเข้ากับแบ็กเอนด์ iptables-legacy / iptables / nftables ทั้งสามแบบอัตโนมัติ ไม่ต้องเลือกเอง