Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Сетевые технологии > Как мне поделить поровну трафф?


Автор: Frikazoid 30.8.2004, 13:33
Доброго времени суток!
возникла проблема с сабжем! всё дело в том что по дефолту фаер делит трафф "не честно"!
юзверь качающий большой филис имеет больше привелегий над теми кто просто сёрфит...
а надо чтоб все были как один!

ну предположим у меня есть канал в 256к. 192.168.0.1 - адрес сервака!

я дописал в начало фаера такую вот фигню
Код
ipfw pipe 1 config bw 256Kbit/s
ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000
ipfw add queue 1 ip from any to 192.168.0.1/24


но после этого начала локалка тормозить! тоесть я запрашиваю страничку с своего же сервака и оно тормозит!
что я делаю не так?

Автор: Гость_DENNN 30.8.2004, 16:29
странно. Ты говоришь что прокачка больших файлов имеет приоритет? Вроде такого быть не долдно при этом конфиге. А как ты это определяешь?

Автор: Frikazoid 30.8.2004, 22:34
НЕ! ты не понял!
без этого конфига кто-то имеет приоритет!
а если я эти строки дописываю, то сеть подтормаживает! даже локаль!
куда эти строки конкретно прописать надо? и не влияют ли они на сумарную скорость?

Автор: DENNN 31.8.2004, 10:14
Цитата
без этого конфига кто-то имеет приоритет!

причем приоритет зависит от многих факторов, включая операционку (как она работает со стеком TCP/IP) и физическую конфигурацию сети.

Цитата
а если я эти строки дописываю, то сеть подтормаживает! даже локаль!

ну так напиши грамотно, что тормозило только то что нужно.

Цитата
куда эти строки конкретно прописать надо? и не влияют ли они на сумарную скорость?

без полного конфига фаера это как вилами по воде

Автор: Frikazoid 31.8.2004, 16:15
Сервак стоит на FeeBSD 5.2.1-RELEASE
вот конфиг фаера
Код
#!/bin/sh

#ipfw pipe 1 config bw 256Kbit/s
#ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000
#ipfw add queue 1 ip from any to 192.168.0.1/24

ipfw 10 add divert natd ip from any to any
ipfw 20 add deny ip from any to 127.0.0.0/8 via dc0
ipfw 30 add deny ip from 192.168.0.0/24 to any via dc0
ipfw 35 add deny ip from any to any 22,139,389,3306 via dc0
ipfw 40 add allow ip from 192.168.0.0/24{2-99} to any
ipfw 100 add deny ip from 192.168.0.0/24 to any


а что ещё сказать? 2 сетевухи NAT! и неболшая сеть в 8 компов!
на серваке стоит ЦЦЦ, почта и самба (на серваке 100Гб шара).

если разкоментить вот эти строки
Код
#ipfw pipe 1 config bw 256Kbit/s
#ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0x00000000
#ipfw add queue 1 ip from any to 192.168.0.1/24

то тогда с моего ццц странички отдаются с небольшими рормазами (в локальную сеть), как отдаёт страницы в мир я ещё не проверял!

задача такая! дать максимальный приоретет серваку. чтоб те кто из мира просит страницу ццц она отдавалась как можно быстрее. и раздать локалке равные приоритеты!

либо дайте плз пример как можно ограничить приоретет отдельных ип, поднять приоритет ещё пары ип, а остальным раздать оставшийся кусок поровну!

спасибо за любую помощь....

Автор: DENNN 31.8.2004, 18:09
Цитата
на серваке стоит ЦЦЦ, почта и самба (на серваке 100Гб шара).

Я надеюсь в винды не в домене от МС?


Цитата
то тогда с моего ццц странички отдаются с небольшими рормазами (в локальную сеть), как отдаёт страницы в мир я ещё не проверял!

В мир будет отдавать нормально. Если посмотришь внимательно, то увидишь что правило дейтвует только на твою сеть с серыми адресами.
Цитата
чтоб те кто из мира просит страницу ццц она отдавалась как можно быстре

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

