Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
12
Добавлен:
20.04.2024
Размер:
15.8 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>>

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

ХАКЕР.PROBUY

w Click

to

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Конфигурация ядра для работы с Iptables

Каждаяизтаблицсодержитвсебенесколькологическихцепочек,порядокпрохождениякоторыхопределяетсявекторомпакета.Вотдефолтныецепочкиэтихтаблиц:

Mangle: PREROUTING, INPUT, FORWARD, OUTPUT,

POSTROUTING

Nat: PREROUTING, OUTPUT, POSTROUTING

Filter: INPUT, FORWARD, OUTPUT

Конечно,ничтонемешаетнамдобавитьсвоюцепочку.Этоможетпо­ требоватьсядлятого,чтобызарулитьпакетынасистемуучетатрафика. Порядокпрохождениявходящихиисходящихпакетовболеенаглядно представленнасхеме.Несложноувидеть,что,если,допустим,пакет идетчерезшлюзкрабочейстанции,онпроходитследующийпорядок цепочек:Mangle:PREROUTINGNat:PREROUTINGFilter:FORWARD Mangle:FORWARDNat:POSTROUTINGMangle:POSTROUTING.

Чтобыперенаправитьпакетссетевогоинтерфейсасерверанапорт1433 машины192.168.2.100,намнужнодобавитьсоответствующееправилов таблицуnat,вцепочкуPREROUTING.

Какустанавливать

Дляначалаубедись,чтоядрособраносподдержкойNetfiler.Дляэтого зайдивисходникиядраинабериmakemenuconfig(илиmakexconfig). Затемперейдивследующуюветку(дляядра2.6.x):«NetworkingNetworkingoptionsNetworkpacketfilteringframework(Netfilter)IP: NetfilerConfiguration»иотметьвсеопциикакмодули.Затемоткрой/etc/ sysctl.confидобавьвконецстроку«net.ipv4.ip_forward=1».

ТеперькачайсвежийпакетIptablesиустанавливайегостандартными

«./configure;make;makeinstall».Послеэтогоутебядолженпоявиться файл/etc/init.d/iptables.ОнзаставитIptablesработатьвролисервиса. Убедись,чтофайлреальнозапуститсяпризагрузке,дляэтогонабери вконсоли«chkconfig--level345iptableson».Наэтомустановкуможно считатьзавершенной.

Какпользоваться

Теперьявкратцепоясню,какработатьсIptablesикакиекомандыпри этомнужноиспользовать.Команда iptables-L позволяетпросматривать содержимоетаблицы.ПоумолчаниюиспользуетсятаблицаFilter.Для тогочтобыявнымобразомуказатьдругую,добавляем-ttablename.Вмес- тесключом‘-L’можноиспользоватьещенесколькополезныхопций. Например,‘-n’—применяетсядлятого,чтобызаменитьвсестроковые данныечисловыми;‘-v’—подробныйрежим,отображаетназваниясете- выхинтерфейсовиколичествопереданныхипринятыхпакетов;‘--line- numbers’—спомощьюэтогоаргументаможнопронумероватьстроки, этобываетполезно,когдатребуетсяудалитькакую-тострокупосреди

Редактируем правила файрвола

оченьдлиннойцепочки.Такимобразом,чтобывывестивсюинформа-

циюпотаблицеNat,пишем:iptables-L-nv-tnat–-line-numbers.

ВпакетIptablesвходятещедвеутилиты:iptables-save(длясохранения таблиц)иiptables-restore(дляихвосстановления).Еслидлятогочтобы сохранитьтаблицы,достаточнонаписать«iptables-save-tnat>/etc/ iptables.save»,тоутилитавосстановлениявоспринимаеттолькостандарт­ ныйпотоквыводанаэкран:iptables-restore|cat/etc/iptables.save.Но

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

нужнонаписать«serviceiptablessave»—ивсе!

Какконфигурировать

Дляначалазакроемвселишнееснаружи,отфильтруемлевыеадресаот MSSQLипереадресуемнеобходимыепортыпоихпрямомуназначению. Проверьспомощьюnmapналичиеоткрытыхпортов:nmap127.0.0.1.

