निष्क्रिय मोड के साथ काम करने के लिए vsftpd को कॉन्फ़िगर कैसे करें


49

जब भी मैं स्थापित vsftpdकरता centosहूं, मैं केवल उपयोगकर्ताओं के लिए जेल के वातावरण को सेटअप करता हूं और बाकी का डिफ़ॉल्ट कॉन्फ़िगरेशन है vsftpd। मैं उपयोगकर्ता बनाता हूं और filezilaftp क्लाइंट के साथ कनेक्ट करने का प्रयास करता हूं, लेकिन मैं निष्क्रिय मोड से कनेक्ट नहीं कर सका। मैं हमेशा transfer settingsसक्रिय मोड में बदल ftp serverजाता हूं अन्यथा मुझे जो भी मिलता है उसे सफलतापूर्वक कनेक्ट करने के लिए

 Error: Failed to retrieve directory listing

तो क्या vsftp.confफ़ाइल में कोई निर्देश बदलने का कोई तरीका है और हम सर्वर से निष्क्रिय मोड से जुड़ सकते हैं?

जवाबों:


86

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 में आपको नए फ़ायरवॉल का उपयोग करना है, न कि iptables:

अपने क्षेत्र का पता लगाएं:

# firewall-cmd --get-active-zones
public
  interfaces: eth0

मेरा क्षेत्र 'सार्वजनिक' है, इसलिए मैंने अपना ज़ोन सार्वजनिक करने के लिए सेट किया है, पोर्ट रेंज जोड़ें, और उसके बाद हम पुनः लोड करते हैं:

# firewall-cmd --permanent --zone=public --add-port=10090-10100/tcp
# firewall-cmd --reload

जब आप संबंध बनाते हैं तो क्या होता है

  • आपका क्लाइंट पोर्ट 21 पर vsftpd सर्वर से कनेक्शन बनाता है।

  • ग्राहक यह बताने के लिए गंभीर है कि यह निर्दिष्ट पोर्ट से कनेक्ट करने के लिए कौन सा पोर्ट है।

  • क्लाइंट निर्दिष्ट पोर्ट पर डेटा कनेक्शन बनाता है और सत्र जारी रहता है।

यहां अलग-अलग ftp मोड्स की शानदार व्याख्या है।


आश्चर्य है कि आपने maxपोर्ट को min... के बाद क्यों रखा लेकिन इससे भी महत्वपूर्ण बात यह है कि यदि आप 10090 से 10100 तक पोर्ट खोलते हैं, तो यह 11 पोर्ट है और 10 नहीं जो आप कहते हैं।
एलेक्सिस विलके

मेरा मानना ​​है कि यह वर्णमाला है, यह वास्तव में कोई फर्क नहीं पड़ता क्योंकि वे अलग-अलग निर्देश हैं।
user9517

3
यह मेरे बिना काम नहीं कर रहा है pasv_address
fbmd

मुझे यह खोजने में उम्र लगी, vsftpd गाइडों में से कोई भी इस सूची में नहीं है ... शानदार
पीट

अद्भुत - इस vsftp विन्यास ने मेरी सभी FTP- फ़ायरवॉल समस्याओं को हल किया :)
BurninLeo

24

निष्क्रिय मोड को सक्षम करने के लिए, अपने vsftp.conf में निम्न कॉन्फ़िगरेशन विकल्प सेट करें:

pasv_enable=YES
pasv_min_port=41361
pasv_max_port=65534
pasv_address=xxx.xxx.xxx.xxx

आप निश्चित रूप से स्टार्ट और एंड पोर्ट को बदल सकते हैं, और अपने सर्वर के सार्वजनिक आईपी के साथ xxx को बदलना चाहिए।

इसके अलावा, आपको अपने फ़ायरवॉल में निष्क्रिय मोड पोर्ट रेंज खोलनी चाहिए। सेंटो पर, आप ip_conntrack_ftpअपने फ़ायरवॉल में ftp कनेक्शन को संभालने के लिए मॉड्यूल लोड कर सकते हैं । संपादित करें /etc/sysconfig/iptables-configऔर IPTABLES_MODULES विकल्प को ip_conntrack_ftp जोड़ें। बाद में iptables पुनरारंभ करें:

/sbin/service iptables restart

3
pasv_addressजब बाकी सब कुछ सेट हो गया हो तो क्या करता है और यह अभी भी काम नहीं करता है।
fbmd

1
pasv_address को आज़माने से पहले @fbmd को यह देखना चाहिए कि क्या pasv_max और min_port दोनों सही क्रम में हैं। मेरे साथ यह हुआ कि मेरे पास pasv_min_port में अधिकतम मूल्य कॉन्फ़िगर था, और vsftpd बस इसे अनदेखा करता है। यह एक ज्ञात मूक दोष / बग है जो नेत्रहीन आपको लगता है कि pasv बंदरगाहों को संक्षिप्त रूप से कॉन्फ़िगर किया गया है, लेकिन वे नहीं हैं। यह मेरे साथ हुआ, और मेरी समस्या हल हो गई।
पेद्रो सोसा

यदि आप एक DNS पते को निर्दिष्ट करना चाहते हैं pasv_address, तो आपको जोड़ना चाहिए pasv_addr_resolve=YES(डिफ़ॉल्ट में NO)
पियरे-डेमियन

6

इसके अलावा pasv_enable=YES, एक पोर्ट रेंज निर्दिष्ट करें जिसमें वीएसएफटीपी पीएएसवी मोड चलाएगा:

pasv_min_port=50000
pasv_max_port=50999
port_enable=YES

कॉन्फ़िगर करने के लिए मत भूलना iptables इन बंदरगाहों पर पैकेट संचरण की अनुमति देता है:

iptables -I INPUT -p tcp --dport 50000:50999 -j ACCEPT

एक मानक CentOS सिस्टम पर एक कंबल DROP है, जिसके कारण नियमों की iptables -A INPUT ... अनदेखी की जाती है
user9517

सुनिश्चित करें कि आप pasv_addressvsftpd.conf फ़ाइल में शामिल हैं।
पेड्रो मैड्रिड

3

आमतौर पर, यह ftp सर्वर, vsftpd नहीं है, लेकिन iptable की तरह फ़ायरवॉल जो निष्क्रिय मोड का उपयोग करने से रोकता है (डेटा ट्रांसफर के लिए आवश्यक टीसीपी कनेक्शन को अवरुद्ध करता है)।


दरअसल, फायरवॉल में पोर्ट खोलने के लिए vsftpd काफी स्मार्ट हो सकता है ... लेकिन मैं यहां जो जवाब देख रहा हूं, उससे ऐसा नहीं लगता कि यह इस तरह के करतब के लिए सक्षम है।
एलेक्सिस विल्के

3
@Alexsis। अगर ऐप सिर्फ नियमों को अनदेखा करता है और पोर्ट को वैसे भी ओपन करता है तो फायरवॉल का कोई मतलब नहीं है।
इकरन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.