ในการใช้งาน Proxmox นั้น เราจะมี Proxmox Hardware node(Host) และภายในจะมีเครื่อง Guest ซึ่งเป็น Container(กรณีใช้ OpenVZ) หรือ VM(กรณีใช้ KVM) อยู่หลายเครื่อง ซึ่งเป็น private internal network ทีนี้ถ้าเรามี Public IP แค่ IP เดียว แต่ต้องการให้เครื่อง Guest ออกอินเตอร์เนตได้หรือเข้าถึงได้จากภายนอกด้วย จะทำยังไงมาดูกัน
จากรูปเราต้องการ SSH เข้าเครื่อง Guest โดยการทำ NAT ที่เครื่อง Host (Public IP) โดยเข้ามาด้วย port:2202 ก่อนอื่น คอนฟิก Network เครื่อง Proxmox ก่อน โดยกำหนด public IP ให้ vmbr0 interface และให้ private IP แก่ vmbr2 ดังตัวอย่าง
จากนั้นสร้างกฏโดยใช้ iptables อนุญาตในส่วน outbound traffic โดยกำหนดให้เมื่อมีการส่ง packet จากวง 192.168.1.0/24 ไปข้างนอกให้ส่งออกด้วย Public IP ของเรา
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o vmbr0 -j SNAT --to 203.146.140.100
จากนั้นลองเข้าไปที่เครื่อง guest แล้วลอง ping google.com จะเห็นว่าเราสามารถออก Internet ได้ เครื่อง guest เราออก Internet ได้แล้วทีนี้ ถ้าเราจะเข้าถึงเครื่อง guest เราจากข้างนอก เช่น ต้องการ SSH เข้า เครื่อง guest ให้เราเพิ่มกฏ ดังนี้
iptables -t nat -A PREROUTING -p tcp -d 203.146.140.100 --dport 2202 -i vmbr0 -j DNAT --to 192.168.1.102:22
เป็นการให้ภายนอก SSH เข้าเครื่อง Guest(192.168.0.102) โดยเข้ามาที่ port:2202 โดยเราสามารถสร้างกฏเพิ่มได้ตามต้องการ
หลังจากสร้างกฏเรียบร้อยแล้ว ให้ใช้คำสั่ง
iptables -t nat -L
เพื่อตรวจสอบกฏทั้งหมด จากนั้นให้เก็บกฏเหล่านี้โดยใช้คำสั่ง
iptables-save > /etc/iptables.rules
และเข้าไปที่ไฟล์ /etc/network/interfaces
อีกครั้ง จากนั้นเพิ่มไฟล์ที่เราบันทึกกฏไว้ลงไป ดังรูป
ที่ต้องทำแบบนี้เนื่องจากถ้าเราสั่ง iptables เฉย ๆ เวลา boot ระบบ กฏทั้งหมดจะหายหมดนั่นเอง