Допустим,утебяоткрытыпорты21,22,80,111,139,445,953,993,1723и 2628.Уменянетникакогожеланияоткрыватьдоступна22 йпортснаружи,поэтомусделаемтак,чтобыстучатьсяизнутринанегомоглатолько однамашина—192.168.1.100.Аизвненаправимнанеевсепакетыс 22 гопорта.ЕслизлоумышленникизайдетпоSSH,пустьдумает,чтозахватилсервер!Нонасамомделеонбудетнаходитьсянапустоймашинес однимтолькоSSH.Адошлюзаещедалеко...

# iptables -A PREROUTING -i eth0 -p tcp -m tcp \ --dport 22 -j DNAT --to-destination 192.168.1.100 \ -t nat

Именнотакбудетвыглядетьстрока,котораяперенаправитпакетыс 22 гопорташлюзанасервер192.168.1.100.Теперьзакроемэтотпортдля всехмашиниоткроемтолькодля192.168.1.100:

#iptables -I INPUT 1 -i 192.168.1.100 -p tcp \ --dport 22 -j ACCEPT

#iptables -I INPUT 2 -p tcp --dport 22 -j REJECT \ --reject-with icmp-port-unreachable

Примечание:правило,стоящеевцепочкевыше,являетсяболее привилегированным.

Длятогочтобыотрезатьпакет,используетсяправилоDROP,ноесли внимательнопочитатьруководствопоIptablesнасайтеразработчика,то можноувидеть,чтоавторрекомендуетприменятьREJECT,воизбежание различных*DoS-атак.

Ипоследнимшагоммыотрубимвселишниепорты.Пустьонипо-пре- жнемубудутвидныизнутри,нонавнешнеминтерфейсеeth0нужно оставитьсамыйминимум:

xàêåð 08 /104/ 07

139

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

>>to BUYХАКЕР.PRO

w Click

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Смотрим статистику

#iptables -A INPUT -i eth0 -p tcp \ -m multiport \

--dports 21,111,139,445,953,993,1723,2628 \ -j REJECT --reject-with icmp-port-unreachable

Кстати,впоследнейстрочкевместо‘-mmultiport’можнопоставить‘-mtcp’ исформироватьотдельноеправилодлякаждогоизпортов.Тактысможешьвидетьколичествопакетов,полученныхнакаждыйотдельныйпорт, и,соответственно,реальнооцениватьнагрузкуивозможнуюугрозу.

#iptables -A PREROUTING -d 100.100.100.100 \ -p tcp -m tcp --dport 443 -j DNAT \ --to-destination 192.168.3.100 -t nat

#iptables -A PREROUTING -d 100.100.100.100 \ -p tcp -m tcp --dport 80 -j DNAT \ --to-destination 192.168.0.100 -t nat

#iptables -A PREROUTING -d 100.100.100.100 \ -p tcp -m tcp --dport 1433 -j DNAT \ --to-destination 192.168.2.100 -t nat

Такмызарулимпакетыпоихпрямомуназначениюнадругиесерваки. Следующимистрочкамимыподружимсетевыеинтерфейсымежду собой.Какправило,длятакихцелейиспользуютхардварныемаршрутизаторы,номыженесобираемсяменятьнесколькоящиковпивана какие-тожелезныеподелки,которыектомужеэлементарнозаменяются одним-единственнымLinux+Iptables:).

#iptables -A FORWARD -i eth1 -o eth2 -j ACCEPT

#iptables -A FORWARD -i eth1 -o eth3 -j ACCEPT

#iptables -A FORWARD -i eth1 -o eth4 -j ACCEPT

...

#iptables -A FORWARD -i eth4 -o eth3 -j ACCEPT

Каксчитатьтрафик

