ในการกำหนดค่าโหมดพาสซีฟสำหรับ vsftpd คุณต้องตั้งค่าพารามิเตอร์บางตัวใน vsftpd.conf
pasv_enable=Yes
pasv_max_port=10100
pasv_min_port=10090
สิ่งนี้เปิดใช้งานโหมดพาสซีฟและ จำกัด ให้ใช้พอร์ตสิบเอ็ดสำหรับการเชื่อมต่อข้อมูล สิ่งนี้มีประโยชน์เนื่องจากคุณต้องเปิดพอร์ตเหล่านี้บนไฟร์วอลล์ของคุณ
iptables -I INPUT -p tcp --destination-port 10090:10100 -j ACCEPT
หากหลังจากการทดสอบทั้งหมดใช้งานได้แล้วให้บันทึกสถานะไฟร์วอลล์ของคุณด้วย
service iptables save
ซึ่งจะอัปเดต/etc/sysconfig/iptables
ไฟล์
ในการทำเช่นนี้คือ CentOS 7 คุณต้องใช้ firewalld ใหม่ไม่ใช่ iptables:
ค้นหาโซนของคุณ:
# firewall-cmd --get-active-zones
public
interfaces: eth0
โซนของฉันคือ 'สาธารณะ' ดังนั้นฉันตั้งค่าโซนของฉันเป็นสาธารณะเพิ่มช่วงพอร์ตและหลังจากนั้นเราโหลดใหม่:
# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload
จะเกิดอะไรขึ้นเมื่อคุณทำการเชื่อมต่อ
ไคลเอนต์ของคุณทำการเชื่อมต่อกับเซิร์ฟเวอร์ vsftpd บนพอร์ต 21
เซิร์ฟเวอร์จะตอบกลับไปยังไคลเอ็นต์เพื่อบอกพอร์ตที่จะเชื่อมต่อกับช่วงที่ระบุข้างต้น
ไคลเอนต์ทำการเชื่อมต่อข้อมูลบนพอร์ตที่ระบุและเซสชันดำเนินการต่อ
มีคำอธิบายที่ดีเกี่ยวกับโหมด ftp ที่แตกต่างกันที่นี่
max
พอร์ตหลังจากmin
... แต่ที่สำคัญกว่านั้นคือถ้าคุณเปิดพอร์ต 10090 ถึง 10100 นั่นคือ 11 พอร์ตและไม่ใช่ 10 อย่างที่คุณพูด