Короче, пиши названия интерфейсов, адреса.
И заодно покажи что у тебя в /etc/sysctl.conf, а то гложет меня сомнение smile.gif

И какого надо было убирать правила для закольцованного интерфейса?

Одним словом рассказывай что куда идет на интерфейсах и я тебе код подправлю.

Автор: Frikazoid 1.9.2004, 13:00
Сеть не в домене!

я понял что те правила действуют только на локаль! но как мне сделать чтоб приоретет был на отдачу страниц?

детали дам в приват! сам понимаешь нечего разбрасываться секюрити инфой! smile.gif

Автор: DENNN 1.9.2004, 14:45
OK.
Значит имеем следующее:
интерфейс dc0 смотрит наружу, для приватности скажем, что у него адрес 200.200.200.200/27
интерфейс rl0 внутренний 192.168.168.1/24
natd запускается командой вида natd -i dc0
Так как получена информация ( smile.gif ), что скрипт фаера достался по наследству, то правим его нещадно, в целях облагораживания.

получаем примерно следующий основной костяк в файле /etc/rc.firewall (Хотя я бы оставил там оригинальный, тот что идет в поставке, а свой положил рядом)
Код

#!/bin/sh -

#
# Setup system for firewall service.
#

# Suck in the configuration variables.
if [ -z "${source_rc_confs_defined}" ]; then
       if [ -r /etc/defaults/rc.conf ]; then
               . /etc/defaults/rc.conf
               source_rc_confs
       elif [ -r /etc/rc.conf ]; then
               . /etc/rc.conf
       fi
fi

setup_loopback () {
       ############
       # Only in rare cases do you want to change these rules
       #
       ${fwcmd} add pass all from any to any via lo0
       ${fwcmd} add deny all from any to 127.0.0.0/8
       ${fwcmd} add deny ip from 127.0.0.0/8 to any
       ${fwcmd} add deny udp from any 137,138,139 to any via dc0
       ${fwcmd} add deny tcp from any 137,138,139 to any via dc0
       ${fwcmd} add deny tcp from any 135,369,445 to any via dc0
       ${fwcmd} add deny udp from any 135,369,445 to any via dc0
}

if [ -n "${1}" ]; then
       firewall_type="${1}"
fi

############
# Set quiet mode if requested
#
case ${firewall_quiet} in
[Yy][Ee][Ss])
       fwcmd="/sbin/ipfw -q"
     ;;
*)
       fwcmd="/sbin/ipfw"
     ;;
esac

${fwcmd} -f flush

setup_loopback
${fwcmd} add reject icmp from any to me icmptype 5,9,10,13,14,17,18

#Win RPC Task Sheduler Engine
       ${fwcmd} add deny tcp from any 1048 to any
       ${fwcmd} add deny udp from any 1048 to any
# protect MySQL Database fom access outer world
       ${fwcmd} add deny log all from any to me 3306 via dc0

