>что то думается то натд и механизм отслеживания команды PORT это разные
>уровни сетевой модели. дайте ссылку как натд отслеживает команду PORT.
>приведенные правила были для пассинвного фтп Немного покапавшись в natd выяснилось, что natd использует libalias(3). А
немного покопавшись в libalias выяснилось, что эта либа умеет отслеживать фтп команды.
(см /usr/src/sys/netinet/libalias/alias_ftp.c).
Alias_ftp.c performs special processing for FTP sessions under
TCP. Specifically, when a PORT/EPRT command from the client
side or 227/229 reply from the server is sent, it is intercepted
and modified. The address is changed to the gateway machine
and an aliasing port is used.
Так что можно сказать что natd так же отслеживает и меняет команды ftp.
Теперь на счет punch_fw. Читаем маны и видим.
man libalias(3):
PKT_ALIAS_PUNCH_FW
This option makes libalias `punch holes' in an
ipfirewall(4) based firewall for FTP/IRC DCC connections.
The holes punched are bound by from/to IP address and port;
it will not be possible to use a hole for another connec-
tion. A hole is removed when the connection that uses it
dies.
Ептыть.. можете в меня плюнуть если это не STATEFULL и если это не просто
динамическое создание временного правила в ipfw.
А вот опция -s
man natd:
-use_sockets | -s
Allocate a socket(2) in order to establish an FTP data or IRC
DCC send connection. This option uses more system resources,
but guarantees successful connections when port numbers con-
flict.
Она же в libalias(3):
PKT_ALIAS_USE_SOCKETS
This bit should be set when the packet aliasing host origi-
nates network traffic as well as forwards it. When the
packet aliasing host is waiting for a connection from an
unknown host address or unknown port number (e.g. an FTP
data connection), this mode bit specifies that a socket be
allocated as a place holder to prevent port conflicts.
Once a connection is established, usually within a minute
or so, the socket is closed.
И создает сокет (как написано для предотвращения конфилктов портов) на который
"соединяется" сервер со своего 20 порта.
Таки образом, если правла ipfw уже разрешают прохождение заначеных/разначеных
пакетов, то активный режим будет работать без дополнительных опций.