Jump to content

Recommended Posts

Posted

Народ, подскажите...

Хочу поставить на свой сервер по управлением freebsd 4.8 второй жесткий диск, чтобы на нем был файловый архив. У меня стоит 2 сетевухи, rl0 повернута в сторону сети и на ней dummynet режет трафик.

 

Вопрос как указать системе, что с внутреннего фтп можно отпускать трафик быстрее, чем с интернета?

Posted

так скажи думминету что локальный ftp сидит на rl0 С левым адресом это один пайп,

остальные в другой пайп

Posted

То есть ты хочешь сказать, что если адрес сервера 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

 

Не совсем пойму как это будет работать, может надо что-то добавить в правило?

Posted

Ну почему не будет работать, будет, только ты для всех коннекций с 192.168.0.2 общее

правило зажима написал - то есть всем поровну получилось. А добавил бы я delay ...

Posted

Спасибо за ответы, но вопросы не кончились...

А как присвоить внутресерверному фтп адрес напр. 192.168.0.2?

 

Можно, пожалуйста поподробнее про delay?

 

Можно ли с помощью маски создать отдельный pipe для каждого соединения?

Posted

в предыдущей теме см 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 запускают...

Posted

Будет штатный, но ведь по умолчанию он будет на адресе....

 

У меня появилась идея, а если записать правило для порта:

 

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) штатного фтп?

 

Спасибо..

Posted

ну так proto наверное не ip а tcp а уж куда port ftp-data а не ftp(21) подставить....

Posted

Слушай, я вообще новичок во 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

 

Так это будет выглядеть или как-то подругому?

 

Спасибо..

Posted

Порт можно в 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 - мощная штука.

Posted

Вдогонку - в твоем варианте будет не по IP, а по каждой ftp-data, а ftp-сессий с одного адреса

можно много открыть ...а второе правило работать не будет никогда, если у юзеров своего ftp нету

 

ipfw pipe config mask src-port ftp-data 0x000000ff bw 1000Kbit/s

Posted

то есть ты хочешь сказать, что если один хост откроет несколько фтп сессий, то они будут просуммированы? Вот этого как рах и не хотелось бы... как бы сделать так, чтобы создавался один pipe на один хост не шире 1000Kbit/s.??

Posted

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

Posted

А почему 20 а не 21, если это порт? или надо вначале будет задать переменную, если надо - то как ее следует записать?

 

Что значит эта связка:

1000/8

 

И прошу прощения за навязчивозть и кажущуюся детскость вопросов...

Posted

ftp используют 2 порта 21 -ftp control (команды) и ftp-data(20) по которому собственно данные и идут.

насчет переменных и их подстановок в скриптах - это как тебе удобнее, но луче всего комметировать

что ты делаешь..

 

А 1000/8 это пересчет из килобит в кило(граммы)байты :-))) Клиенты иногда плохо понимают эту разницу

Posted

YuryD, Сдушай а вот еще вопрос из предыдущей эхи, может знаешь решение?

 

Мой внешний интефейс сервера получает настройки с дхцп провайдера, так вот если я загружаю сервак, а в это время соединения с сервером провайдера нет - то соответственно мой сервак загружается без настроек (получить неоткуда), так вот как сделать, что если он сначала загрузился без настроек, то чтобы потом периодически опрашивал dhcp на внещнем интерфейсе.

 

А то при условиях удаленного администрирования, да еще со строны внешенго интерфейса сводят все на нет..

 

Заранее благодарен..

Posted

Ну ладно, а провайдер-то что дает PPP PPPoE или Ethernet голый ?

 

Вот вариант - интерфейсы поднимай при запуске, дальше по крону пускай какой-нибудь скрипт,

проверяющий канал во внешний мир. Если канала нет, то либо линку DOWN/UP, либо ppp stop/start

Posted

Сейчас провайдер дает ethernet, подскажи пожалуйста как можно сделать скрипт, чтобы забить его в крон..

Posted

#!/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

Posted

А пинговать 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 клиента, чтобы без постоянной перезагрузки системы?

Если да то как?

Posted

Слегка напутал, # это признак комментария, поэтому надо писать

PINGHOST=192.168.255.254

 

Далее потерян заключительный fi - это конец блока if-then-else-fi

 

Ну и man по вашему dhcp клиенту на предмет сигналов для его рестарта, или сначала убить

по killall dhclient

а потом снова рестартануть

Posted

Спасибо за ответы, но еще пара уточняющих вопросов...

 

#!/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

# или по-другому?

 

Спасибо

Posted

/usr/bin/killall dhclient убьет всех dhclient

далее можно подождать для гарантии и снова запустить

sleep 60

/sbin/dhclient

 

Про скрипы выполняемые из crontab - всегда писать полные пути к вызываемым утилитам !!!

потому что у юзера есть environment с путями поиска, а у /bin/sh этих путей может и не быть

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.