လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အမှားအယွင်းများကိုရှောင်ရှားရန် FTP_PASV ကိုအသုံးပြုသောအခါ FTP server ကို configure လုပ်ရန်မည်သို့လိုအပ်သနည်း။ တစ် ဦး ကအကျဉ်းရှင်းပြချက်

အမှားအယွင်းများကိုရှောင်ရှားရန် FTP_PASV ကိုအသုံးပြုသောအခါ FTP server ကို configure လုပ်ရန်မည်သို့လိုအပ်သနည်း။ တစ် ဦး ကအကျဉ်းရှင်းပြချက်

M66 2025-07-04
<span><span>--------------------------------------------------

အသုံးပြု ftp_pasv နာရီ,FTP အမှားအယွင်းမရှိစေရန်ဆာဗာကိုမည်သို့ပြင်ဆင်ရမည်နည်း?တစ် ဦး ကအကျဉ်းရှင်းပြချက်

--------------------------------------------------

တည်နေ PHP အလယ်ပိုင်းအသုံးပြု ftp_pasv passive mode ကို enable functions(Passive Mode)ဆက် FTP ဆာဆာနာရီ,常常会遇到ဆက်失败或数据传输အလယ်ပိုင်း断的问题。ဤသည်အဓိကအားဖြင့်ကြောင့်ဖြစ်သည် FTP ဆာဗာ configuration သည်ကွန်ယက်ပတ်ဝန်းကျင်နှင့်မကိုက်ညီပါ,ဖောက်သည်အားဒေတာရုပ်သံလိုင်းကိုမှန်ကန်စွာတည်ဆောက်ရန်ပျက်ကွက်စေသည်。本文将详细说明အသုံးပြု ftp_pasv နာရီ,FTP ဆာဗာကို configure လုပ်နည်း,才能保证ဆက်稳定、Mootch ဂီယာ。

တစ်、FTP Active Mode နှင့် passive mode ၏အကျဉ်းချုပ်ဖော်ပြချက်  
FTP ဆက်由控制ဆက်和数据ဆက်组成。တက်ကြွ mode ကို(Active Mode)အလယ်ပိုင်း,ဖောက်သည်ကဆာဗာကိုပြောပြသည်IPနှင့် ports,ဆာဆာ主动ဆက်客户端进行数据传输;Passive Mode(Passive Mode)ဆာဗာသည် client ကို data port ကိုပြောပြသည်,客户端主动ဆက်ဆာဆာ。Passive Mode通常适合客户端处于防火墙或NAT环境နာရီအသုံးပြု。

နှစ်、为什么အသုံးပြု ftp_pasv?  
တည်နေ现代网络环境အလယ်ပိုင်း,ဖောက်သည်များမကြာခဏ firewalls သို့မဟုတ် router များ၏နောက်ကွယ်မှတည်ရှိသည်,တက်ကြွ mode ကိုဆက်因被动防火墙阻挡而失败。ဖွင့်လှစ် ftp_pasv Passive Mode后,ဖောက်သည်များသည်ဤကန့်သတ်ချက်များကိုရှောင်ကွင်းနိုင်သည်,主动ဆက်ဆာဆာ指定的端口进行数据传输,ဤသည်အောင်မြင်မှုနှုန်းတိုးတက်လာသည်。