Понятно,чтоеслидажевсепакетырулятся,портыфильтруются,но сервакнеумеетсчитатьпроходящийчерезнеготрафик,тогрошценатакомуадминству.Этупроблемумырешимследующимобразом:создадим цепочку,котораяспомощьюправилаQUEUEбудетссылатьсяналюбую понравившуюсятебесистемуучета.ЯвыбралNeTAMS.Последнюю версиюэтойзамечательнойпрограммыможноскачатьсnetams.com. РазличныеFAQиинструкциипоустановкележаттамже.

ПравилоQUEUEзанимаетсятолькотем,чтопосылаетпоступивший пакетвочередьнапользовательскоеприложение.Длятогочтобыимвоспользоваться,нужновоткнутьвядростандартныйобработчикочереди дляIPv4—модульip-queue.Делаетсяэтопримернотак:

Схема сети

#modprobe iptable_filter

#modprobe ip_queue

Теперьсоздадимцепочку,вкоторуюбудемотправлятьвесьтрафикдля подсчета:

# iptables -N COUNTER

Напишемодно-единственноеправило,апоцепочкепустимвсеоставши- есяпакеты:

#iptables -A COUNTER -j QUEUE

#iptables -A FORWARD -i eth0 -j COUNTER

#iptables -A FORWARD -o eth0 -j COUNTER

Здесь есть один очень важный момент. Дело в том, что с помощью приведенных выше правил все входящие и исходящие пакеты поступают в системную очередь, откуда их будет брать NeTAMS. Однако если в момент активизации Iptables NeTAMS не будет запущен, пакеты поступят в системную очередь и там потеряются, поскольку не будет программы, которая отправит их обратно. В результате пропадет коннект с сервером. Поэтому в процессе отладки надо либо сидеть за консолью сервера, либо, в случае удаленного администрирования, тренироваться на ICMP-трафике. А порядок запуска такой: сначала запускаем NeTAMS, потом — Iptables. Соответственно, остановка осуществляется в обратном порядке: сначала останавливаем Iptables,

потом — NeTAMS.

Тонкаязаточка

Вот,собственно,ивсе,чтотребовалосьдлятого,чтобыпакетыначали ходитьпострунке,апортыотпинывалинезваныхгостей.Теперьсамое времязанятьсятонкойнастройкой.Принеобходимостиможноотступитьотстандартныхправил:

//Вместо прямого адреса можно указать доменное имя:

# iptables -A INPUT -s test.host.jp -j DROP

//В качестве пункта назначения задаем целую подсеть:

# iptables -A INPUT -s 192.168.133.0/24 -j DROP

//Восклицательный знак означает исключение. То есть в данном случае дропятся все адреса, кроме указанного:

# iptables -A INPUT -s ! 192.168.133.156 -j DROP

Кактыужезаметил,несколькоразвправилахмыуказывалиопцию‘-p’. Оназадаетобрабатываемыйпротокол.Можноиспользоватьall,icmp, tcp,udp.

140

xàêåð 08 /104/ 07

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

>>

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

ХАКЕР.PROBUY

w Click

to

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Нижеописаныстандартныеправиладляцепочек,которыеуказываются сключом‘-j’:ACCEPT—разрешитьпакет;DROP—уничтожитьпакет; REJECT—будетотправленоICMP-сообщениеотом,чтопортнедосту- пен;LOG—информацияобэтомпакетебудетдобавленавсистемный журнал(syslog).

Скрытыевозможности

Вотмыиподошликсамомусладкому...Еслитысчитаешь,чтоуIptables слишкомузкийнаборвозможностей,тоэтачастьстатьикакраздля тебя.Ссайтаftp.netfilter.orgскачайпоследнююверсиютарболаpatch-o- matic,этотпатчдобавляетIptables54расширения.Естьверсиидляядер 2.4и2.6.Установкапакетадостаточнопроста(возможно,patch-o-matic ужесобранвтвоем«коробочном»ядре,особенноеслитысчастливый обладательсерверногодистрибутива):

// Для Linux 2.4

# KERNEL_DIR=путь_к_сорцам_ядра_2.4 ./runme pending

// Для Linux 2.6

# KERNEL_DIR=путь_к_сорцам_ядра_2.6 \ IPTABLES_DIR=путь_к_сорцам_iptables ./runme pending

