Psy Posted May 26, 2003 Posted May 26, 2003 Народ, подскажите... Хочу поставить на свой сервер по управлением freebsd 4.8 второй жесткий диск, чтобы на нем был файловый архив. У меня стоит 2 сетевухи, rl0 повернута в сторону сети и на ней dummynet режет трафик. Вопрос как указать системе, что с внутреннего фтп можно отпускать трафик быстрее, чем с интернета? Вставить ник Quote
YuryD Posted May 27, 2003 Posted May 27, 2003 так скажи думминету что локальный ftp сидит на rl0 С левым адресом это один пайп, остальные в другой пайп Вставить ник Quote
Psy Posted May 27, 2003 Author Posted May 27, 2003 То есть ты хочешь сказать, что если адрес сервера 192.168.0.1 - сказать что ftp находится например на 192.168.0.2 (адрес видимо значения не имеет?). Будет ли это выглядеть так: ipfw pipe 1 config bw 512000 ipfw add 1 pipe 1 ip from 192.168.0.2 to 192.168.0.1/24 via rl0 Не совсем пойму как это будет работать, может надо что-то добавить в правило? Вставить ник Quote
YuryD Posted May 27, 2003 Posted May 27, 2003 Ну почему не будет работать, будет, только ты для всех коннекций с 192.168.0.2 общее правило зажима написал - то есть всем поровну получилось. А добавил бы я delay ... Вставить ник Quote
Psy Posted May 27, 2003 Author Posted May 27, 2003 Спасибо за ответы, но вопросы не кончились... А как присвоить внутресерверному фтп адрес напр. 192.168.0.2? Можно, пожалуйста поподробнее про delay? Можно ли с помощью маски создать отдельный pipe для каждого соединения? Вставить ник Quote
YuryD Posted May 27, 2003 Posted May 27, 2003 в предыдущей теме см mask dst-ip в man ipfw ipfw pipe 1 config mask src-ip 0x000000ff bw 200Kbit/s ipfw pipe 2 config mask dst-ip 0x000000ff bw 200Kbit/s Про IP - если ftp штатный то он будет слушать на всех адресах маршрутизатора... или man ifconfig alias, если иной нужен (грабли в слове netmask для alias в той-же сети :-)) Proftpd умеет по разным ip по разному отвечать Delay полезен при in когда клиенты nmap запускают... Вставить ник Quote
Psy Posted May 27, 2003 Author Posted May 27, 2003 Будет штатный, но ведь по умолчанию он будет на адресе.... У меня появилась идея, а если записать правило для порта: ipfw add 1 pipe 1 ip from 192.168.0.1 to 192.168.0.1/24 via rl0 ipfw pipe 1 config mask src-port 0x000000ff bw 1000Kbit/s ipfw pipe 2 config mask dst-port 0x000000ff bw 1000Kbit/s куда здесь впихать 21 порт, чтобы трафик резался с внутресерверного (192.168.0.1) штатного фтп? Спасибо.. Вставить ник Quote
YuryD Posted May 27, 2003 Posted May 27, 2003 ну так proto наверное не ip а tcp а уж куда port ftp-data а не ftp(21) подставить.... Вставить ник Quote
Psy Posted May 27, 2003 Author Posted May 27, 2003 Слушай, я вообще новичок во freebsd и прочих unix-ах, и иногда у меня после твоих ответов становится лишь больше вопросов. ipfw add 1 pipe 1 tcp from 192.168.0.1 to 192.168.0.1/24 via rl0 ipfw pipe 1 config mask src-port ftp-data 0x000000ff bw 1000Kbit/s ipfw pipe 2 config mask dst-port ftp-data 0x000000ff bw 1000Kbit/s Так это будет выглядеть или как-то подругому? Спасибо.. Вставить ник Quote
YuryD Posted May 27, 2003 Posted May 27, 2003 Порт можно в 1-м правиле подставить, типа (ftp-data это 20-й порт) ipfw add 1 pipe 1 tcp from 192.168.0.1 20 to 192.168.0.1/24 via rl0 при этом этот пайп будет только на ftp-data сразу создан, без дальнейшего анализа, но можно и так как у тебя.А вообще - пробуй все на месте, только в rc.* не помещай - если что перезагрузишься и дальше... И не боись, FreeBSD сломать совсем очень нелегко, легче самого себя зафайерволить :-))) Да и посмотри в сторону ProFTP - мощная штука. Вставить ник Quote
Psy Posted May 27, 2003 Author Posted May 27, 2003 Большое спасибо 2 YuryD Сегодня вечером буду пытаться, надеюсь все будет как надо... :) Вставить ник Quote
YuryD Posted May 27, 2003 Posted May 27, 2003 Вдогонку - в твоем варианте будет не по IP, а по каждой ftp-data, а ftp-сессий с одного адреса можно много открыть ...а второе правило работать не будет никогда, если у юзеров своего ftp нету ipfw pipe config mask src-port ftp-data 0x000000ff bw 1000Kbit/s Вставить ник Quote
Psy Posted May 27, 2003 Author Posted May 27, 2003 то есть ты хочешь сказать, что если один хост откроет несколько фтп сессий, то они будут просуммированы? Вот этого как рах и не хотелось бы... как бы сделать так, чтобы создавался один pipe на один хост не шире 1000Kbit/s.?? Вставить ник Quote
YuryD Posted May 27, 2003 Posted May 27, 2003 ipfw add 1 pipe 1 tcp from 192.168.0.1 20 to 192.168.0.1/24 via rl0 ipfw pipe 1 config mask dst-ip 0x000000ff bw 1000Kbit/s В этом варианте каждому IP из 192.168.0.0/24 будет ограничена ftp-data до 1000/8 килобайт/sec Вставить ник Quote
Psy Posted May 27, 2003 Author Posted May 27, 2003 А почему 20 а не 21, если это порт? или надо вначале будет задать переменную, если надо - то как ее следует записать? Что значит эта связка: 1000/8 И прошу прощения за навязчивозть и кажущуюся детскость вопросов... Вставить ник Quote
YuryD Posted May 27, 2003 Posted May 27, 2003 ftp используют 2 порта 21 -ftp control (команды) и ftp-data(20) по которому собственно данные и идут. насчет переменных и их подстановок в скриптах - это как тебе удобнее, но луче всего комметировать что ты делаешь.. А 1000/8 это пересчет из килобит в кило(граммы)байты :-))) Клиенты иногда плохо понимают эту разницу Вставить ник Quote
Psy Posted May 27, 2003 Author Posted May 27, 2003 YuryD, Сдушай а вот еще вопрос из предыдущей эхи, может знаешь решение? Мой внешний интефейс сервера получает настройки с дхцп провайдера, так вот если я загружаю сервак, а в это время соединения с сервером провайдера нет - то соответственно мой сервак загружается без настроек (получить неоткуда), так вот как сделать, что если он сначала загрузился без настроек, то чтобы потом периодически опрашивал dhcp на внещнем интерфейсе. А то при условиях удаленного администрирования, да еще со строны внешенго интерфейса сводят все на нет.. Заранее благодарен.. Вставить ник Quote
YuryD Posted May 28, 2003 Posted May 28, 2003 Ну ладно, а провайдер-то что дает PPP PPPoE или Ethernet голый ? Вот вариант - интерфейсы поднимай при запуске, дальше по крону пускай какой-нибудь скрипт, проверяющий канал во внешний мир. Если канала нет, то либо линку DOWN/UP, либо ppp stop/start Вставить ник Quote
Psy Posted May 28, 2003 Author Posted May 28, 2003 Сейчас провайдер дает ethernet, подскажи пожалуйста как можно сделать скрипт, чтобы забить его в крон.. Вставить ник Quote
YuryD Posted May 28, 2003 Posted May 28, 2003 #!/bin/sh # PINGHOST - это чего пингуешь, лучше IP чем имя (вдруг DNS нету) берем из строки как параметр #или явно присвой #PINGHOST=192.168.0.1 PINGHOST=$1 RESULT=`/sbin/ping -q -c10 $PINGHOST | /usr/bin/grep loss |/usr/bin/awk '{print $7}'` if [ "$RESULT" = "0%" ] then # /bin/echo "Ok" else /bin/echo "Host Down $RESULT loss" # do something to restart fi Вставить ник Quote
Psy Posted May 28, 2003 Author Posted May 28, 2003 А пинговать gateaway провайдера? В моем случае, если гэйт провайдера 192.168.255.254, будет ли это выглядеть так: #!/bin/sh #PINGHOST - это чего пингуешь, лучше IP чем имя (вдруг DNS нету) берем из #строки как параметр #или явно присвой #PINGHOST=192.168.255.254 PINGHOST=$1 RESULT=`/sbin/ping -q -c10 $PINGHOST | /usr/bin/grep loss |/usr/bin/awk '{print $7}'` if [ "$RESULT" = "0%" ] then # /bin/echo "Ok" else /bin/echo "Host Down $RESULT loss" # do something to restart reboot Или что-то я напутал? А можно рестартить например dhcp клиента, чтобы без постоянной перезагрузки системы? Если да то как? Вставить ник Quote
YuryD Posted May 28, 2003 Posted May 28, 2003 Слегка напутал, # это признак комментария, поэтому надо писать PINGHOST=192.168.255.254 Далее потерян заключительный fi - это конец блока if-then-else-fi Ну и man по вашему dhcp клиенту на предмет сигналов для его рестарта, или сначала убить по killall dhclient а потом снова рестартануть Вставить ник Quote
Psy Posted May 28, 2003 Author Posted May 28, 2003 Спасибо за ответы, но еще пара уточняющих вопросов... #!/bin/sh PINGHOST=192.168.255.254 PINGHOST=$1 RESULT=`/sbin/ping -q -c10 $PINGHOST | /usr/bin/grep loss |/usr/bin/awk '{print $7}'` if [ "$RESULT" = "0%" ] then /bin/echo "Ok" else /bin/echo "Host Down $RESULT loss" if-then-else-fi # а надо ли писать полный путь к dhclient или просто написать dhclient killall dhclient # или killall /sbin/dhclient #а рестартить?: sh dhclient # или по-другому? Спасибо Вставить ник Quote
YuryD Posted May 28, 2003 Posted May 28, 2003 /usr/bin/killall dhclient убьет всех dhclient далее можно подождать для гарантии и снова запустить sleep 60 /sbin/dhclient Про скрипы выполняемые из crontab - всегда писать полные пути к вызываемым утилитам !!! потому что у юзера есть environment с путями поиска, а у /bin/sh этих путей может и не быть Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.