Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Как правильно настроить Ubuntu/Linux шлюз на прохождение через него FTP трафика?  (Прочитано 1144 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн emptyr

  • Автор темы
  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
На компьютер установлен Ubuntu 16.04 с Gnome GUI с целью поднять на нём шлюз для прохождения через него интернет-трафика. Сразу скажу, что я новичёк в Линуксе, как таковом, до этого с Ubuntu дело не имел, как и Линуксом в целом. Прочитал в интернете статьи по настройке проброса портов, чтобы трафик шёл между двумя сетевыми интерфейсами. Так-то всё работает хорошо, устройства внутри сети за этим сервером имеют доступ в Интернет. Появилась другая проблема. Дело в том, что внутри самой локальной сети имеется роутер, к которому подключен USB жёсткий диск, роутер TP-Link Archer C50. До того, как я взялся за поднятие сервера, шлюзом работал этот конкретный роутер, и к его FTP серверу можно было обратиться как из локальной сети, так и из внешней, указывая белый адрес, выданный провайдером. Сейчас же, не совсем понимаю почему, но внутри локальной сети всё так же хорошо работает, а вот извне уже подключиться к FTP серверу локального роутера я хоть и могу, но мне сообщается о проблеме перечисления папок на сервере. Вот моя нынешняя конфигурация IPTables по пути /etc/rc.local:
(Нажмите, чтобы показать/скрыть)

Поясню по вышенаписанному:
1. enp6s1 - интегрированный сетевой интерфейс на материнской плате, который смотрит во внешнюю сеть, само собой, он должен получать настройки по DHCP от провайдера.
2. enx000ec6a60252 - сетевой интерфейс внешней USB сетевой карты, смотрящий в локальную сеть. Кабель от него идёт в роутер, от которого уже по Wi-Fi или Ethernet проводом связываются другие устройства с внешним миром.
3. 192.168.0.1 - IP адрес роутера TP-Link Archer C50, на нём работает среди прочих 21 и 80 порт. Оба отлично работают внутри локальной сети.
4. 192.168.0.2 - IP адрес сервера в режиме шлюза (Ubuntu 16.04), у которого как раз и имеются вышеописанные сетевые интерфейсы.

Как видно, я сделал проброс как FTP трафика (21 порт), так и веб-морды интерфейса роутера (80 порт). Интересно, что таким образом, если подключаться к 80 порту белого IP-адреса, то трафик успешно перенаправится на веб-морду роутера, я могу поработать с ним, как и обычно, но с FTP этот фокус не работает. Вот, что выдаёт консоль FileZilla:
(Нажмите, чтобы показать/скрыть)

Я точно вижу, что сервер принял данные авторизации (логин и пароль), но когда хочет перечислить список папок - вылетает в ошибку. Мне кажется, что дело в каких-то кривых конфигурациях IPTables.

UPD: FTP клиент WinSCP ещё больше подтвердил мои подозрения. Он выдаёт такую ошибку:
Цитировать
Server sent passive reply with unroutable address 192.168.0.1, using host address instead.
Канал передачи не может быть открыт. Причина: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
UPD2: Добавил в rc.local строки для 20 порта - ничего не поменялось... Я что-то не то явно пишу.
« Последнее редактирование: 25 Июля 2018, 15:17:52 от emptyr »

Оффлайн Extremal1981

  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Для полного понимания вопроса:

Активный и пассивный режим работы FTP

При работе по протоколу FTP между клиентом и сервером устанавливается два соединения – управляющее (по нему идут команды) и соединение передачи данных (по нему передаются файлы).
Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и говорит «Привет! Я хочу подключиться к тебе. Вот мое имя и мой пароль». Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.

В активном режиме, когда клиент говорит «Привет!» он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.

В пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных.

Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных. В активном режиме, клиент должен принять соединение от FTP-сервера. В пассивном режиме, клиент всегда инициирует соединение.


Тобишь если ваш ftp работает в активном режиме, то он должен будет подключиться к некоторуму динамическому порту к клиенту, но в вашем конфиге iptables есть строка:
iptables -t nat -A POSTROUTING -o enx000ec6a60252 -p tcp --dport 21 -d 192.168.0.1 -j SNAT --to-source 192.168.0.2собственно из за неё ftp сервер ничего не знает о реальном адресе клиента, и будет упорно стучаться на адрес 192.168.0.2. В любом случае эта строчка лишняя, если основной шлюз у вашего ftp сервера 192.168.0.2 ну и естсессно в этом случае ftp сервер должен иметь доступ в интернет с 20 порта.

Ну а если ftp работает в пассивном режиме, то тут нужно лезть в конфиг ftp и задавать статический порт для передачи данных в vsfpd.conf
pasv_min_port=1500
pasv_max_port=1500
pasv_enable=YES
ну и соответственно сделать на этот порт проброс из вне.



Дистрибутивы Linux - это как конструктор Lego, который даёт вам только кирпичики, и что из них вы построите зависит только от вас!
Удивительно, но это недостаток и преимущество одновременно

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.