ЗатемследуетперекомпилироватьядроиIptables.Послеэтогоpatch- o-maticстановитсячастьюIptables,исовсемиегоправиламиицелями можноработатькаксовстроенными.Длятогочтобыполучитьпомощь полюбомурасширению,введивконсоли:

# iptables -m любая_цель_или_правило -–help

РасширениеLength

РасширениеLengthобрабатываетправилавсоответствиисзаданной длинойпакета:

#iptables -A INPUT -p icmp --icmp-type echo-request \ -m length --length 86:0xffff -j DROP

Этоперекроеткислородвсем,ктобудетпинговатьтебябольшечемпо 86байтзаодинприсест.

РасширениеNth

РасширениеNth—ещеоднаполезнаянадстройканадIptables.Она обрабатываеткаждыйN’ыйпакетпозаданномуправилу.Например,сле- дующаястрочказадропиткаждыйвторойпакеттипаicmpecho-request:

#iptables -A INPUT -p icmp --icmp-type echo-request \ -m nth --every 2 -j DROP

ЕслитебяпостояннотерроризируютDoS/DDoS-атаками,советуюпоб- лижепознакомитьсясдвумявышеописаннымимодулями.

РасширениеPsd

Этооченьполезноерасширение,котороеперехватываетсканирование портов.Противграмотногоиспользованияnmappsdбудетбессилен,но большинствотопорныхпробонраспознаетипресекаетнакорню.Этим правиломмызахватываемсразувсеимеющиесяпорты:

# iptables -A INPUT -m psd -j DROP

РасширениеString

Это расширение анализирует область данных пакета и на основе этого производит фильтрацию. Здесь важно не перестараться. Если тебя одолевают спамеры, а от слова porno тебя слегка потрясывает, можешь добавить следующую строку:

#iptables -A FORWARD -i eth0 -p tcp --sport 25 -m string --string ‘porno’ -j DROP

Пакетисчезнетпрежде,чемдойдетдотвоегоспам-фильтра.Незабывай, чторасширениечувствительнокрегиструсимволов!

Расширениеtime

Это расширение обрабатывает пакеты в указанное время. Следующий пример демонстрирует ограничение доступа к серверу по пятницам с 2:00 до 4:15 (например, для выполнения планового обновления):

# iptables -A INPUT -p tcp -d 80 -m time \ --timestart 02:00 --timestop 04:15 --days Fri \ --syn -j REJECT

Всетриключа,‘--timestart’,‘--timestop’и‘--days’,должныбытьобязатель-

новключенывправило.

Расширениеrandom

Используяэторасширение,можнопостроитьтакойкритерий,которыйбудетсрабатыватьсвероятностьювдиапазонеот0%до100%.К примеру,длябалансировкинагрузкираспределимтрафикпочетырем серверам:

#iptables -t nat -A PREROUTING -i eth0 -p tcp \ --dport 80 --syn -m random --average 25 \

-j DNAT --to-destination 192.168.0.100:80

#iptables -t nat -A PREROUTING -i eth0 -p tcp \ --dport 80 --syn -m random --average 25 \

-j DNAT --to-destination 192.168.0.101:80

#iptables -t nat -A PREROUTING -i eth0 -p tcp \

--dport 80 --syn -m random --average 25 -j DNAT \ --to-destination 192.168.0.102:80

#iptables -t nat -A PREROUTING -i eth0 -p tcp \ --dport 80 --syn -m random --average 25 \

-j DNAT --to-destination 192.168.0.103:80

Подводимитоги

Вот мы и настроили абсолютно полноценный сервак-шлюз с помощью практически одного только Iptables. Выводы делай сам, но лично я давным-давно уже перевел все свои серваки именно на такое управление, чего и тебе советую.z

xàêåð 08 /104/ 07

141

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

d

 

 

 

F

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>>to BUYХАКЕР.pro

 

w Click

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

.c

 

 

 

 

p

 

 

 

g

 

 

 

 

 

 

df

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

