Как я понял проходит запрос а данные не идут. Как быть? Поместить tftpd и клиентов в одной подсети невозможно.
> Как быть?SNAT, DNAT
>> Как быть?
> SNAT, DNATТак белые сети и там и там, не совсем понимаю как мне поможет nat.
>>> Как быть?
>> SNAT, DNAT
> Так белые сети и там и там, не совсем понимаю как мне
> поможет nat.что tftn-сервер и прям в инет глядид без всяких ограничений? и клиент тоже?
что прям вот такая схема соединения выходит?:
[tftp-servet WAN_IP1]-[inet]-[WAN_IP2 tftp-client]
> Как я понял проходит запрос а данные не идут.а как понял?
>Как быть?
может для начала маршруты в обе стороны проверить?
>Поместить tftpd и клиентов в одной подсети невозможно.
Дайте названия OC на сервере и клиенте. Так же названия tftp-программ на сервере и клиенте.
>> Как я понял проходит запрос а данные не идут.
> а как понял?
>>Как быть?
> может для начала маршруты в обе стороны проверить?
>>Поместить tftpd и клиентов в одной подсети невозможно.
> Дайте названия OC на сервере и клиенте. Так же названия tftp-программ на
> сервере и клиенте.tftpd стандартный freebsd, с другой стороны пробовал много чем. Например winagents tftp client. Понял, потому что запущен сервер в режиме создание новых файлов при их отсутствии, и при попытке сделать put он создает требуемый файл, а вот данные в него не грузит.
И кстати да, я наврал - нат таки есть. Попробовал просто с белыми адресами - всё ходит. В итоге и правда трабл с натом, но мне не совсем понятно что делать.
>[оверквотинг удален]
>>>Поместить tftpd и клиентов в одной подсети невозможно.
>> Дайте названия OC на сервере и клиенте. Так же названия tftp-программ на
>> сервере и клиенте.
> tftpd стандартный freebsd, с другой стороны пробовал много чем. Например winagents tftp
> client. Понял, потому что запущен сервер в режиме создание новых файлов
> при их отсутствии, и при попытке сделать put он создает требуемый
> файл, а вот данные в него не грузит.
> И кстати да, я наврал - нат таки есть. Попробовал просто с
> белыми адресами - всё ходит. В итоге и правда трабл с
> натом, но мне не совсем понятно что делать.после установки связи на стандартный порт 69 и получения команды, для передачи/приема данных tftp-сервер выбирает произвольный UDP-порт. этот порт скорее всего закрыт по умолчанию в ipfw для входящих пакетов (посылаемых клиентом для передачи данных). => надо подгружать модули сетевого фильтра для поддержки этого протокола.
я по bsd не спец - не могу точно сказать, что сделать, но проблема очевидно в этом. т.е какой-то модуль ядра или ipfw должен отслеживать командный канал по порту 69 и автоматически открывать порт для связанных соединений на пердачу данных.
PS
ИМХО Вам просто надо нагуглить нужный модуль и подгрузить его.
>[оверквотинг удален]
> после установки связи на стандартный порт 69 и получения команды, для передачи/приема
> данных tftp-сервер выбирает произвольный UDP-порт. этот порт скорее всего закрыт по
> умолчанию в ipfw для входящих пакетов (посылаемых клиентом для передачи данных).
> => надо подгружать модули сетевого фильтра для поддержки этого протокола.
> я по bsd не спец - не могу точно сказать, что сделать,
> но проблема очевидно в этом. т.е какой-то модуль ядра или ipfw
> должен отслеживать командный канал по порту 69 и автоматически открывать порт
> для связанных соединений на пердачу данных.
> PS
> ИМХО Вам просто надо нагуглить нужный модуль и подгрузить его.Всё верно, и с этого произвольного порта идет попытка ответить клиенту, а нат не знает куда транслировать этот ответ, т.к. у него в таблице трансляции есть только 69 порт. Походу решением тут будет заставить сервер отвечать тоже по 69 порту. Вот только какой демон tftpd под фрибсд так умеет?
>[оверквотинг удален]
>> но проблема очевидно в этом. т.е какой-то модуль ядра или ipfw
>> должен отслеживать командный канал по порту 69 и автоматически открывать порт
>> для связанных соединений на пердачу данных.
>> PS
>> ИМХО Вам просто надо нагуглить нужный модуль и подгрузить его.
> Всё верно, и с этого произвольного порта идет попытка ответить клиенту, а
> нат не знает куда транслировать этот ответ, т.к. у него в
> таблице трансляции есть только 69 порт. Походу решением тут будет заставить
> сервер отвечать тоже по 69 порту. Вот только какой демон tftpd
> под фрибсд так умеет?никакой. tftp-сервер не может использовать порт 69 для передачи данных - это порт для передачи команд от пользователя. если сервер будет использовать данный порт для передачи данных, то на все время передачи он будет заблокирован и другой пользователь не сможет соединиться с сервисом. поэтому после получения команды ч/з порт 69 сервер для передачи данных открывает произвольный порт и обмен данными идет уже по нему. это специфика протокола: есть командный порт 69 (для установки соединения с сервером и пердачи ему команд) и есть порт для передачи данных (который в общем случае выбирается произвольно).
Еще раз: все что Вам нужно сделать - это подгрузить соответствующий модуль. Related connections и lsmod Вам о чем-нибудь говорит?
Покажу со своего линукса про ФТП, чтоб понятней было:
- тупо смотрю в каталоге модулей моего сетевого фильтра, есть ли что про ftp:
[root@localhost netfilter]# ls /usr/lib/modules/3.4.6-2.fc17.i686.PAE/kernel/net/ipv4/netfilter|grep ftp
nf_nat_ftp.ko
^^^^^^^^^^^^^
nf_nat_tftp.ko- смотрю какие модули для ftp подгружены в данный момент:
[root@localhost netfilter]# lsmod|grep ftp
nf_nat_ftp 12645 0
^^^^^^^^^^^^^^
nf_conntrack_ftp 14007 1 nf_nat_ftp
nf_nat 24339 2 nf_nat_ftp,iptable_nat
nf_conntrack 71517 6 nf_nat_ftp,nf_nat,xt_state,nf_conntrack_ftp,iptable_nat,nf_conntrack_ipv4как видите, для решения подобной же проблемы при работе с FTP, у меня подгружен соответствующий модуль - nf_nat_ftp. он тянет за собой загрузку зависимых модулей - в частности nf_conntrack_ftp. эти модули отслеживают какой порт сервер выбрал для обмена данными с конкретным клиентом и автоматом открывают его для пакетов, приходящих с адреса клиента. вот так (упрощенно) это работает.
как видите модуль nf_nat_tftp в моей системе тоже есть - можно использовать при желании.
где это во free расположено и как запускается при старте системы - спрашивайте у знатоков ОС (ну или гуглите - вроде я уже все что можно разжевал)
PS
возможен костыльный вариант: если конфигурация tftp-сервера разрешает указать диапазон портов, используемый для передачи данных, то можете просто эти порты открыть в ipfw для всех и навсегда (но тогда - Вы сам себе злобный буратино :).
> Еще раз: все что Вам нужно сделать - это подгрузить соответствующий модуль.
> Related connections и lsmod Вам о чем-нибудь говорит?...""в разных подсетях (FTP / FreeBSD)"" ///Как у них <<-"там" с conntracker-ами??
> [root@localhost netfilter]# ls /usr/lib/modules/3.4.6-2.fc17.i686.PAE/kernel/net/ipv4/netfilter|grep
> ftp
> nf_nat_ftp.ko
> ^^^^^^^^^^^^^
> nf_nat_tftp.ko
> ...""в разных подсетях (FTP / FreeBSD)"" ///Как у них <<-"там" с conntracker-ами??понятия не имею. я пояснил на пальцах как работает tftp и как это реализовано в Linux. Как на Free - не знаю (может там весь conntrack на отдельным демоне висит - хз). Я направление поиска дал - дальше дело знатоков данной ОС, если что-то добавят по конкретной реализации.
>> ...""в разных подсетях (FTP / FreeBSD)"" ///Как у них <<-"там" с conntracker-ами??
> понятия не имею. я пояснил на пальцах как работает tftp и как
> это реализовано в Linux. Как на Free - не знаю
> (может там весь conntrack на отдельным демоне висит - хз). Я
> направление поиска дал - дальше дело знатоков данной ОС, если что-то
> добавят по конкретной реализации.tftp везде одинаково работает, во freebsd нет модулей а-ля conntrack,
можно посмотреть в сторону tftp-proxy + pf для случая с NATгонять tftp через NAT... :(
Всем большое спасибо. Особенно LSTemp.
> Всем большое спасибо. Особенно LSTemp.вообще-то действительно странно... обычно tftp используют для снятия конфигов с оборудования и оно (как првило) расположено в той же сети. м/ду сетями для этих целей обычно пользуют ssh (или телнет по тунелю в крайнем случае). Вы уврены, что Вам именно tftp нужен? Без него никак?
>>> ...""в разных подсетях (FTP / FreeBSD)"" ///Как у них <<-"там" с conntracker-ами??
>> понятия не имею. я пояснил на пальцах как работает tftp и как
>> это реализовано в Linux. Как на Free - не знаю
>> (может там весь conntrack на отдельным демоне висит - хз). Я
>> направление поиска дал - дальше дело знатоков данной ОС, если что-то
>> добавят по конкретной реализации.
> tftp везде одинаково работает, во freebsd нет модулей а-ля conntrack,
> можно посмотреть в сторону tftp-proxy + pf для случая с NAT
> гонять tftp через NAT... :(спасибо, lavr.