Комментарии 26
Я конечно понимаю что всем хочется инвайт… Добавьте, пожалуйста, ссылку на домашнюю страницу DUMMYNET. Там есть много хорошей инфы, которая описывает устройство DUMMYNET.
И к стати, стоит упомянуть что DUMMYNET портирован на другие ОС. Под windows не юзал, а под linux работает точно.
Для интересующихся. Хорошее описание DUMMYNET + исходники:
info.iet.unipi.it/~luigi/dummynet/
info.iet.unipi.it/~luigi/dummynet/
Не его ли использует 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
вот это зачем?
ifconfig rl1 down
ifconfig rl0 up
ifconfig rl1 up
вот это зачем?
первый способ откровенно ужасен и похож на костыли для фаервола
я делал так, как у вас описано во втором способе, только непонятно зачем up/down интерфейсов? пайпы позволяют менять скорость налету без каких-либо манипуляций с сетевыми интерфейсами (на 8.1 не проверял, но на 8.2 это работает, и работает хорошо)
я делал так, как у вас описано во втором способе, только непонятно зачем up/down интерфейсов? пайпы позволяют менять скорость налету без каких-либо манипуляций с сетевыми интерфейсами (на 8.1 не проверял, но на 8.2 это работает, и работает хорошо)
Ну да — многое странновато. Но у меня уже около полугода успешно работает схема, похожая на первый вариант. Только ничего никуда не копируется, а сразу исполняются дневной и ночной скрипты.
Скрипты выглядят так:
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 или откуда оно и что произойдет?
ssh;
icmp;
init;
localhost;
snmp;
vpn;
vr0;
tun0;
rl0;
вот это по сути частично выполняется в /etc/netstart или откуда оно и что произойдет?
у вас есть команда
${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 интерфейса, дерганье пайпов и прочего — суета и прыщавое задротство. есть жеж спицально созданные для этого вещи Ж)
надо делать так:
в конфиге 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
и да, вы из какого века? давно не надо собирать ядро. достаточно подгрузить нужные модули и все ок :)
% 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 после того как подгрузили модуль. думаю не стоит рассказывать как это сделать удаленно без потери связи?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Ограничение полосы пропускания по времени суток с помощью ipfw