полета

ТОНКАяНАСТрОйКАПАрАМеТрОВTCP/iPПОДТОлСТыеКАНАлы

Пропускная способность локальных сетей и интернет-каналов неуклонно растет, однако вместе с ней растут и потребности, вызывающие естественное желание выжать из стека TCP/IP максимум возможного. Этим мы сейчас, собственно, и займемся, акцентируя внимание главным образом на Windows Server 2003, хотя описанные технологии оптимизации справедливы и для рабочих станций, собранных на базе

W2K/XP.

п

о поводу кручения настроек TCP/IP существует два

конкретновзятыхканаловсвязи,разброскоторыхпростоколоссален.

диаметрально противоположных мнения. Многие

Какойприростпроизводительностиможетдатьоптимизацияпарамет-

 

администраторы (а вместе с ними и авторы популярных

ровTCP/IPприусловии,чтоонавыполненаправильно?Этозависитот

 

книг) считают, что разработчики уже сделали все что

того,наскольконастройкипоумолчаниюблизкиксвойствамисполь-

нужно и любое вмешательство в этот четко отлаженный механизм

зуемогоканала.Всреднемследуетожидать20-30%выигрыша,однаков

может только навредить. В то же самое время в интернете валяется

«клинических»случаяхскоростьможетувеличитьсявнесколькораз!

множество руководств, обещающих радикальное увеличение произ-

 

водительности ценой изменения пары-тройки ключей в системном

Преждечемприступатькоптимизации

реестре.

 

Вместотогочтобы,засучиврукава,спервыхжестрокбросатьсявбой,

Истина,какводится,где-топосередине.Операционныесистемыуже

лучшеспервапокуритьиподумать.Допустим,мыимеем10-мегабитный

давнонаучилисьавтоматическираспознаватьтипподключения,выби-

каналискачиваем/раздаемфайлыспреимущественнойскоростью

раясоответствующийемунаборнастроекпоумолчанию.Адаптивные

порядкамегабайтавсекунду.Понятно,чтоникакимиухищренияминам

алгоритмыдинамическиподстраиваютсяподхарактеристикиканала,и

неудастсяподнятьпроизводительностьдосколько-нибудьзаметнойве-

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

личины.Такстоитливозиться?Ктомужедостаточнобольшоеколичест-

мешают.Однакоадаптивнымалгоритмамсвойственноошибаться,ана-

воадминистраторовумышленноущемляетотдачуврайоне50-100Кб/с,

стройкипоумолчаниюдалеконевсегдасоответствуютхарактеристикам

предотвращаяперегрузкусети.Какаяужтутоптимизация...

142

xàêåð 08 /104/ 07

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

>>

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

d

 

 

 

F

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ХАКЕР.PROBUY

 

w Click

to

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

.c

 

 

 

 

p

 

 

 

g

 

 

 

 

 

 

df

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тонкая настройка TCP/IP-параметров через редактор реестра

Другоедело,еслинаблюдаемаяпропускнаяспособностьсоставляет менеедвухтретейотзаявленнойаплинком.Тутужебезоптимизации никакнеобойтись!Однако,помимостекаTCP/IP,запроизводительностьотвечаютидругиесистемныекомпоненты,напримерпроцессор. Прибольшомколичествеодновременноустановленныхсоединений загрузкаЦПможетдостигать100%.

Ещеоднавиновница—видеокарта,надолгозахватывающаяшинубезо всякихвидимыхпричин,врезультатечеговсеостальныепериферийные устройствасадятсянаголодныйпаекискоростьввода/вывода(втом числеисетевого)многократноснижается.Обновлениедрайверовили отключениевсех«агрессивных»настроеквидеокартывэтойситуации можетпомочь.

Такженестоитзабыватьиотом,чточрезмернаяфрагментациядисковогопространствасущественнозамедляетскоростьотдачи/приема файлов,чтоявляетсяоднойизосновныхпричинзамедлениязагрузок web-страничекуконечныхпользователей.