# natd NAT
       case ${natd_enable} in
       [Yy][Ee][Ss])
               if [ -n "${natd_interface}" ]; then
                       ${fwcmd} add divert natd all from any to any via ${natd_
               fi
             ;;
       esac
#
#disable all internal ip's on external network interface
#(i.e. stop RFC1918 nets on the outside interface)
#
#эту строку пока закомментируем (см. как работает NAT)
#        ${fwcmd} add reject all from 192.168.0.0/16 to any via dc0
       ${fwcmd} add reject all from 172.16.0.0/12 to any via dc0
       ${fwcmd} add reject all from 10.0.0.0/8 to any via dc0
       ${fwcmd} add reject all from 0.0.0.0/8 to any via dc0

# allow connection to my services
       ${fwcmd} add allow tcp from any to me dst-port 20,21,22,80,443 via dc0
       #${fwcmd} add allow tcp from any to me dst-port 25,110,143,443,993,995 via dc0
# close all not allowed ports
       ${fwcmd} add reject log tcp from any to me dst-port 0-1024 via dc0
${fwcmd} add allow all from me to any
${fwcmd} add allow all from any to me via rl0

#traf bandwidth
${fwcmd} pipe 1 config bw 256Kbit/s
${fwcmd} queue 1 config pipe 1 weight 50 mask src-ip 0x000000ff
${fwcmd} queue 2 config pipe 1 weight 50 mask src-ip 0x000000ff
${fwcmd} add queue 2 ip from 192.168.168.0/24  to not me 110 via rl0
${fwcmd} add queue 1 ip from 192.168.168.0/24 to not me not 110 via rl0

#named
       ${fwcmd} add allow udp from any to me dst-port 53 via rl0
       ${fwcmd} add allow udp from me 53 to any via rl0
       ${fwcmd} add deny log udp from any to me dst-port 53

${fwcmd} add deny log from any to any

Примерно так, хотя может чего упустил, и последнее правило забанит что-то. Посмотришь в лог, тогда подправим.
Скрипт довольно простой, он не создает динамические правила, не проверяет наличие уже идущих фрагментированных пакетов, не режет количество сессий с каждого адреса, не балансирует нагрузку от новых подключений из вне. Но судя по тому, что ваш прежний админ не сильно напрягался - вам этого за глаза хватит.
Шейпер я поставил на исходящий трафик от клиентских машин из тех соображений, что все что из интеа для них через нат прошло, можно уже и так без задержек доставить, а вот генерация нового трафика от них придерживается еще на стенке. Почтовые протоколы, уходящие во внешний мир имеют приоритет над остальными примерно на 30%.

Не забудь как следует подкрутить почтовик (какой у тебя кстати поставлен?) и bind.
Сегодня еще попробую твой ip прогнать через тесты и репорт тебе вышлю
Добавлено @ 14:50
в файл /etc/sysctl.conf обязательно надо добавить строку вида
net.inet.ip.fw.one_pass=0

и можно туда же

net.inet.ip.dummynet.hash_size=256

Для неанонсируемой сети из 8 компов и малом почтовом трафике этого хватит

Автор: Frikazoid 2.9.2004, 00:15
Код
# natd NAT
      case ${natd_enable} in
      [Yy][Ee][Ss])
              if [ -n "${natd_interface}" ]; then
                      ${fwcmd} add divert natd all from any to any via ${natd_
              fi
           ;;
      esac


А это чё? там строка не дописана!

э-э-э! мне что теперь запуск ната отправить в rc.d?
Добавлено @ 00:23
да, вот ещё! мне нужен приоритет на 80 порт а не на почту! smile.gif и сервак анонсированный! просто на секюрити форумах не принято светить ип адресами, при том что есть проблемы!

Автор: DENNN 2.9.2004, 10:04
Цитата
там строка не дописана!

Сорри, в терминал строка не влезла - вот так и скопировал.
Код

# natd NAT
       case ${natd_enable} in
       [Yy][Ee][Ss])
               if [ -n "${natd_interface}" ]; then
                       ${fwcmd} add divert natd all from any to any via ${natd_interface}
               fi
              ;;
       esac

Цитата
э-э-э! мне что теперь запуск ната отправить в rc.d?

ну приехали, у тебя же rc.conf
Код

natd_enable="YES"
natd_interface="dc0"


Цитата
да, вот ещё! мне нужен приоритет на 80 порт а не на почту!

приоритет кому и на чей порт твой или в инете?

Цитата
и сервак анонсированный!

Не понял, что эта враза означает sad.gif
Добавлено @ 10:05
P.S. маршрутизация у вас там переморочена изрядно. У тебя наверно российские сайты не быстро открываются?

Автор: Frikazoid 2.9.2004, 22:09
DENNN
Цитата
ну приехали, у тебя же rc.conf

дык ты же грил что нат запускается отдельной командой! ну я и сделал глупое предположение rolleyes.gif

Автор: Frikazoid 2.9.2004, 22:20
ну всё! вроде рулесы прописал! прочекь ещё раз на дырявость!

