Есть сервер (шлюз + www и ftp сервер).
Начинка:
железо - Celeron 850, 256 озу, 2 сетевых платы 3Com-905C.
Софт:
FreeBSD 4.7-RELEASE, пересобрано ядро с опциями:
maxusers 128
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
закомментированы строки, связанные со scsi, usb
/etc/rc.conf:
ifconfig_xl0="DHCP"
ifconfig_XL1="inet 192.168.1.1 netmask 255.255.255.0"
defaultroute 62.165.43.251
named_enable="YES"
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/firewall/fwrules"
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="NO"
ppp_user"root"
natd_enable="YES"
natd_interface=tun0"
natd_falgs=""
/etc/firewall/fwrules:
fwcmd="/sbin/ipfw -q"
net="192.168.1.0/24"
$fwcmd -f flush
$fwcmd add pass tcp from any to any 22
$fwcmd add pass tcp from any 22 to any
$fwcmd add divert natd icmp from any to any via tun0
$fwcmd add divert natd all from any to any via tun0
$fwcmd add allow all from any to any via lo0
$fwcmd add pass all from any to any via xl0
$fwcmd add pass all from any to any via xl1
$fwcmd add pass icmp from any to any
# Allow FTP for local users
$fwcmd add pass tcp from any 20,21 to $net in via tun0
$fwcmd add pass tcp from any 49152-65535 to $net in via tun0
# Allow any outgoing connections
$fwcmd add pass tcp from me to any out via tun0
$fwcmd add pass tcp from any to me in via tun0 established
$fwcmd add pass udp from me to any 53 out via tun0
$fwcmd add pass udp from any 53 to me in via tun0
#server
$fwcmd add pass tcp from any 21,22,25,53,110,10000 to $net in via tun0
$fwcmd add pass tcp from $net to any 21,22,25,53,110,10000 out via tun0
# Allow incoming connections to this ports
$fwcmd add pass tcp from any to me 21,25,53,80,110,123,443,10000 in via tun0
$fwcmd add pass tcp from me 21,25,53,80,110,123,443,10000 to any out via tun0
$fwcmd add pass tcp from any to me 49152-65535 in via tun0
$fwcmd add pass udp from any to me 53 in via tun0
$fwcmd add pass udp from me 53 to any out via tun0
$fwcmd add pass udp from any to any 33434-33523 via tun0
# Log all denied connections
$fwcmd add deny log all from any to any
/etc/natd.conf
use_sokets yes
same_ports yes
Также стоит squid 2.4 собранный с опцией ncsa_auth (хотя на проблему не влияло)
proftpd кртится c использованием inetd
Теперь ближе к сути дела:
При заливке по ftp 8,5 мб заливается на приличной скорости. Далее происходит затык (перестает закачивать, будто при временном обрыве связи). Можно открыть клиентом еще одну ftp-сессию, и продолжить закачку. Успешно заливается так же, только 8,5мб. Далее следует затык. Лечится только убиванием процессов proftpd. Ограничений по объемам на закачивание не установлено.
Со Squid'ом та же ситуация. Клиент, сидящий в локальной сети за squid'ом может открыть 2-3 страницы. И все. Больше не может :) Браузер сообщает, что страница не найдена. Испытано с большим количество страниц, так что не в хостере дело. Огрничений на объем скачиваемой информации не установлено.
Пинги с любой стороны, размером до 1600 байт, проходят все время хорошо, даже когда ftp и www умирают. Процент потерь - 0.
'top' высокой загрузки процессора или памяти не показывает.
Лог dmesg имеет последней строчой (когда умирает squid):
pid 240 (squid), uid 65534: exited on signal 6
Лог ftp ничего не рассказывает про передачу файла, на которой загнулся.
Настройки firewall'а успешно используются на других серверах.
При установке портов с скачиванием из Интернета затыков не наблюдалось.
При просмотре сайта, висящего на сем сервере, проблем не возникало.
Всеуважаемый олл! Не дай пропасть... Проблему надо решить как можно быстрее, не то уволят к чертям :(
Надеюсь на Вас и уповаю.