Вобщем,преждечемлезтьвстекTCP/IP,следуетубедиться,чтовсе остальныевозможныепричиныустраненыиузкимместомявляются именнонастройкисетевыхпротоколов,анечто-тоиное(внимание: «убедиться»—этосовсемнетожесамое,что«убедитьсебя»).

MTU+MSS=???

MTU(MaximumTransmissionUnit—максимальныйразмерпередаваемо-

гопакета),вероятно,самыйизвестныйпараметрTCP/IP,рекомендации понастройкекоторогоможновстретитьпрактическивлюбойстатьепо оптимизацииTCP/IP.Сотниутилитпредлагаютсвоиуслугипоопределениюпредельноточногозначения,но,увы,обещанногоувеличения производительностинедостигается.

MTUзадаетнаибольшийвозможныйразмеротправляемогоIP-пакета (вместесзаголовком),нарезаяотправляемыеданныенапорциификсированногоразмера.ЧембольшеMTU,темниженакладныерасходы напередачуслужебнойинформации,азначит,вышеКПДканала.С другойстороны,маршрутизаторысваливаютпакеты,поступающиеот разныхузлов,вобщуюочередь,ипотомугораздовыгоднееотправить одинбольшойпакет,чемдвамаленьких,причемчемсильнеезагружен маршрутизатор,тембольшийвыигрышмыполучим.

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

Зависимость скорости передачи данных от размера MTU

Запускамутилитуредакторареестраиоткрываемвнейследующий раздел:HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ Interfaces\interfaceGUID.ВидимпараметрMTUтипаDWORD(аеслине видим,тосоздаем)ивводимтребуемыйразмервбайтах(например, 0xFFFFFFFFозначает«использоватьзначениеMTUпоумолчанию»). ИнтерфейсызаданыGUID-идентификаторами,иобычноихбывает намногобольшеодного.Каксрединихнайтиинтерфейскабельного модемаиликонкретнойсетевойкарты?Даоченьпросто—поIP-адресу! Существуетвозможностьавтоматическогоопределениямаршрута,

покоторомупакетысзаданнымMTUпроходятбезфрагментации (параметрEnablePMTUDiscoveryтипаDWORD,находящийсявтойже ветвиреестра,чтоиMTU;значение«1»включаетэтуфункцию,«0» выключает).Однакомногиеадминистраторыпромежуточныхузловпо соображениям

безопасностиблокируютотправкуICMP-сообщений,иузел-отправитель остаетсявполномневеденииотносительнофактафрагментации.Специальнодляобнаружениятакихвот«неправильных»маршрутизаторов (прозванных«чернымидырами»)Windowsподдерживаетспециальный алгоритм,управляемыйпараметромEnablePMTUDiscovery(вовсеманалогичнымEnablePMTUDiscovery).Вподавляющембольшинствеслучаев использованиеопцийEnablePMTUDiscoveryиEnablePMTUDiscovery

приводиткснижениюпроизводительности.

Ещеодинпараметр—MSS(MaximumSegmentSize—максимальныйраз- мерсегмента)—отвечаетзамаксимальныйразмерпередаваемыхданных завычетомдлинызаголовкаIP-пакета.Трогатьегонеследует,даиWindows всеравноэтогонепозволит.ВобщемслучаеMSS=MTU-40байт.

TCPReceiveWindow

РазмерTCP-окна—малоизвестный,ночрезвычайноважный(вплане производительности)параметр,способныйувеличитьпропускную способностьвнесколькораз.Рассмотримдваузла,AиB,изаставимузел AпередаватьузлуBданные,разбитыенасегменты,размеркоторых(как ужеговорилось)определяетсяпараметромMSS.ПротоколTCPработает сустановкойсоединения,чтообязываетегоотправлятьуведомления обуспешнопринятыхсегментах.Неподтвержденныесегментыспустя некотороевремяпередаютсяузломAвновь.

