ไปถามพี่เขามา
คือกรณีเช่า vps อยู่คนละที่ VPS 1IP : 12.12.12.12 และ VPS 2IP : 47.47.47.47 คือ vps 2 ได้ทำ FTP Server ไว้ใช้งานผ่าน Port 21 ปก
แล้ววันนี้มีความจำเป็นอยากจะใช้ IPTABLES Forward Port ตัว VPS 1 ให้วิ่งไป VPS 2
คือผู้ใช้สามารถใช้งาน FTP ได้ผ่าน VPS 1IP : 12.12.12.12
มันทำได้หรือเปล่า แล้วทำอย่างไรครับ เคยทำแต่ public ip > lan แต่อันนี้ public ip to public tp
ในความเป็นจริงมันก็ทำได้ครับ เพียงแต่ว่า คุณต้องทำ Double NAT และใช้ Passive โดยตั้งให้ FTP Server ใช้ Passive Port และ IP ตามที่กำหนด
เช่น
# nat ftp control
iptables -t nat -A PREROUTING -p tcp --dport 21 -j DNAT --to-destination 47.47.47.47
iptables -t nat -A POSTROUTING -p tcp --dport 21 -d 47.47.47.47 -j SNAT --to-source 12.12.12.12
# nat passive ftp data
iptables -t nat -A PREROUTING -p tcp --dport 40000:40099 -j DNAT --to-destination 47.47.47.47
iptables -t nat -A POSTROUTING -p tcp --dport 40000:40099 -d 47.47.47.47 -j SNAT --to-source 12.12.12.12
ตั้งให้ให้ Passive IP ที่ 12.12.12.12 และ port 40000-40099
แต่จะมีปัญหาเวลาเก็บ log ครับ เพราะที่ปลายทางเครื่อง 47.47.47.47 จะได้ source IP เป็น 12.12.12.12 เท่านั้น ถ้าจะ log
คุณอาจจะต้อง log NAT ที่เครื่อง 12.12.12.12 ไปด้วย
เช่น คุณอาจจะแทรก iptables -t nat -A PREROUTING -p tcp –dport 21 -j LOG –log-prefix ‘FTP NAT’ ไปก่อน rules ข้างบน (ถ้าใช้ NFLOG ก็ใช้ -j NFLOG กับ –nflog-prefox แทน)
เครดิต sf_alpha Thaiadmin Global Staff
เรื่องที่เกี่ยวข้อง http://slacksite.com/other/ftp-appendix1.html