rec_control wipe-cache powerdns.org
Knsupdate.+157+13990.key Knsupdate.+157+13990.private
Конфигурация практически идентична вышеприведенному примеру:
# 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
маски портов
генерим ключи для nsupdate
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER NSUPDATE
получаем 2 файлика
Knsupdate.+157+13990.key Knsupdate.+157+13990.private
на основе Knsupdate.+157+13990.private делаем запись в named.conf
key NSUPDATE {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
secret SCtSlSUwGYN3SdbUQgHJdQ==;
};
zone "dyn.net" {
type master;
allow-update { key "NSUPDATE"; };
file "master/dyn.net";
};а Knsupdate.+157+13990.key используем в скрипте
#!/bin/sh curr=$(dig +short server.dyn.net @192.168.133.30) #echo $curr #exit dt=`/bin/date +'%Y-%m-%d %H:%M:%S'` prime=$(dig +short server1.stat.net @192.168.133.30) second=$(dig +short server2.stat.net @192.168.133.30) res=$(ping -c 2 $prime) if [[ $? -ne 0 ]] then if [ "$curr" = "$prime" ] then echo "$dt ERROR! $prime not responding change to $second" >> /var/log/dynsip.log echo "server 192.168.133.30" > /var/tmp/nsupdate echo "zone dyn.net" >> /var/tmp/nsupdate echo "update delete server.dyn.net IN A" >> /var/tmp/nsupdate echo "update add server.dyn.net 60 IN A $second" >> /var/tmp/nsupdate echo "send" >> /var/tmp/nsupdate /usr/bin/nsupdate -k /home/manov/Knsupdate.+157+13990.key /var/tmp/nsupdate fi else if [ "$curr" != "$prime" ] then echo "$dt OK! $prime is alive" >> /var/log/dynsip.log echo "server 192.168.133.30" > /var/tmp/nsupdate echo "zone dyn.net" >> /var/tmp/nsupdate echo "update delete server.dyn.net IN A" >> /var/tmp/nsupdate echo "update add server.dyn.net 60 IN A $prime" >> /var/tmp/nsupdate echo "send" >> /var/tmp/nsupdate /usr/bin/nsupdate -k /home/manov/Knsupdate.+157+13990.key /var/tmp/nsupdate fi fi
Потребуется dd for windows
и например 8.0-RELEASE-i386-memstick.img
C:\>dd --list
rawwrite dd for windows version 0.5.
Written by John Newbigin
This program is covered by the GPL. See copying.txt for details
Win32 Available Volume Information
\\.\Volume{585d8fd2-9ba8-11de-b573-806d6172696f}\
link to \\?\Device\HarddiskVolume1
fixed media
Mounted on \\.\c:
\\.\Volume{5839172e-a1d4-11de-b580-0018f30bfe6d}\
link to \\?\Device\HarddiskVolume4
fixed media
Mounted on \\.\d:
\\.\Volume{efe0fa36-c9e7-11de-b587-005056c00008}\
link to \\?\Device\Harddisk1\DP(1)0-0+1c
removeable media
Mounted on \\.\f:
NT Block Device Objects
\\?\Device\Harddisk0\Partition0
link to \\?\Device\Harddisk0\DR0
Fixed hard disk media. Block size = 512
size is 160041885696 bytes
\\?\Device\Harddisk0\Partition1
link to \\?\Device\HarddiskVolume1
\\?\Device\Harddisk0\Partition2
link to \\?\Device\HarddiskVolume2
Fixed hard disk media. Block size = 512
size is 1587479040 bytes
\\?\Device\Harddisk0\Partition3
link to \\?\Device\HarddiskVolume3
Fixed hard disk media. Block size = 512
size is 85049395200 bytes
\\?\Device\Harddisk0\Partition4
link to \\?\Device\HarddiskVolume4
\\?\Device\Harddisk1\Partition0
link to \\?\Device\Harddisk1\DR27
Removable media other than floppy. Block size = 512
size is 2004353024 bytes
\\?\Device\Harddisk1\Partition1
link to \\?\Device\Harddisk1\DP(1)0-0+1c
Removable media other than floppy. Block size = 512
size is 2004320768 bytes
Virtual input devices
/dev/zero (null data)
/dev/random (pseudo-random data)
- (standard input)
Virtual output devices
- (standard output)
\\?\Device\Harddisk1\Partition0 — наша флешака
копируем образ
C:\>C:\>dd if=8.0-RELEASE-i386-memstick.img of=\\?\Device\Harddisk1\Partition0 bs=10240 --progress rawwrite dd for windows version 0.5. Written by John Newbigin This program is covered by the GPL. See copying.txt for details 923,207,680 90157+0 records in 90157+0 records out
Готово =)
pf, ipfw и ipfilter вкомпилены в ядро
ipfw -> pf -> ipfilter -> stack - для входящего stack -> ipfilter -> pf -> ipfw - для исходящего
pf загружен как модуль ядра
pf -> ipfw -> ipfilter -> stack - для входящего stack -> ipfilter -> ipfw -> pf - для исходящего
(с) http://paix.org.ua/freebsd/fwpackets.html
порядок обработки пакетов pf’ом
создаем 3 файла по 10Г на разных дисках
vsc# dd if=/dev/zero of=/mnt/ar2/10g bs=1g count=10 10+0 records in 10+0 records out 10737418240 bytes transferred in 166.144035 secs (64627167 bytes/sec) vsc# dd if=/dev/zero of=/mnt/ar3/10g bs=1g count=10 10+0 records in 10+0 records out 10737418240 bytes transferred in 167.428852 secs (64131230 bytes/sec) vsc# dd if=/dev/zero of=/mnt/ar1/10g bs=1g count=10 10+0 records in 10+0 records out 10737418240 bytes transferred in 181.370582 secs (59201543 bytes/sec)
Создание нового диска в файле
vsc# mdconfig -a -t vnode -f /mnt/ar1/10g -u 1 vsc# mdconfig -a -t vnode -f /mnt/ar2/10g -u 2 vsc# mdconfig -a -t vnode -f /mnt/ar3/10g -u 3 vsc# ls -la /dev |grep md crw-r----- 1 root operator 0, 157 29 ноя 23:28 md1 crw-r----- 1 root operator 0, 158 29 ноя 23:28 md2 crw-r----- 1 root operator 0, 165 29 ноя 23:28 md3 crw------- 1 root wheel 0, 83 29 ноя 23:28 mdctl
Создаем RAID0 из 3х дисков с размером блока 128к
vsc# gstripe create -v -s 131072 arrays /dev/md1 /dev/md2 /dev/md3 Done. vsc# gstripe list Geom name: arrays State: UP Status: Total=3, Online=3 Type: MANUAL Stripesize: 131072 ID: 2521786165 Providers: 1. Name: stripe/arrays Mediasize: 32212254720 (30G) Sectorsize: 512 Mode: r0w0e0 Consumers: 1. Name: md1 Mediasize: 10737418240 (10G) Sectorsize: 512 Mode: r0w0e0 Number: 0 2. Name: md2 Mediasize: 10737418240 (10G) Sectorsize: 512 Mode: r0w0e0 Number: 1 3. Name: md3 Mediasize: 10737418240 (10G) Sectorsize: 512 Mode: r0w0e0 Number: 2
Форматим
vsc# newfs /dev/stripe/arrays /dev/stripe/arrays: 30720.0MB (62914560 sectors) block size 16384, fragment size 2048 using 168 cylinder groups of 183.72MB, 11758 blks, 23552 inodes. super-block backups (for fsck -b #) at: 160, 376416, 752672, 1128928, 1505184, 1881440, 2257696, 2633952, 3010208, 3386464, 3762720, 4138976, 4515232, 4891488, 5267744, 5644000, 6020256, 6396512, 6772768, 7149024, 7525280, 7901536, 8277792, 8654048, 9030304, 9406560, 9782816, 10159072, 10535328, 10911584, 11287840, 11664096, 12040352, 12416608, 12792864, 13169120, 13545376, 13921632, 14297888, 14674144, 15050400, 15426656, 15802912, 16179168, 16555424, 16931680, 17307936, 17684192, 18060448, 18436704, 18812960, 19189216, 19565472, 19941728, 20317984, 20694240, 21070496, 21446752, 21823008, 22199264, 22575520, 22951776, 23328032, 23704288, 24080544, 24456800, 24833056, 25209312, 25585568, 25961824, 26338080, 26714336, 27090592, 27466848, 27843104, 28219360, 28595616, 28971872, 29348128, 29724384, 30100640, 30476896, 30853152, 31229408, 31605664, 31981920, 32358176, 32734432, 33110688, 33486944, 33863200, 34239456, 34615712, 34991968, 35368224, 35744480, 36120736, 36496992, 36873248, 37249504, 37625760, 38002016, 38378272, 38754528, 39130784, 39507040, 39883296, 40259552, 40635808, 41012064, 41388320, 41764576, 42140832, 42517088, 42893344, 43269600, 43645856, 44022112, 44398368, 44774624, 45150880, 45527136, 45903392, 46279648, 46655904, 47032160, 47408416, 47784672, 48160928, 48537184, 48913440, 49289696, 49665952, 50042208, 50418464, 50794720, 51170976, 51547232, 51923488, 52299744, 52676000, 53052256, 53428512, 53804768, 54181024, 54557280, 54933536, 55309792, 55686048, 56062304, 56438560, 56814816, 57191072, 57567328, 57943584, 58319840, 58696096, 59072352, 59448608, 59824864, 60201120, 60577376, 60953632, 61329888, 61706144, 62082400, 62458656, 62834912
монтируем
vsc# mkdir /mnt/arrays vsc# mount /dev/stripe/arrays /mnt/arrays/ vsc# df -h Filesystem Size Used Avail Capacity Mounted on /dev/stripe/arrays 29G 4.0K 27G 0% /mnt/arrays
Скорость линейной записи на диск
vsc# dd if=/dev/zero of=/mnt/arrays/10g bs=1g count=10 10+0 records in 10+0 records out 10737418240 bytes transferred in 143.736474 secs (74702112 bytes/sec)
не ахти как шустро =(
(c)
http://www.freebsd.org/doc/ru/books/handbook/disks-virtual.html
http://www.freebsd.org/doc/ru/books/handbook/geom.html