![Smile :)](./images/smilies/icon_e_smile.gif)
Да и с публикованием локального ftp тоже проблем не мало, лечится опять же костылем в виде ftp-proxy, когда в ipfw это опять же просто работает
![Smile :)](./images/smilies/icon_e_smile.gif)
pf nat не сможет пропустить через себя ftp-passive трафик от клиента к внешнему ftp в интернете, т.к. клиенту не удастся выполнить команду ftp PORT, внутри пакета будет локальный ip клиента, который уйдет удаленному серверу, в результате чего сервер не сможет ответить клиенту на запрос. Чтобы все заработало нужно, чтобы NAT поменял ip адрес и внутри пакета. Это называется ftp-ALG, как я уже в ipfw это делает libalias с помощью библиотеки, /lib/libalias_ftp.so. В других реализациях NAT'а есть подобные реализации, не буду перечислять все, вопрос не о том
![Smile :)](./images/smilies/icon_e_smile.gif)
Та же проблема есть и у SIP трафика, например чтобы Asterisk смог соединиться с удаленным сервером провайдера, нужно сказать pf nat'у (если быть точным то это скорее PAT, чем NAT), чтобы он не изменял порты - опция static-port (с этой опцией pf nat будет как классический NAT), но на этом решение проблемы с SIP через pf nat не заканчивается, нужно будет еще сделать проброс RTP портов, а в настройках Asterisk сделать так, чтобы внутри SIP пакетов отправлялся IP роутера с pf nat. Только после этих манипуляций все заработает
![Smile :)](./images/smilies/icon_e_smile.gif)
И точно такая же проблема у GRE трафика, в случае когда клиенты хотят подключиться к VPN серверу по PPTP, с L2TP проблем не возникает, но в моей практике очень много именно PPTP соединений. Поэтому решающим был переход на ipfw, хотя pf вроде как всем устраивал, не смотря на все костыли
![Smile :)](./images/smilies/icon_e_smile.gif)
Может я чего упустил конечно, но ftp-proxy использую не я один, и проблема тут явно есть, потому что сам протокол ftp так устроен.
Вот я и заглянул сюда, узнать у знающих гуру, как они борятся с VPN через PPTP
![Smile :)](./images/smilies/icon_e_smile.gif)
P.S. Пользователи подключаются к удаленным VPN реализованным на mpd под FreeBSD, но думаю тут особой разницы нет, т.к. проблема не в реализации и сервере, а в протоколе и тем, как его обрабатывает pf nat.
![Smile :)](./images/smilies/icon_e_smile.gif)
Пощупав год pf nat пришел к выводу, что он просто PAT и ничего больше, меняет локальные ip на свой Ip только в заголовках пакетов, в тело пакета никогда не вмешивается, как это делает libalias и т.п. вещи.
Те, кто решился использовать pf nat, будьте готовы к тому, что некоторые специфические протоколы откажутся работать, например h323, sip, ftp-passive, gre. С некоторыми еще можно как-то бороться, а вот с gre мне так и не удалось решить проблему(кроме как делать на каждый удаленный сервер свой редирект).