Автор: DENNN 3.9.2004, 09:10
Цитата
ык ты же грил что нат запускается отдельной командой!

Нет, я просто привел для ясности, как фактически в твоем случае он запускается.

Ты под 80 сам уже чтоли переделал? Показывай на всякий случай.
У меня эта пятница загружена, если сегодня не успею, то проверю только в понедельник.

Автор: Frikazoid 3.9.2004, 22:21
я сначала не заметил.....
ты мне закрыл днс! smile.gif
у меня же домен и я его держу!
я вроде как открыл его, но всё равно не фунчиклирует! мож я что-то не так делаю!

Автор: DENNN 4.9.2004, 16:03
Цитата
ты мне закрыл днс!

Ну добавь 53 порт в строку

${fwcmd} add allow tcp from any to me dst-port 20,21,22,80,443 via dc0
и проверь, что следующая строка тоже есть
${fwcmd} add allow tcp from any to me dst-port 25,110,143,443,993,995 via dc0
Проверь только, что твоему почтарю все эти порты нужны, иначе лишнее повыбрасывай.

Цитата
но всё равно не фунчиклирует! мож я что-то не так делаю!

Покажи еще раз свой окончательный скрипт.
И что показывает вывод команды
Код
ipfw show

после неудачных попыток (весь вывод).
Цитата
у меня же домен и я его держу!

Ты бы хоть название своего домена сообщил, а то обратная запись просто указывает на рабочие данные твоего прова, а по тем контактам что на сайте в DNS'ах вообще бурда.

Автор: Frikazoid 4.9.2004, 16:14
http://litexplus.md/
smile.gif

Автор: Frikazoid 4.9.2004, 16:28
Код
#!/bin/sh -

if [ -z "${source_rc_confs_defined}" ]; then
      if [ -r /etc/defaults/rc.conf ]; then
              . /etc/defaults/rc.conf
              source_rc_confs
      elif [ -r /etc/rc.conf ]; then
              . /etc/rc.conf
      fi
fi

setup_loopback () {
      ${fwcmd} add pass all from any to any via lo0
      ${fwcmd} add deny all from any to 127.0.0.0/8
      ${fwcmd} add deny ip from 127.0.0.0/8 to any
      ${fwcmd} add deny udp from any 137,138,139 to any via dc0
      ${fwcmd} add deny tcp from any 137,138,139 to any via dc0
      ${fwcmd} add deny tcp from any 135,369,445 to any via dc0
      ${fwcmd} add deny udp from any 135,369,445 to any via dc0
}

if [ -n "${1}" ]; then
      firewall_type="${1}"
fi

case ${firewall_quiet} in
[Yy][Ee][Ss])
      fwcmd="/sbin/ipfw -q"
   ;;
*)
      fwcmd="/sbin/ipfw"
   ;;
esac

${fwcmd} -f flush

setup_loopback
${fwcmd} add reject icmp from any to me icmptype 5,9,10,13,14,17,18

${fwcmd} add deny tcp from any 1048 to any
${fwcmd} add deny udp from any 1048 to any
${fwcmd} add deny log all from any to me 3306 via dc0

      case ${natd_enable} in
      [Yy][Ee][Ss])
              if [ -n "${natd_interface}" ]; then
                      ${fwcmd} add divert natd all from any to any via ${natd_interface}
              fi
           ;;
      esac

${fwcmd} add reject all from 192.168.0.0/16 to any via dc0
${fwcmd} add reject all from 172.16.0.0/12 to any via dc0
${fwcmd} add reject all from 10.0.0.0/8 to any via dc0
${fwcmd} add reject all from 0.0.0.0/8 to any via dc0

${fwcmd} add allow tcp from any to me dst-port 25,53,80,110 via dc0
${fwcmd} add reject log tcp from any to me dst-port 0-1024 via dc0

${fwcmd} add allow all from me to any
${fwcmd} add allow all from any to me via rl0

