LINUX.ORG.RU
решено ФорумAdmin

FTP в активном режиме

 ,


2

1

Добрый день! Помогите разобраться с FTP. Настроил сервер на Debian 9. Squid, bind, iptables - все работает исправно. Сервер имеет 3 интерфейса: enp1s1 - интернет, IP динамический enp1s5 - рабочие сайты, адрес 10.6.85.66 enp1s8 - локальная сеть, адрес 10.6.85.99 Шлюз по умолчанию провайдера.

Настройки машин в локалке такие: IP 10.6.85.2-250 MASK 255.255.255.0 GW 10.6.85.99

Для доступа к рабочим сайтам добавил правило маршрутизации post-up route add -net 10.1.0.0/24 dev enp1s5 Все работает. Еще есть рабочий FTP-сервер с адресом 10.6.64.2 и вот с ним и проблема. Когда пытаюсь добавить похожее правило маршрутизации, то соединение идет и, видимо, когда сервер пытается подключится к указанному порту, оно разрывается. Если выставить пассивный режим, то клиент подключается, но работает дико медленно. Что сделать, что б работал активный режим?

# The loopback network interface
auto lo
iface lo inet loopback

#Local Network
auto enp1s8
iface enp1s8 inet static
address 10.6.85.99
netmask 255.255.255.0

#Internet Connection
allow-hotplug enp1s1
iface enp1s1 inet dhcp

#Infocom Connection
auto enp1s5
iface enp1s5 inet static
address 10.6.85.66
netmask 255.255.255.0

#Static routes
post-up route add -net 10.1.0.0/24 dev enp1s5
post-up route add -host 10.6.64.2 dev enp1s5 (это работает с пассивым режимом)
*filter
:INPUT DROP [15:1170]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:831]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 10.6.85.0/24 -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -s 10.6.85.0/24 -j ACCEPT
COMMIT
# Completed on Fri Feb 15 11:11:43 2019
# Generated by iptables-save v1.6.0 on Fri Feb 15 11:11:43 2019
*nat
:PREROUTING ACCEPT [114:9566]
:INPUT ACCEPT [46:2497]
:OUTPUT ACCEPT [103:7689]
:POSTROUTING ACCEPT [103:7689]
:squid -
-A PREROUTING -s 10.6.85.0/24 -p tcp -m multiport --dports 80,8080,443 -j squid
-A POSTROUTING -s 10.6.85.0/24 -j MASQUERADE
-A squid -p tcp -m multiport --dports 80,8080 -j REDIRECT --to-ports 3128
-A squid -p tcp -m multiport --dport 443 -j REDIRECT --to-ports 3129
COMMIT

Модули ip_conntrack_ftp и ip_nat_ftp загружены.



Последнее исправление: Alkantel (всего исправлений: 2)

У вас какая-то ерунда. На enp1s8 и enp1s5 адреса из одной подсети. В iptabls политики ACCEPT, но зачем-то понаписаны правила с ACCEPT и нет правил с DROP. Включен MASQUERADE для всех соединений от 10.6.85.0/24, хотя, судя по всему, несколько локальных сетей, то есть MASQUERADE и в локальные сети. Скорее всего, не загружены модули для NAT'а протокола ftp и из-за этого проблемы.

видимо, когда сервер пытается подключится к указанному порту, оно разрывается.

Ну дак запускаете tcpdump'ы на разных интерфейсах и смотрите какие пакеты куда идут и куда идут ответные.

mky ★★★★★
()
Ответ на: комментарий от mky

Про ACCEPT в FORWARD это косяк. Там DROP стоит. Я отключил, хотел посмотреть пойдет ли связь в таком случае.

Про MASQUERADE важное уточнение, допишу. Спасибо.

Если Вы про ip_conntrack_ftp и ip_nat_ftp, то они загружены. Забыл уточнить.

Видимо надо смотреть на tcpdump'ы. Спасибо.

Alkantel
() автор топика
Ответ на: комментарий от Alkantel

ip_conntrack_ftp и ip_nat_ftp

Они же давно называются nf_nat_ftp. Не знаю, как там по умолчанию в Дебиан 9, но на новых ядрах загрузка модуля типа conntrack helper ничего не даёт, признаком чего является начилие в выводе ″dmesg″ строки:

nf_conntrack: default automatic helper assignment has been turned off...
И если такая строка есть, то нужно добавить правило типа:
iptables -A PREROUTING -p tcp -m tcp --dport 21 -j CT --helper ftp

mky ★★★★★
()

Эти 2 строчки меня спасли. Для использования модуля iptables nf_conntrack_helper надо установить значиние 1 в nf_conntrack_helper

echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper
что бы оно не сбрасывалось после ребута
echo "options nf_conntrack nf_conntrack_helper=1" >> /etc/modprobe.d/local.conf

Alkantel
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.