သုံး、FTP ဆာဗာကို configure လုပ်နည်း?  
</span><span><span class="hljs-number">1</span></span><span>. **配置Passive Mode端口范围**  
ဆာဆာ必须设置တစ်段专用的端口范围供Passive Modeအသုံးပြု,ဥပမာအားဖြင့် </span><span><span class="hljs-number">50000</span></span><span>-</span><span><span class="hljs-number">51000</span></span><span>。  
- တည်နေ vsftpd အလယ်ပိုင်း,configuration file ကိုများသောအားဖြင့်ဖြစ်ပါတယ် `/etc/vsftpd/vsftpd.conf`,ထည့်သွင်းသို့မဟုတ်ပြုပြင်မွမ်းမံ:  
  ```conf
  pasv_min_port=</span><span><span class="hljs-number">50000</span></span><span>
  pasv_max_port=</span><span><span class="hljs-number">51000</span></span><span>
</span></span>
  • ProfTPD နှင့် Pure-ftpd ကဲ့သို့သောအခြား FTP ဆာဗာများတွင်လည်းအလားတူပြင်ဆင်မှုများရှိသည်။

  1. Open Firewall Port ကိုဖွင့ ်ပါ passive mode data port range (အထက်ပါဥပမာတွင် 50000-51000 ကဲ့သို့သော 50000-51000) ကိုဆာဗာ Firewall တွင်ဖြန့်ချိရမည်။ ဒီလိုမှမဟုတ်ရင် client ဟာဒီ ports တွေကိုချိတ်ဆက်လို့မရဘူး,

  • ဥပမာ Iptables ကို အသုံးပြုခြင်း,

     <span><span>iptables -I INPUT -p tcp --match multiport --dports 50000:51000 -j ACCEPT
    </span></span>
  • အကယ်. သင်သည် firewalld သို့မဟုတ်အခြား firewall software ကိုအသုံးပြုပါကသက်ဆိုင်ရာ configuration ကိုလည်းလိုအပ်သည်။

  1. ဆာဗာ၏အများပြည်သူဆိုင်ရာအိုင်ပီကိုသတ်မှတ်ပါ
    ဆာဗာသည်များသောအားဖြင့်အများအားဖြင့် intranet တွင်တည်ရှိပြီးနတ်ကိုအသုံးပြုသည်။

  • VSFTPD တွင်, configure:

     <span>pasv_address=သင်၏အများဆိုင်ကွန်ယက်IPစကားပေြာဟော
    </span>
  • ဒီလိုမှမဟုတ်ရင် client ဟာ Intranet IP ကိုရပြီးဒေတာဆိပ်ကမ်းကိုဆက်သွယ်လို့မရဘူး။

  1. connection timeout နှင့်အများဆုံးဆက်သွယ်မှုအရေအတွက် configure အချိန်မတန်မီဆက်သွယ်မှုပြတ်တောက်ခြင်းသို့မဟုတ်ဆာဗာအရင်းအမြစ်ရှားပါးမှုကိုရှောင်ရှားရန်အချိန်ကုန်ချိန်ညှိချက်များနှင့်အမြင့်ဆုံးဆက်သွယ်မှုကိုသင့်လျော်စွာရေတွက်ပါ။

4 ။ PHP Code နမူနာများအောက်ပါအချက်များသည် passive mode ကိုဖွင့ ်. ဖိုင်များကိုတင်ခြင်း၏ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">"ftp.example.com"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">"username"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">"password"</span></span><span>;
</span><span><span class="hljs-variable">$local_file</span></span><span> = </span><span><span class="hljs-string">"/path/to/local/file.txt"</span></span><span>;
</span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-string">"file.txt"</span></span><span>;

</span><span><span class="hljs-comment">// ဆက် FTP</span></span><span>
</span><span><span class="hljs-variable">$conn_id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$conn_id</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"无法ဆက် FTP ဆာဆာ"</span></span><span>);
}

</span><span><span class="hljs-comment">// လော့ဂ်အင်</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>)) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"FTP လော့ဂ်အင်失败"</span></span><span>);
}

</span><span><span class="hljs-comment">// ဖွင့်လှစ်Passive Mode</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_pasv</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);

</span><span><span class="hljs-comment">// ဖိုင်တင်ပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_put</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>, FTP_BINARY)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာတင်ပါ"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"တင်ပါးမအောင်မြင်ပါ"</span></span><span>;
}

</span><span><span class="hljs-comment">// 关闭ဆက်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5. အကျဉ်းချုပ် FTP_PASV ကိုသုံးသောအခါ, သော့သည် passive mode port port range, firewall range နှင့် Public Network IP လိပ်စာများကိုမှန်ကန်စွာ configure လုပ်ရန်ဖြစ်သည်။ သူတို့ထဲမှတစ်ယောက်မှပျောက်ဆုံးနေသည်မဟုတ်ရင်ဖောက်သည်သည်ဒေတာဆက်သွယ်မှုကိုမှန်ကန်စွာတည်ဆောက်နိုင်မည်မဟုတ်ပါ။ ဆာဗာကိုကျိုးကြောင်းဆီလျော်စွာ configure လုပ်ထားသရွေ့ FTP passive modes ရှိဆက်သွယ်မှုအမှားများကိုရှောင်ရှားနိုင်သည်။

ဤဆောင်းပါး၏ရှင်းလင်းချက်ကိုရှင်းပြခြင်းအားဖြင့်သင်သည် FTP passive mode configuration ကိုရှင်းလင်းစွာနားလည်နိုင်ပြီးတည်ငြိမ်ပြီးထိရောက်သောဖိုင်လွှဲပြောင်းမှုကိုသေချာစေရန်အမှန်တကယ်စီမံကိန်းများတွင် FTP_PASV ကိုချောချောမွေ့မွေ့သုံးနိုင်သည်ဟုကျွန်ုပ်ယုံကြည်သည်။

 <span></span>