${fwcmd} pipe 1 config bw 256Kbit/s
${fwcmd} queue 1 config pipe 1 weight 50 mask src-ip 0x000000ff
${fwcmd} queue 2 config pipe 1 weight 50 mask src-ip 0x000000ff
${fwcmd} add queue 2 ip from 192.168.168.0/24 to not me 80 via rl0
${fwcmd} add queue 1 ip from 192.168.168.0/24 to not me not 80 via rl0

${fwcmd} add allow udp from any to me dst-port 53 via rl0
${fwcmd} add allow udp from me 53 to any via rl0
${fwcmd} add deny log udp from any to me dst-port 53

${fwcmd} add deny log from any to any


Цитата
Ну добавь 53 порт в строку

ну я так сразу и сделал!

а эти строки, как я понимаю, можно выбросить?
Код
${fwcmd} add allow udp from any to me dst-port 53 via rl0
${fwcmd} add allow udp from me 53 to any via rl0
${fwcmd} add deny log udp from any to me dst-port 53

Автор: Frikazoid 4.9.2004, 19:33
Код
${fwcmd} add allow udp from any to any 53
${fwcmd} add allow udp from any 53 to any

а так работает! smile.gif

Автор: DENNN 4.9.2004, 22:48
Цитата
${fwcmd} pipe 1 config bw 256Kbit/s ${fwcmd} queue 1 config pipe 1 weight 50 mask src-ip 0x000000ff ${fwcmd} queue 2 config pipe 1 weight 50 mask src-ip 0x000000ff ${fwcmd} add queue 2 ip from 192.168.168.0/24 to not me 80 via rl0 ${fwcmd} add queue 1 ip from 192.168.168.0/24 to not me not 80 via rl0

только я не пойму чего ты хотел добиться этими строками?


Добавлено @ 22:50
Цитата
${fwcmd} add allow udp from any to any 53 ${fwcmd} add allow udp from any 53 to any

а так работает!

Чего удивительного то? Ты бы еще просто написал:
allow all from any to any

Автор: Frikazoid 5.9.2004, 03:22
DENNN ну я же сказал что мне нужна опримизация для ццц!

а без этих
Код
${fwcmd} add allow udp from any to any 53 ${fwcmd} add allow udp from any 53 to any
строк мир не видел мой домен sad.gif

если я не прав в чём-то исправь плз!
я на работе бываю тока по ночам и не могу полностью разобраться в фаерволе! sad.gif

Автор: DENNN 6.9.2004, 10:22
Цитата
DENNN ну я же сказал что мне нужна опримизация для ццц!

Блин, у тебя и сайт во внешний мир вертится и клиенты сторонние открывают, говори конкретно для каких видов трафика какая приориетизация нужна.

Цитата
а без этих  строк мир не видел мой домен

Ну и посмотрел бы почему не видел.



Автор: Гость_Frikazoid 6.9.2004, 15:47
мне нуна оптимизация на отдачу страничек в мир и разделение входящего траффа поровну!
всё!

а что с днс было я не знаю, но нормальными средствами не помогло!
Код
${fwcmd} add allow tcp from any to me dst-port 25,53,80,110 via dc0

Автор: DENNN 6.9.2004, 16:14
тогда поставь
Код

${fwcmd} pipe 1 config bw 256Kbit/s
${fwcmd} queue 1 config pipe 1 weight 50 mask src-ip 0x000000ff
${fwcmd} queue 2 config pipe 1 weight 60 mask src-ip 0x000000ff
${fwcmd} add queue 2 ip from 192.168.168.0/24 to not me 80 via rl0
${fwcmd} add queue 1 ip from 192.168.168.0/24 to not me not 80 via rl0

В твоем скрипте этого будет достаточно, хотя и будет небольшой дизбаланс, если твой сайт сильно посещаемый.

Автор: Гость_Frikazoid 6.9.2004, 18:52
проверьте плиз мой домен ещё раз!
что-то не так!
в сети моего прова все меня видят а за этими приделами нет! sad.gif
говорят что даже по ип адресу не могут зайти!

