Pull to refresh

Comments 26

Я конечно понимаю что всем хочется инвайт… Добавьте, пожалуйста, ссылку на домашнюю страницу DUMMYNET. Там есть много хорошей инфы, которая описывает устройство DUMMYNET.
И к стати, стоит упомянуть что DUMMYNET портирован на другие ОС. Под windows не юзал, а под linux работает точно.
Не его ли использует wipfw под Windows?.. Пользовался ей когда-то, удобный и надежный фаервол :-)…
Под windows использовать dummynet считаю полным извращением. Добавил русский отличный мануал последней ссылкой, который мне действительно помог
Вы знаете какую-то другую утилиту с функционалом ограничения скорости, эмулирования канала с задержками, потерями и джиттерами?
Теперь скрипт… стоп… даже не скрипт, а последовательность комманд в планировщике, тянет на отдельную статью? o_O
> cp /home/admin/firewall/firewall.conf-01-09 /etc/firewall.conf

Почему бы не использвать символические ссылки?
можно и симлинки, но от этого суть и работа метода не меняется
ifconfig rl0 down
ifconfig rl1 down

ifconfig rl0 up
ifconfig rl1 up

вот это зачем?
у меня ощущение что это перезагрузка «на всякий случай»
именно так, на такой не нагруженной системе простоя будет немного из-за этой операции
насмешили этими строчками)
про апдаун интерфесы

скорости можно легко менять даже не перезагружая фаерволл
меня конфиг конкретного пайпа
первый способ откровенно ужасен и похож на костыли для фаервола

я делал так, как у вас описано во втором способе, только непонятно зачем up/down интерфейсов? пайпы позволяют менять скорость налету без каких-либо манипуляций с сетевыми интерфейсами (на 8.1 не проверял, но на 8.2 это работает, и работает хорошо)
работает и на 8.1 и на 8.0 да там
Ну да — многое странновато. Но у меня уже около полугода успешно работает схема, похожая на первый вариант. Только ничего никуда не копируется, а сразу исполняются дневной и ночной скрипты.

7lan# crontab -l
59 23 * * * sh /etc/rc.firewall.night
59 6 * * * sh /etc/rc.firewall.day


Скрипты выглядят так:

ipfw='/sbin/ipfw -q'

init () {
#shape number one
${ipfw} pipe 100 config bw 1200kbit/s queue 512Kbytes
${ipfw} pipe 101 config bw 15000kbit/s queue 512Kbytes

...

${ipfw} table 1 flush
${ipfw} table 2 flush

#user number one
${ipfw} table 1 add 192.168.1.2 100
${ipfw} table 2 add 192.168.1.2 101

...

}

#ещё всякие нужные правила типа:

icmp () {
${ipfw} add deny icmp from any to any frag
${ipfw} add pass icmp from any to any
}

#а в конце

${ipfw} flush;

ssh;
icmp;
init;
localhost;
snmp;
vpn;
vr0;
tun0;
rl0;

${ipfw} flush;

ssh;
icmp;
init;
localhost;
snmp;
vpn;
vr0;
tun0;
rl0;

вот это по сути частично выполняется в /etc/netstart или откуда оно и что произойдет?
это те самые «всякие нужные правила». В скрипте для примера я привёл только одно — icmp. Естественно в скрипте есть и всё остальное, вида:

ssh () {
#собственно правила
}


и т.д.
у вас есть команда ${ipfw} flush; которая очищает правила фаервола, что означает что потенциально возможна ситуация, когда часть TCP трафика повиснет на время таймаута TCP, а UDP так совсем не дойдет — их попросту фаервол отбросит, потому что динамическое правило для обратного трафика исчезнет после flush
пора взрослеть, кмк.

надо делать так:

в конфиге ipfw:
pipe 100 config mask dst-ip 0xffffffff bw 3Mbits queue 100 gred 0.002/10/50/0.1
pipe 101 config mask src-ip 0xffffffff bw 3Mbits queue 100 gred 0.002/10/50/0.1
pipe 102 config mask dst-ip 0xffffffff bw 5Mbits queue 100 gred 0.002/10/50/0.1
pipe 103 config mask src-ip 0xffffffff bw 5Mbits queue 100 gred 0.002/10/50/0.1

01200 pipe tablearg ip from any to any dst-ip «table(10)»
01300 pipe tablearg ip from any to any src-ip «table(11)»

а в крон пейхать скрипт который будет в указанных таблицах правиль таблеарг для ойпишника (ipfw table 10 add $ip 102 && ipfw table 11 add $ip 103) и ок. :) и да, эти все няшки можно легко прикрутить к скриптам от радиуса, например, которым будет тыкать быдлинг Ж) а можно к какие собственный штуки написать.

а все эти up|down интерфейса, дерганье пайпов и прочего — суета и прыщавое задротство. есть жеж спицально созданные для этого вещи Ж)
> О том, как скомпилировать ядро рассказывать детально я не буду

и да, вы из какого века? давно не надо собирать ядро. достаточно подгрузить нужные модули и все ок :)

% uname -rsmi
FreeBSD 8.2-RELEASE amd64 GENERIC

% kldstat | awk '{print $5}'
Name
kernel
ng_bridge.ko
netgraph.ko
ng_ether.ko
ng_ksocket.ko
ng_netflow.ko
ng_tee.ko
ng_ipfw.ko
ipfw.ko
libalias.ko
if_lagg.ko
dummynet.ko
ng_socket.ko
ng_nat.ko
Надеюсь, вы помните, что подгрузка ipfw.ko сформирует дефолтное правило 65535 deny all from any to any?
надеюсь вы достаточно разумны пользоваться системными скриптами. ну или хотя бы sysctl net.inet.ip.fw.default_to_accept=1 после того как подгрузили модуль. думаю не стоит рассказывать как это сделать удаленно без потери связи?
Разумеется.
В 7.3, кстати, sysctl net.inet.ip.fw.default_to_accept ещё не было ;)
UFO just landed and posted this here
Sign up to leave a comment.

Articles