Ребята, помогите с таким вопросом... есть шлюз 1.1.1.1 есть ftp сервер в локальной сети за шлюзом 192.168.1.200 открываю порт на шлюзе : $IPT -t filter -A INPUT -p tcp -m tcp --dport 65504 -j ACCEPT пробрасываю: $IPT -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 65504 -j DNAT --to-destination 192.168.1.200:21 лог filezilla: Code: Статус: Соединяюсь с 1.1.1.1:65504... Статус: Соединение установлено, ожидание приглашения... Ответ: 220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- Ответ: 220-You are user number 2 of 3 allowed. Ответ: 220-Local time is now 20:28. Server port: 21. Ответ: 220 You will be disconnected after 10 minutes of inactivity. Команда: USER admin Ответ: 331 User ssdtux OK. Password required Команда: PASS ************** Ответ: 230 OK. Current restricted directory is / Команда: SYST Ответ: 215 UNIX Type: L8 Команда: FEAT Ответ: 211-Extensions supported: Ответ: EPRT Ответ: IDLE Ответ: MDTM Ответ: SIZE Ответ: REST STREAM Ответ: MLST type*;size*;sizd*;modify*;UNIX.mode*;UNIX.uid*;UNIX.gid*;unique*; Ответ: MLSD Ответ: ESTP Ответ: PASV Ответ: EPSV Ответ: SPSV Ответ: ESTA Ответ: AUTH TLS Ответ: PBSZ Ответ: PROT Ответ: 211 End. Статус: Server does not support non-ASCII characters. Статус: Соединение установлено Статус: Получение списка каталогов... Команда: PWD Ответ: 257 "/" is your current location Команда: TYPE I Ответ: 200 TYPE is now 8-bit binary Команда: PASV Ответ: 227 Entering Passive Mode (10,60,0,20,216,254) Статус: Сервер отправил пассивный ответ с неопределяемым адресом. Использую существующий адрес сервера. Команда: MLSD Ошибка: Превышено время ожидания соединения Ошибка: Не могу получить список каталогов! я втычу... что делать с 20 портом ftp?....думаю что то я не доделал....
Пассивный FTP в настройках ftp сервера смотрим pasv_min_port и pasv_max_port а также шлюз добавляем правило DNAT на --dport pasv_min_port:pasv_max_port в инете куча инфы по этому поводу.. Во-вторых я не вкурсе всех правил вашего netfilter, но разрешающее правило для INPUT в таблице filter - необязательно.. при попадани на шлюз пакеты обрабатываются в цепочке PREROUTING таблицы nat, где у них подменяется адрес назначения, а затем они сразу идут в таблицу FORWARD, так как не предназначены для данного устройства, и идут далее.. я могу где то ошибаться.. не всё понял в сообщении.. например: почему сревак и его шлюз в разных подсетях? и тп... могу только строить догадки))
вообщем обстановка такая. есть шлюз, и есть несколько подсетей. (vlanы) в одном из виланов находится фтп сервер, который нужно выбросить наружу через шлюз. из за этого и разные ip. в пассивмоде:Use the default port range (55536~55663) каким образом должно выглядеть правило?... допустим лист стены чистый, полиси инпут, в дроп. и в нем только нат на внутреннею сетку (виланы) и эти 2 правила на фтп сервер. что еще нужно добавить ?
тебе нужно прокинуть 21 прот для управляющего соединения Это правило гласит, что все пакеты пришедшие на 1.1.1.1 (ваш внешний ip), подвергнуться подмене адреса назначения и будут вытолкнуты в локальную сеть.. ок.. прокинуто! теперь твой ftp сервер открывает порт из диапазона 55536:55663 и ждет входящего соединения для передачи данных, поэтому нужно прокинуть и их тоже теперь всё должно быть хорошо.. правило вообще удали.. оно не будет отрабатывать, так как после nat PREROUTING пакеты пойдут в FORWARD а не INPUT. Ибо они не предназначаются данному устройству. так что тут важна политика FORWARD.. по умолчанию она accept.. в итоге у тебя должно получиться 2 правила DNAT и если политика FORWARD - drop, то еще два для перекидывания с интерфейса на интерфейс PS: могу ошибаться в синтаксисе! я работаю с железками, а там свой линукс