sega78 29.04.2011 22:35
Есть проблема! — Проблема с доступом снаружи. [РЕШЕНО]
Доброго дня Вам.Постараюсь описать проблему вкратце:
Сменил на сервере FreeBSD 6 (не помню точно какую) на 8.2. Задача сервера почти стандартная для небольших компаний: раздача интернета в локалку, прокси (squid), почта (exim), ftp (ftpd), есть свой домен 2-го уровня. 2 сетевых карты - одна наружу к провайдеру, вторая внутрь.
Проверил все из локалки - работает как часы. Но филиалы компании, которые сидят снаружи и стучаться к нам через интернет за почтой и на фтп обнаружили интересную проблему: соединение проходит, а вот данные получить огромная проблема. В то же время по ssh и www данные получить можно (по крайней мере из дома спокойно подключался).
Так же заметил, что при подключении (здесь и далее буду говорить только о внешних подключениях) к серверу по фтп процесс natd кушает аж 100% WCPU.
Кусочки конфигов:
rc.conf
gateway_enable="YES"
inetd_enable="YES"
natd_program="/sbin/natd"
natd_enable="YES"
natd_interface="fxp0" #Внешний интерфейс
natd_flags="-m -u"
firewall_enable="YES"
firewall_script="/etc/rc.firewall.farm"
firewall_quiet="NO"
#фтп запускаю демоном, но пробовал и через inetd. Ничего не меняется.
ftpd_enable="YES"
ftpd_flags="-l -l"
rc.firewall.farm
# oif - внешний интерфейс (fxp0) oip - внешний ip (статика от провайдера)
# Enable divert
${fwcmd} add 300 divert natd tcp from any to any via ${oif}
${fwcmd} add 400 divert natd udp from any to any via ${oif}
${fwcmd} add 500 divert natd icmp from any to any via ${oif}
# Allow access to our FTP
${fwcmd} add 1100 pass tcp from any to ${oip} 20 setup
${fwcmd} add 1200 pass tcp from any to ${oip} 21 setup
Среди остальных конфигов ничего необычного нет.
P.S. Читал уже очень много и интернета и гугла и манов, но идей уже просто не возникает, а мучаюсь уже три дня. Буду рад любой помощи и идеям, но прошу не советовать сменить софт.
P.P.S. Изменил
${fwcmd} add 300 divert natd tcp from any to any via ${oif}
${fwcmd} add 400 divert natd udp from any to any via ${oif}
${fwcmd} add 500 divert natd icmp from any to any via ${oif}
на
${fwcmd} add 300 divert natd tcp from not me to any via ${oif}
${fwcmd} add 400 divert natd udp from not me to any via ${oif}
${fwcmd} add 500 divert natd icmp from not me to any via ${oif}

+ 0 -
Как я понял , проблема только в фтп ? Если да то смотреть надо также на стороне клиента , так как при работе ftp через нат могут быть проблемы (стоит попробовать настроить ftp клиент в пассивный (активный) режимы) и посмотреть изменится ли что. Ну и серверную сторону забывать нестоит. Не понимаю почему "natd кушает аж 100%" до него не должно вообще доходить...
Проблема не только в фтп... Точно есть проблема с pop3 и ftp. Вероятно еще есть и проблема с www, но пока не отвлекаюсь на нее, так как считаю, что не в протоколе дело.
для проверки предлагаю влспользоваться tcpdumpом , попробуйте запустить его с параметром -i fxp0 port 20 and port 21 и инициализировать подключение из вне, вы сможете увидеть приходят ли пакеты , и если приходят , то идут ли в ответ.
Была похожая ситуация когда-то очень давно на бсд. Оказалось при обнавлении немного изменился синтаксис правил для фаервола из-за чего нат съедал 100% проца или что-то типа того. Собственно предлагаю проверить.
Помнится во FreeBSD 5.2.1 для требуемой работы ipfw нужно было пересобрать ядро. Возможно тут просто установилось дефолтное ядро
Взгляни на простенькую инструкцию - может чего пропустил.
Или, например, забыл файл исполняемым сделать.
Или, например, забыл файл исполняемым сделать.