Kadang-kadang saya mengalami kejadian, ketika saya mengakses server saya yang berada di lokasi remote melalui FTP, saya sering mengalami kegagalan akses FTP seperti tidak mau ngambil file, tidak mau me
list isi direktori di remote server dan lain sebagainya. Hal ini disebabkan karena saya sedang menjalankan FTP dalam mode passive. Gampangnya begini, karena suatu hal sekarang ini kita banyak menggunakan NAT untuk koneksi dari tempat kita ngenet. Hal ini agar kita bisa reuse ip address yang sama untuk beberapa host sekaligus. Dan hal ini kadang-kadang tidak bisa mendukung kerja kita dengan menggunakan FTP. Karena, ketika kita menginisiasi sebuah koneksi FTP dari bawah NAT router, kita akan menggenerate informasi tentang port yang dipilih secara random oleh client ftp, yang kemudian digunakan server NAT untuk mengakses FTP server yang kita arah. Dan di sini kadang-kadang firewall di FTP server tidak mau menerima inisiasi tersebut dikarenakan originating koneksi tersebut bukan dari server NAT melainkan dari client NAT yang ada di bawah router NAT tersebut. Untuk mengatasi hal ini, di FreeBSD terutama, saya mengakali dengan menggunakan program
/usr/libexec/ftp-proxy yang secara default listen di port
8021 di interface localhost (lo0).
ftp-proxy tersebut saya aktifkan melalui
inetd dengan cara mengedit file
/etc/inetd.conf, dan menghilangkan tanda comment (#) pada baris:
ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
Lalu restart
inetd:
shell> /etc/rc.d/inetd restart
Stopping inetd.
Starting inetd.
Pada konfigurasi
PF (dalam hal ini konfigurasi saya ada di
/etc/pf.conf) saya tambahkan baris berikut ini pada kelompok sesi
NAT:
nat-anchor "ftp-proxy/*"
rdr-anchor "ftp-proxy/*"
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
Sedangkan di sesi rules, saya tambahkan:
anchor "ftp-proxy/*"
Kita check syntax
PF, dan jika syntax sudah oke, kita load ulang konfigurasi
PF yang baru:
shell> pfctl -nf /etc/pf.conf
shell> pfctl -f /etc/pf.conf
refrensi:
http://www.openbsd.org/faq/pf/ftp.html