фильтруем по mac адресу в dhcp запросе
iptables -A FORWARD -i br.599 -p udp -m udp --dport 67 -m string --hex-string "|000391bb7898|" --algo bm --from 55 --to 56 -j DROP
ставим
Name : wvdial
Arch : i386
Version : 1.54.0
Release : 5.2.2.1
Size : 264 k
Repo : installed
Summary : Программа автоматического набора номера для установки PPP-соединений.
URL : http://open.nit.ca/wvdial/
License : LGPL
Description: WvDial автоматически определяет и настраивает модемы и позволяет
: устанавливать соединения практически с любым провайдером Интернет без
: дополнительных настроек. Следует только ввести учетное имя, пароль и
: номер телефона, а WvDial сам установит PPP-соединение соответствующим
: способом.
[root@home ~]# cat /etc/wvdial.conf
[Dialer Defaults]
Modem = /dev/ttyUSB0
Baund =460800
Initl = AT<cr>
Dial Command = ATDP
Phone = #777
Username = vovan
Password = internet
теперь набрав wvdial получим интернет
мейби так здорово завелось из-за ядра centos.plus
Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
To free pagecache:
* echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
* echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
* echo 3 > /proc/sys/vm/drop_caches
As this is a non-destructive operation, and dirty objects are not freeable, the user should run «sync» first in order to make sure all cached objects are freed.
This tunable was added in 2.6.16.
kldload ng_ipfw
ngctl shutdown utp_filter:
ngctl mkpeer ipfw: bpf 2 main
ngctl name ipfw:2 utp_filter
ngctl msg utp_filter: setprogram { thisHook=\»main\» ifMatch=\»\» ifNotMatch=\»main\» bpf_prog_len=9 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=5 k=64 } { code=32 jt=0 jf=0 k=40 } { code=21 jt=0 jf=3 k=2147483647 } { code=48 jt=0 jf=0 k=44 } { code=21 jt=0 jf=1 k=171 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }ipfw add 100 netgraph 2 udp from any to any via em0 iplen 0-128
Статистика
ngctl msg utp_filter: getprogram \»main\»
ngctl msg utp_filter: getstats \»main\»
ipfw showtcpdump -i em1 -n -c 100 -v ‘ip[40:4]=0x7FFFFFFF and ip[44:1]=0xAB and udp’
попробовать http://citrin.ru/freebsd:ng_ipfw_ng_bpf
Конфигурация практически идентична вышеприведенному примеру:
# tc qdisc add dev eth0 root handle 1: htb default 30 # tc class add dev eth0 parent 1: classid 1:1 htb rate 6mbit burst 15k # tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit burst 15k # tc class add dev eth0 parent 1:1 classid 1:20 htb rate 3mbit ceil 6mbit burst 15k # tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1kbit ceil 6mbit burst 15k
Автор рекомендует устанавливать дисциплину SFQ для этих классов:
# tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 # tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10 # tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10
Добавим фильтры, которые будут выполнять классификацию трафика:
# U32="tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32" # $U32 match ip dport 80 0xffff flowid 1:10 # $U32 match ip sport 25 0xffff flowid 1:20
В результате получаем ясную и понятную конфигурацию — никаких малопонятных чисел, никаких недокументированных параметров.
В HTB все выглядит достаточно прозрачно — классы 10: и 20: имеют гарантированную пропускную способность, при наличии свободной части пропускной способности они заимствуют ее в отношении 5:3.
Неклассифицированый трафик будет отнесен к классу 30:, который имет достаточно небольшую ширину, но может заимствовать незанятую часть канала.
64 порта
ending is 2^16=65536
mask is (2^16)-64=65472 -> convert to hex -> FFC0
32 порта
mask is (2^16)-32=65504 > convert to hex -> FFE0
маски портов