Impostare vsftpd dietro un NAT che usa iptables
Per far andare vsftpd in maniera che da esterno si possa raggiungere se in mezzo abbiamo un firewall/gateway che usa iptables occorre predisporre certe regole.
Intanto sul server FTP conviene andare a dire a vsftpd che indirizzo e quali porte usare per le connessioni in modalità passiva, quindi si edita il file di configurazione in /etc/vsftpd.conf e si aggiunge:
1 2 3 4 |
pasv_address=<IP-PUBBLICO-ESTERNO> pasv_min_port=64000 pasv_max_port=64500 port_enable=YES |
Riavviare quindi il servizio:
1 |
sudo service vsftpd restart |
Andare poi sul gateway/firewall ad abilitare il conntrack, per comodità è possibile aggiungere le righe in /etc/rc.local:
1 2 3 4 5 6 7 |
# Moduli routing NAT modprobe ip_conntrack modprobe iptable_nat # Moduli routing FTP modprobe ip_conntrack_ftp modprobe ip_nat_ftp |
A questo punto occorre impostare le regole di iptables:
1 2 3 4 5 6 7 |
*filter -A FORWARD -p tcp -m tcp -m multiport --dports 21 -j ACCEPT -A FORWARD -p tcp -m tcp -m multiport --dports 64000:64500 -j ACCEPT *nat -A PREROUTING -p tcp -m tcp --dport 21 -j DNAT --to-destination <IP-INTERNO> -A PREROUTING -p tcp -m tcp --dport 64000:64500 -j DNAT --to-destination <IP-INTERNO> |
Applicare le regole o riavviare il gateway/firewall e ora dovrebbe essere possibile collegarsi da esterno attraverso il NAT.