Поставлена задача настроить FTP Server. Сервер куплен, ось установлена.
Сервер находится в локальной сети за роутером TP-Link, который раздает адреса в сети 16.16.16.х. Все адреса важных ПК и серверов зарезервированы, их IP в локалке не меняются.
Роутер получает внешний белый динамический IP от провайдера (режим получения IP в TP-Link установлен «динамический», статику не дает провайдер). Пусть это будет 100.100.100.100. Есть внешний IP шлюза 100.100.100.200.
Нужно, чтобы извне могли подключаться к этому FTP серверу. Локальные пользователи созданы.
IP FTP сервера 16.16.16.10
Интерфейс enp0s3
Параметры vsftpd.conf
listen=YES
#listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=Welcome to BIG FTP Server
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd.chroot_list
hide_ids=YES
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50500
pasv_address=16.16.16.10
Насчет pasv_address=16.16.16.10 не уверен. Нужен ли этот параметр в конфиге?
Скажу сразу, что в настройках iptables не силен. Перечитал кучу всего, разных примеров настроек, но не работает ничего.
В общем, внес некие изменения (начитался всего):
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
Вот с самими правилами беда(((:
iptables -A INPUT -p tcp --dport 20 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 50000:50500 -m conntrack --ctstate NEW -j ACCEPT
Нашел в сети еще такие правила:
iptables -t nat -A PREROUTING -i enp0s3 -p tcp -m tcp --dport 2100 -j DNAT --to-destination 16.16.16.10:21
iptables -t nat -A PREROUTING -i enp0s3 -p tcp -m tcp --dport 10000:10100 -j DNAT --to-destination 16.16.16.10
iptables -A INPUT -i enp0s3 -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
И еще пара вопросов:
- Как в Ubuntu 18.04.1 автоматом подключать модули nf_conntrack_ftp и nf_nat_ftp?
- Нужно ли включать echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper?
Понимаю, что косяков много. Копаю, учусь.