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

FTP клиент с 1024 портом не может подключиться к серверу

 , ,


0

1

Всем привет! Есть два сервера:

  1. Новый Ubuntu 22.04.5 LTS
  2. Старый Ubuntu 20.04.2 LTS

На них запущены FTP серверы (pure-ftpd) в пассивном режиме (порты 10000-11000). Настройки ftp одинаковы. На обоих установлен ufw так же с одинаковыми правилами.

Почти все клиенты, в виде промышленного оборудования, успешно подключаются и передают файлы как на «старый», так и на «новый» серверы. Но есть пара клиентов использующих древние модемы в которых исходящий порт фиксирован и равен 1024. Эти клиенты могут взаимодействовать только со «старым» сервером. При попытке подключиться к «новому», модем выдает ошибку.
У других клиентов порт случайный в диапазоне 30000-60000. Они подключаются успешно.

Вопрос. Почему «старый» сервер обрабатывает подключения от клиента с портом 1024, а «новый» нет?

Результаты теста с другой машины:

hping3 -S -p 21 -s 1024 -k old_server_ip
en=44 ip=old_server_ip ttl=54 DF id=0 sport=21 flags=SA seq=0  win=64240 rtt=31.8 ms
hping3 -S -p 21 -s 1024 -k new_server_ip
тишина (с 1024, 1023 и ниже)

но с 1025 портом все работает

hping3 -S -p 21 -s 1025 -k new_server_ip
len=44 ip=new_server_ip ttl=50 DF id=0 sport=21 flags=SA seq=0 win=64240 rtt=31.9 ms

На новом tcpdump молчит с 1024 портом.

tcpdump -i any port 21 -n
netstat -tuln | grep :1024
нет вывода

Проверял не только на порте 21, но на всех открытых (20, 22, 80..)

Ответ на: комментарий от ALiEN175

Да, 1024 никто не слушает. Это порт клиента.
FTP сервер слушает 21 порт. Посмотрите на запрос SYNC

123.45.67.88.1024 > 152.34.78.99.21: Flags [S], cksum 0x021e (correct), seq 128001, win 5840, options [mss 536], length 0
152.34.78.99.21 > 123.45.67.88.177.1024: Flags [S.], cksum 0x8adb (incorrect -> 0x0f04), seq 2904120882, ack 128002, win 64240, options [mss 1460], length 0

Клиент с IP 123.45.67.88 и исходящим портом 1024 подключается к серверу 152.34.78.99 на порт 21. Это лог со старого (работающего) сервера. На новом сервере SYNC запросы от клиентов с портом 1024 не отображаются в tcpdump. Я не вижу их в логах. Если поставить у клиента порт 1025, то все норм. SYNC есть.
VPS провайдер утверждает что он не блокирует никакие порты.

Garoldy
() автор топика

Отключи ufw на новом сервере и проверь сможет ли проблемный клиент может к нему подключиться.
Напоминаю, что в ftp для получения/передачи данных требуется 2 tcp соединения и возможно проблема как раз со вторым соединением.
Запусти tcpdump на старом сервере и сравни подключение старого и нового клиента.
Трафик лучше всего сохранить («tcpdump -nvi any -s0 -w file.pcap tcp and port 21»), а потом его уже анализировать (например при помощи chaosreader).

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

Полагаю что дело не в ufw и pure-ftp. Смотрите. На старом сервере (рабочем) я закрыл pure-ftp. В ufw порт 21 разрешен. tcpdump следит за 21 портом.

На домашнем ПК запустил hping3. Ответы приходят. flag=RA. Все норм.

sudo hping3 -S -p 21 -s 1024 -k OLD_SERVER_IP
HPING OLD_SERVER_IP (enp5s0f0 OLD_SERVER_IP): S set, 40 headers + 0 data bytes
len=46 ip=OLD_SERVER_IP ttl=51 DF id=0 sport=21 flags=RA seq=0 win=0 rtt=35.9 ms
DUP! len=46 ip=OLD_SERVER_IP ttl=51 DF id=0 sport=21 flags=RA seq=0 win=0 rtt=1039.8 ms

В это время на сервере tcpdump выдает лог

sudo tcpdump port 21
17:44:51.433582 IP MY_PC_IP.1024 > OLD_SERVER_IP.ftp: Flags [S], seq 1753722940, win 512, length 0
17:44:51.433734 IP OLD_SERVER_IP.ftp > MY_PC_IP.1024: Flags [R.], seq 0, ack 1753722941, win 0, length 0
17:44:52.433727 IP MY_PC_IP.1024 > OLD_SERVER_IP.ftp: Flags [S], seq 2074744841, win 512, length 0
17:44:52.433801 IP OLD_SERVER_IP.ftp > MY_PC_IP.1024: Flags [R.], seq 0, ack 321021902, win 0, length 0

Далее. Если в ufw добавить правило блокирующее 21 порт, то произойдет следующее. На домашнем ПК ответов не будет