Автор: DENNN 7.9.2004, 09:29
Код

C:\>ping litexplus.md

Pinging litexplus.md [217.26.150.144] with 32 bytes of data:

Reply from 217.26.150.144: bytes=32 time=422ms TTL=45
Reply from 217.26.150.144: bytes=32 time=407ms TTL=45
Reply from 217.26.150.144: bytes=32 time=391ms TTL=45
Reply from 217.26.150.144: bytes=32 time=391ms TTL=45

Ping statistics for 217.26.150.144:
   Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
   Minimum = 391ms, Maximum =  422ms, Average =  402ms

так что как видишь....
Цитата
в сети моего прова все меня видят а за этими приделами нет! говорят что даже по ип адресу не могут зайти!

А сам ты с других станций проверял? У меня все работает по крайней мере на двух разных провах, на московском и питерском каналах.
Вот примерный маршрут:
Код

4  Song-gw.fi.Eut.Ru (62.181.40.66)  17.130 ms  58.940 ms  28.620 ms
5  ge0-0-0.joo-peer1.ams.nl.sn.net (213.88.255.190)  49.058 ms  49.170 ms  47.539 ms
6  asd-s4-rou-1001.NL.eurorings.net (195.69.144.97)  47.237 ms  50.805 ms  46.812 ms
7  asd2-rou-1012.NL.eurorings.net (134.222.96.146)  48.512 ms  50.515 ms  48.099 ms
8  bura-rou-1001.NL.eurorings.net (134.222.224.254)  51.104 ms  52.906 ms  52.316 ms
9  134.222.95.14 (134.222.95.14)  51.193 ms  55.287 ms  72.981 ms
10  fe0-gate.starnet.md (217.26.150.249)  392.587 ms  395.560 ms *
11  fe1-mars.starnet.md (217.26.150.246)  368.724 ms  382.042 ms  371.105 ms
12  fe0-centru.starnet.md (217.26.150.2)  404.268 ms  373.938 ms  379.152 ms
13  * * *
14  * * *
15  * * *
16  * * *
^C

Из которого в частности следует, что пров твой не слишком хорошо работает smile.gif А так первые тормоза у вас в подсетке. Если в твоей стране с других провов не работает - проверь, отрабатывается ли ДНС запрос, есть ли коннект на твой ip (может тормознул фаер). Если все ok - тогда возможно надо пинать прова с его маршрутизацией.

Автор: Frikazoid 8.9.2004, 00:16
Провайдер - полное Г!
а альтернативы почти нет! точнее есть но за большие деньги!
так что качество как всегда страдает!

Автор: RA 12.9.2004, 01:44
Мне кажется что тот кто качает фильм с нета настоящий Хакирило. biggrin.gif

Автор: Frikazoid 13.9.2004, 12:50
а причём тут хакеры?

Автор: DENNN 13.9.2004, 14:34
просто человеку поболтать захотелось, вот он свою фразу и вставил smile.gif

Автор: Frikazoid 13.9.2004, 19:41
а вы знаете господа, что флейм дело наказуемое? ;)

Автор: MuToGeN 14.9.2004, 09:46
Цитата(Frikazoid @ 13.9.2004, 19:41)
а вы знаете господа, что флейм дело наказуемое? ;)

Это точно. Завязывайте, а то минусы пойдут.

Автор: RA 14.9.2004, 17:05
Цитата(Frikazoid @ 13.9.2004, 12:50)
а причём тут хакеры?

Человек в нет выходит через тебя ?


Цитата(DENNN @ 13.9.2004, 14:34)
просто человеку поболтать захотелось, вот он свою фразу и вставил

Ктобы говорил.

Автор: Frikazoid 14.9.2004, 17:29
Никто через меня в нет не ходит!

Автор: RA 14.9.2004, 22:59
Всё теперь понял. smile.gif
Я просто в начале подумал, что человек имеет выход в нет через твой ПК.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)