Промежутоквременимеждуотправкойпакетаиегополучениемназываетсязадержкой(latency),иэталатентностьвзависимостиоттипаи загруженностисетиварьируетсяот20мс(именее)до100мс(иболее). Легкопосчитать,чтоеслибыподтверждалсякаждыйсегмент,тодажев низколатентнойсетиреальнаяскоростьпередачизаметноотставалабы отеепотенциальныхвозможностейибылабыравнаMTU/(2*latency), чтообразуетпределв6Мбит/с,независящийотпропускнойспособности.Кошмар!

ВотпоэтомусоздателиTCP/IPиразрешилиузлуAотправлятьболее одногосегмента,недожидаясьподтверждения.Максимальноеколичес-

xàêåð 08 /104/ 07

143

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

>>to BUYХАКЕР.PRO

w Click

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

MTU и MSS

твосегментов,котороеможнопередатьдоприходаподтверждения,и называетсяразмеромTCP-окна.

Почемуэтотпараметртакважендлядостижениянаибольшейпроизводительности?Допустим,мыимеемканал10Мбитипередаем7сегментовпо1460байткаждый,тратянаэто8мс.Еслилатентностьсоставляет 100мс,то100мс+92мс=192мс.Мы,какидиоты,ждемподтверждения целых 192мс,и96%времениузелАпроводитвбездействии,используялишь

4%пропускнойспособностиканала.Это,конечно,крайнийслучай,но все-такиненастольконереальный,какможнобылобыподумать.

ВпроцессеустановкисоединенияузелAпредлагаетузлуBвыставить размерокна,равный16Кб(значениепоумолчанию,прописанноев параметререестраТсрWindowSize,котороеприжеланииможноизменить).Еслиразмерокнапревышает64Кб,системаактивируеталгоритм автоматическогомасштабирования,который,впрочем,работает только втомслучае,еслиузелBтакжеподдерживаетэтотмеханизм.Однако следуетпомнить,чтослишкомбольшоеокнозабиваетканалпакетами, вызываяперегрузкусети,препятствующуюпересылкеуведомлений,в результатечегопроизводительностьпадает.

Дверекомендации:есликлиентылокальнойсетиработаютчерезрroxyсервер,тодлядостижениямаксимальнойпроизводительностидостаточ- ноизменитьразмерTCP-окнанепосредственнонасамомсервере;при работечерезNATнеобходимонастроитьTCP-окнонакаждойрабочей станции,подключеннойклокальнойсети.

Медленныйстартивыборочноеподтверждение

ДляпредотвращенияперегрузоксетивпротоколTCPбылвведентак называемый«медленныйстарт»(slowstart),подробноописанныйв RFC1122иRFC2581.ПрисозданииновогоTCP/IP-соединениясистема устанавливаетразмерокна,равныйодномусегменту.Послеполучения подтвержденияразмерокнаувеличиваетсявдвое,итакпродолжается вплотьдодостижениямаксимальновозможногоразмера. Экспоненциальныйростшириныокнасъедаетсовсемнемноговремени припередачиогромныхфайлов,новотприустановкемножестваTCP/ IP-соединений(характерных,например,длябраузеров),обмениваю- щихсякрошечнымипорциямиданных,медленныйстартзаметноснижаетэффективностьширокихканалов.Крометого,дажеприкратковременнойперегрузкесетисистемасбрасываетразмерокнавединицу. НельзязабыватьипроспециальныйпараметрSlowStartThresholdSize (пороговыйразмерокнамедленногостарта),поумолчаниюравный 65636.Послераспознаванияперегрузкисетионможетвызватьдраматическоепадениепроизводительности.

ОтключитьмедленныйстартштатнымисредствамиWindows(непри- бегаякпатчуядра)нельзя,однакоеслизадействоватьSACK-алгоритм (SelectiveAcknowledgement—выборочноеподтверждение,одноиз расширенийTCP-протокола,описанноевRFC2018),томедленныйстарт вырубаетсясамсобой,становясьприэтомникомуненужнымпережиткомстарины.