sudo hping3 -S -p 21 -s 1024 -k OLD_SERVER_IP
здесь ничего не происходит

На сервере tcpdump печатает лог

17:45:52.385519 IP MY_PC_IP.1024 > OLD_SERVER_IP.ftp: Flags [S], seq 1463070252, win 512, length 0
17:45:53.385567 IP MY_PC_IP.1024 > OLD_SERVER_IP.ftp: Flags [S], seq 2140791741, win 512, length 0

Считаю это нормальным поведением.

Теперь новый сервер. При любом состоянии ufw и pure-ftp, tcpdump не печатает запросы, если у подключающегося клиента исходящий порт <= 1024. pure-ftp и второе tcp подключение вообще никак не влияет. Можно для тестов взять не 21 порт, а 80. Все тоже самое. До сервера не доходит даже TCP SYNC.

Еще заметил, если на новом сервере (неисправном) запустить пинг старого сервера (исправного): sudo hping3 -S -p 21 -s 1024 -k OLD_SERVER_IP, то ответов нет. На старом сервере tcpdump ничего не выводит.

Если на новом запустить сервер: python3 -m http.server 1024, то внешние клиенты успешно подключаются к 1024 порту, но только если у них исходящий порт >1025.

В каких логах, помимо tcpdump, можно увидеть где могут теряться запросы?

Подскажите, может ли что-то в Линукс фильтровать трафик до tcpdump?

Старый сервер - выделенный, новый - VPS. Можно ли как-то проверить что проблема не на стороне провайдера?

Повторюсь, если для всех этих тестов использовать исходящий порт >= 1025, то никаких проблем нет. Но мне нужен именно 1024 из-за старого оборудования.

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

cat /proc/net/dev

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo: 21672339361 36421030    0    0    0     0          0         0 21672339361 36421030    0    0    0     0       0          0
  eth0: 48971336963 5881749    0    0    0     0          0         0 980261709 4166384    0    0    0     0       0          0

На сервере и клиенте errs и drop ==0

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

Провайдер GoDaddy. Не знаю чем они руководствовались. Временным решением является промежуточный FTP сервер, который пускает клиентов с 1024 портом и пересылает файлы на проблемный сервер. Я тут подумал, а существует ли FTP прокси?

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

какая дичь. никогда не догадаешься, какие фантазии бывают у провайдеров.

а они об этом предупреждают юзеров, когда предлагают свои услуги?

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Обычно нет. Многие из провайдеров, перекрывающие порты, не только не предупреждают пользователей, но и при обращении к ним первый делом играют в несознанку, типа «мы ничего не перекрываем». Иногда быстрее на форумах найти ответ, что этот провайдер фильрует, чем от провайдера добиться признания.

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

ну вот я недавно пытала админа домру, до которого дозванивалась два часа через дебильных роботов, потом через таких же непонимающих меня суппортов первой линии. а админ просто продиктовал список портов, которые они блочат, и примерно пояснил, почему. очевидно, для защиты юзеров, у которых не хватает скиллов настроить роутер. я на всякий случай опубликовала эти порты, чтобы люди были в курсе. а то эта информация нигде не написана вообще.

мне это нужно было для разделения случаев вероятного вмешательства провайдера от хаотичного вредительства роскомпозора.

а то бывает бьёшься с настройками сети, а она не работает по независящим от тебя внешним причинам.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Ну, это вам ещё повезло. В какой-то момент ведь был домру и свежекупленые им конвекс и акадо(олимпус). И был бардак с переделкой/перенастройкой, что они сами не знали, что фильтруют и зачем.

Ну и нормальная первая линия не даст связи с админом :) Вон Дмитрий Бачило ролик на Ютуб выкладывал и только после этого что-то решилось.

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

вот я из конвекса туда и попала. а за несколько лет до этого конвекс скупил того провайдера, у которого я изначально регистрировала сеточку. так что в домру я попала ну вообще не по своей воле. и более дебильного сервиса пока не встречала.

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

Именно так все и было. Первое обращение к провайдеру закончилось примерно таким сообщением: «Мы ничего не блокируем, все порты открыты. Если вам нужна помощь в настройке вашего сервера, переходите на соответствующий тарифный план (с соответствующей арендной платой). После этого наши инженеры посмотрят что там у вас с 1024 портом.»

Были некоторые сомнения, что проблема на стороне провайдера, так как про блокировку 1024 порта не было информации ни на форумах, ни во всяких FAQ от GoDaddy.

Оборудованию уже лет 20. Сменился не первый сервер. Впервые узнали что у некоторых модемов фиксированный 1024 порт и что с ним может быть проблема.

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

Не лучше ли просто провайдера сменить, если он упёрто некорректные конфиги файрволла навязывает?

Ну или всё-таки попытаться их вразумить перед этим, несмотря на то что это крупная компания.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)