Выборочноеподтверждениепередачипозволяетосуществлять повторнуюпередачунеподтвержденныхсегментовводномокне(при неактивномSACK’епотерянныесегментыпосылаютсяодинзадругимв индивидуальномпорядке).Другимисловами,узелАповторнопередает узлуBтолькореальнопотерянныесегменты,аневесьблок,всостав котороговходятиуспешнопринятыепакеты.Очевидно,чтомаксимальныйприростпроизводительностибудетнаблюдатьсянанестабильных

каналахсвязи,регулярнотеряющихпакеты.Дляактивацииалгоритма SACKдостаточноустановитьпараметрреестраSackOptsвзначение«1».

Время,работающеепротивнас

Сподтвержденнымисегментамивсеясно.Еслиподтверждениепришло, сегментможносчитатьуспешнодоставленным.Весьвопросвтом, сколькоэтосамоеподтверждениеждатьикогданачинатьповторную пересылку.

ПоумолчаниюWin2003ждет3секунды(прижеланииэтозначение можноизменитьредактированиемпараметраTcpInitialRTT),послечего осуществляетсяповторнаяпересылканеподтвержденныхпакетов,асам интерваложиданияувеличиваетсявсоответствиисалгоритмомSRTT (SmoothedRoundTripTime—сглаженноеоцененноевремяобращения). Максимальноеколичествоповторныхпередачхранитсявпараметре TcpMaxDataRetransmissions(поумолчаниюонравенпяти),придостижениикоторогосоединениеразрывается.

Очевидно,чтонанестабильныхканалах,страдающиххроническими задержками,количестворазрывовсоединенийможносократитьпутем увеличенияпараметраTcpMaxDataRetransmissionsдолюбойразумной величины(нонебольшеFFFFFFFFh).Сдругойстороны,дляповышения производительностиинейтрализациипагубноговлиянияпотерянных пакетовнабыстрыхканалахсмалымвременемзадержкизначение TcpInitialRTTрекомендуетсяуменьшитьдооднойсекунды.

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

Задержанноеподтверждение(DelayedAcknowledgement)—еще однорасширениепротоколаTCP/IP,описанноевRFC1122ивпервые реализованноевNT4.0SP4иW2K.Вместотогочтобыподтверждать каждыйполученныйсегмент,узелBздесьотправляетподтверждение

тольковтомслучае,есливтечениеопределенногопромежуткавремени (хранящегосявпараметреTcpDelAckTicksипоумолчаниюравного200 мс)отузлаAнебылополученониодногосегмента.Другимисловами, еслисегментыидутдружнымикосякамиивсеработаетнормально, подтверждениянеотправляютсядотехпор,покавсетиневозникнет «затор».Немногоподождав,узелBвысылаетподтверждениевсех полученныхсегментов,даваяузлуAвозможностьсамостоятельноразобраться,какиесегментыпотерялисьвдороге,ипередатьихповторнос минимальныминакладнымирасходами.

Ксожалению,задержка,выбраннаякомпаниейMicrosoftпоумолчанию, близкаклатентностисетейсбольшимизадержками,чтосводитнанет вседостоинстваэтогоалгоритма,идляповышенияпроизводительностизначениеTcpDelAckTicksрекомендуетсяувеличитьвнесколько раз.Соответственно,нанизколатентныхсетяхеголучшеуменьшить, ликвидируяникомуненужныепростои.Значенияэтогопараметра могутварьироватьсявдиапазонеот0до6,выражаемомвдесятыхдолях секунды,тоестьединицасоответствует100мс,анольтрактуетсякак запретнаиспользованиезадержанныхподтверждений.

ПрииспользованииTCP-оконбольшогоразмерарекомендуетсязадейс- твоватьалгоритмвременныхметок(TCP-Timestamps),описанныйвRFC 1323,автоматическиадаптирующийзначениетаймераповторнойпередачидажевусловияхбыстроменяющихсяхарактеристикканаласвязи. ЗаэтоотвечаетпараметрTcp1323Opts,который,будучиустановленным взначение3,разрешаетиспользованиевсехрасширенийRFC1323.z

144

xàêåð 08 /104/ 07

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

07)АВГУСТ08( x

2007

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

104

Соседние файлы в папке журнал хакер