LinuxForum.Fans
Тема

Ограничение количество сессий для 1 IP

Автор: uaradio 50 сообщений 16281 просмотров
#125283
Vadimsky написал:
[quote=a-x]разве что радикально

Конечно радикально.
Отрубил торенты и можно спокойно спать. Пусть дома качают.[/quote]
торент тоже вещь хитрая smile

#125379
astalavista написал:
Шейпер стоит! Но шейпер ограничивает скорость! Я понимаю что средствами iptables возможно это как то решить. Но как? Так как торент могут ставить на скачку по 20 штук сразу и это то и забивает канал из-за количества соединений!

Ну, так сказано, что соединение устанавливается SYN пакетом, вот их и ограничивайте. -m conntrack --ctstate NEW
Как, тут кому чего больше подходит - limit, recent.

Н.р.

text
iptables -A torrent -m recent --update --seconds 600 --hitcount 3 -j DROP
iptables -A torrent -m recent --set -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m conntrack --ctstate NEW -p tcp --dport [список портов] -j ACCEPT iptables -A FORWARD -m conntrack --ctstate NEW -p tcp -j torrent

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

#125447

... так это получается применяется к общему потоку. А как, чтобы это можно было сделать определенному ip ? к примеру 192.168.0.2...

#125545
astalavista написал:
... так это получается применяется к общему потоку. А как, чтобы это можно было сделать определенному ip ? к примеру 192.168.0.2...

iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.2 -p tcp -j torrent

#125716

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

text
iptables -A torrent -m recent --update --seconds 600 --hitcount 3 -j DROP
iptables -A torrent -m recent --set -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -p tcp --dport 80 443 53 -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.2 -p tcp -j torrent iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.3 -p tcp -j torrent iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.4 -p tcp -j torrent ... iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.10 -p tcp -j torrent

Так а то чту у меня клиенты ходят через NAT и я ограничиваю скорость через htb для каждого, то у меня путаница какая то получается?
Прошу подскажите поточнее, я не сильно разбираюсь в iptables и оно мне с большим трудом дается.
Спасибо!

#125721
astalavista написал:
Простите за безграмотность. Я немного не понял, мне для каждого ip нужно добавлять первые четыре строки и потом для каждого строку с ip ?

Первые 4 строки один раз добавляются.

А дальше для каждого ип нужно завернуть проверку в цепочку torrent

Т.е. вот эту строчку повторять для каждого ип

[console]iptables -A FORWARD -m conntrack --ctstate NEW -s <ip адрес клиента> -p tcp -j torrent[/console]

#125730

astalavista зря! закрой просто все лишние порты и всё.

#125763
elve написал:
Первые 4 строки один раз добавляются.

А дальше для каждого ип нужно завернуть проверку в цепочку torrent

Т.е. вот эту строчку повторять для каждого ип

...а через nat пусть тоже будет пробрасываться?
Получается что через nat пусть ходит и через forward тоже?

#125775

iptables -S выдает у меня сечас это.

text

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DMZ_INET_FORWARD_CHAIN
-N DMZ_INPUT_CHAIN
-N DMZ_LAN_FORWARD_CHAIN
-N EXT_ICMP_FLOOD_CHAIN
-N EXT_INPUT_CHAIN
-N EXT_OUTPUT_CHAIN
-N HOST_BLOCK
-N INET_DMZ_FORWARD_CHAIN
-N LAN_INET_FORWARD_CHAIN
-N LAN_INPUT_CHAIN
-N MAC_FILTER
-N RESERVED_NET_CHK
-N SPOOF_CHK
-N UPNP_FORWARD
-N VALID_CHK
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state ESTABLISHED -j ACCEPT 
-A INPUT -p tcp -m state --state RELATED -m tcp --dport 1024:65535 -j ACCEPT 
-A INPUT -p udp -m state --state RELATED -m udp --dport 1024:65535 -j ACCEPT 
-A INPUT -p icmp -m state --state RELATED -j ACCEPT 
-A INPUT -j HOST_BLOCK 
-A INPUT -i eth2 -j MAC_FILTER 
-A INPUT -j SPOOF_CHK 
-A INPUT -i eth0 -j VALID_CHK 
-A INPUT -i eth0 -p ! icmp -m state --state NEW -j EXT_INPUT_CHAIN 
-A INPUT -i eth0 -p icmp -m state --state NEW -m limit --limit 60/sec --limit-burst 100 -j EXT_INPUT_CHAIN 
-A INPUT -i eth0 -p icmp -m state --state NEW -j EXT_ICMP_FLOOD_CHAIN 
-A INPUT -i eth2 -j LAN_INPUT_CHAIN 
-A INPUT -m limit --limit 1/sec -j LOG --log-prefix "Dropped INPUT packet: " --log-level 6 
-A INPUT -j DROP 
-A FORWARD -i lo -j ACCEPT 
-A FORWARD -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
-A FORWARD -m state --state ESTABLISHED -j ACCEPT 
-A FORWARD -p tcp -m state --state RELATED -m tcp --dport 1024:65535 -j ACCEPT 
-A FORWARD -p udp -m state --state RELATED -m udp --dport 1024:65535 -j ACCEPT 
-A FORWARD -p icmp -m state --state RELATED -j ACCEPT 
-A FORWARD -j HOST_BLOCK 
-A FORWARD -i eth2 -j MAC_FILTER 
-A FORWARD -i eth0 -o ! eth0 -j UPNP_FORWARD 
-A FORWARD -j SPOOF_CHK 
-A FORWARD -i eth0 -j VALID_CHK 
-A FORWARD -i eth2 -o eth2 -j ACCEPT 
-A FORWARD -i eth2 -o eth0 -j LAN_INET_FORWARD_CHAIN 
-A FORWARD -m limit --limit 1/min --limit-burst 3 -j LOG --log-prefix "Dropped FORWARD packet: " --log-level 6 
-A FORWARD -j DROP 
-A OUTPUT -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 
-A OUTPUT -m state --state ESTABLISHED -j ACCEPT 
-A OUTPUT -j HOST_BLOCK 
-A OUTPUT -f -m limit --limit 3/min -j LOG --log-prefix "FRAGMENTED PACKET (OUT): " --log-level 6 
-A OUTPUT -f -j DROP 
-A OUTPUT -o eth0 -j EXT_OUTPUT_CHAIN 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-request(ping) flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 8 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 3 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-unreachable flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 3 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 4 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-source-quench flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 4 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 11 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-time-exceeded flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 11 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 12 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-param.-problem flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m icmp --icmp-type 12 -j DROP 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP(other) flood: " --log-level 6 
-A EXT_ICMP_FLOOD_CHAIN -p icmp -j DROP 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0 -m limit --limit 6/hour --limit-burst 1 -j LOG --log-prefix "TCP port 0 OS fingerprint: " --log-level 6 
-A EXT_INPUT_CHAIN -p udp -m udp --dport 0 -m limit --limit 6/hour --limit-burst 1 -j LOG --log-prefix "UDP port 0 OS fingerprint: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0 -j DROP 
-A EXT_INPUT_CHAIN -p udp -m udp --dport 0 -j DROP 
-A EXT_INPUT_CHAIN -p tcp -m tcp --sport 0 -m limit --limit 6/hour -j LOG --log-prefix "TCP source port 0: " --log-level 6 
-A EXT_INPUT_CHAIN -p udp -m udp --sport 0 -m limit --limit 6/hour -j LOG --log-prefix "UDP source port 0: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --sport 0 -j DROP 
-A EXT_INPUT_CHAIN -p udp -m udp --sport 0 -j DROP 
-A EXT_INPUT_CHAIN -p udp -m udp --sport 67 --dport 68 -j ACCEPT 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "ICMP-request: " --log-level 6 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 3 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-unreachable: " --log-level 6 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 4 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-source-quench: " --log-level 6 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 11 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-time-exceeded: " --log-level 6 
-A EXT_INPUT_CHAIN -p icmp -m icmp --icmp-type 12 -m limit --limit 12/hour --limit-burst 1 -j LOG --log-prefix "ICMP-param.-problem: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 3/min -j LOG --log-prefix "Stealth scan (UNPRIV)?: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0:1023 ! --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 3/min -j LOG --log-prefix "Stealth scan (PRIV)?: " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -j DROP 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 0:1023 -m limit --limit 6/min --limit-burst 2 -j LOG --log-prefix "Connection attempt (PRIV): " --log-level 6 
-A EXT_INPUT_CHAIN -p udp -m udp --dport 0:1023 -m limit --limit 6/min --limit-burst 2 -j LOG --log-prefix "Connection attempt (PRIV): " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -m tcp --dport 1024:65535 -m limit --limit 6/min --limit-burst 2 -j LOG --log-prefix "Connection attempt (UNPRIV): " --log-level 6 
-A EXT_INPUT_CHAIN -p udp -m udp --dport 1024:65535 -m limit --limit 6/min --limit-burst 2 -j LOG --log-prefix "Connection attempt (UNPRIV): " --log-level 6 
-A EXT_INPUT_CHAIN -p tcp -j DROP 
-A EXT_INPUT_CHAIN -p udp -j DROP 
-A EXT_INPUT_CHAIN -p icmp -j DROP 
-A EXT_INPUT_CHAIN -m limit --limit 1/min -j LOG --log-prefix "Other-IP connection attempt: " --log-level 6 
-A EXT_INPUT_CHAIN -j DROP 
-A EXT_OUTPUT_CHAIN -j ACCEPT 
-A LAN_INET_FORWARD_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 20/sec --limit-burst 100 -j ACCEPT 
-A LAN_INET_FORWARD_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "ICMP-request: " --log-level 6 
-A LAN_INET_FORWARD_CHAIN -p icmp -m icmp --icmp-type 8 -j DROP 
-A LAN_INET_FORWARD_CHAIN -j ACCEPT 
-A LAN_INPUT_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 20/sec --limit-burst 100 -j ACCEPT 
-A LAN_INPUT_CHAIN -p icmp -m icmp --icmp-type 8 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "ICMP-request: " --log-level 6 
-A LAN_INPUT_CHAIN -p icmp -m icmp --icmp-type 8 -j DROP 
-A LAN_INPUT_CHAIN -j ACCEPT 
-A RESERVED_NET_CHK -s 10.0.0.0/8 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "Class A address: " --log-level 6 
-A RESERVED_NET_CHK -s 172.16.0.0/12 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "Class B address: " --log-level 6 
-A RESERVED_NET_CHK -s 192.168.0.0/16 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "Class C address: " --log-level 6 
-A RESERVED_NET_CHK -s 169.254.0.0/16 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "Class M$ address: " --log-level 6 
-A RESERVED_NET_CHK -s 10.0.0.0/8 -j DROP 
-A RESERVED_NET_CHK -s 172.16.0.0/12 -j DROP 
-A RESERVED_NET_CHK -s 192.168.0.0/16 -j DROP 
-A RESERVED_NET_CHK -s 169.254.0.0/16 -j DROP 
-A SPOOF_CHK -s 192.168.1.0/24 -i eth2 -j RETURN 
-A SPOOF_CHK -s 192.168.1.0/24 -m limit --limit 3/min -j LOG --log-prefix "Spoofed packet: " --log-level 6 
-A SPOOF_CHK -s 192.168.1.0/24 -j DROP 
-A SPOOF_CHK -j RETURN 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -m limit --limit 3/min -j LOG --log-prefix "Stealth XMAS scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -m limit --limit 3/min -j LOG --log-prefix "Stealth XMAS-PSH scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -m limit --limit 3/min -j LOG --log-prefix "Stealth XMAS-ALL scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -m limit --limit 3/min -j LOG --log-prefix "Stealth FIN scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 3/min -j LOG --log-prefix "Stealth SYN/RST scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -m limit --limit 3/min -j LOG --log-prefix "Stealth SYN/FIN scan(?): " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -m limit --limit 3/min -j LOG --log-prefix "Stealth Null scan: " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-option 64 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "Bad TCP flag(64): " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-option 128 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "Bad TCP flag(128): " --log-level 6 
-A VALID_CHK -p tcp -m tcp --tcp-option 64 -j DROP 
-A VALID_CHK -p tcp -m tcp --tcp-option 128 -j DROP 
-A VALID_CHK -m state --state INVALID -j DROP 
-A VALID_CHK -f -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "Fragmented packet: " 
-A VALID_CHK -f -j DROP 

потом через скрипт

text
#!/bin/bash
iptables -A POSTROUTING -t nat -s 192.168.1.2 -j SNAT --to-source 10.1.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.3 -j SNAT --to-source 10.1.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.4 -j SNAT --to-source 10.1.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.5 -j SNAT --to-source 10.1.1.1
iptables -A POSTROUTING -t nat -s 192.168.1.6 -j SNAT --to-source 10.1.1.1
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 101
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.1.4 -j MARK --set-mark 102
iptables -t mangle -A PREROUTING -s 192.168.1.4 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.1.5 -j MARK --set-mark 103
iptables -t mangle -A PREROUTING -s 192.168.1.5 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.1.6 -j MARK --set-mark 104
iptables -t mangle -A PREROUTING -s 192.168.1.6 -j RETURN

Я так понимаю что возможно в скрипт дописать это?

#126193

Решая не совсем тривиальные задачи, я бы iptables изучил получше, там всё просто, а главное не будет таких ляпов
...а через nat пусть тоже будет пробрасываться?
Получается что через nat пусть ходит и через forward тоже?

достаточно пару картинок глянут, чтобы понять где там нат, а где форвард.

#126204

nat - это маршрутизация,
forward - фильтрация.
Это в принципе разные вещи.
Говоря простым языком, то nat говорит куда идти, а forward говорит кому идти (или не идти).

#126218

Сделал так

text
iptables -A torrent -m recent --update --seconds 600 --hitcount 3 -j DROP
iptables -A torrent -m recent --set -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate NEW -p tcp --dport 80 443 53 -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.2 -p tcp -j torrent iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.3 -p tcp -j torrent iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.4 -p tcp -j torrent ... iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.10 -p tcp -j torrent

Выдает

text
Couldn't load target `torrent`:/lib/xtables/libipt_torrent.so: cannot open shared object file: No such file or directory

Это наверное какой то модуль не установлен? Как его установить?

#126230

Я не поддерживаю вышестоящую идею но подскажу.
Перед тем как что что кидать в цепочку torrent её надо создать.

iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.2 -p tcp -j torrent
ну ну с такими правилами вас юзеры порвут как тузик грелку.

#126263
Kettler написал:

iptables -A FORWARD -m conntrack --ctstate NEW -s 192.168.0.2 -p tcp -j torrent
ну ну с такими правилами вас юзеры порвут как тузик грелку.

А конкретнее, за что будут рвать?

#126265

Да потомуч-то по умолчанию всех гонит через torrent
а там через
iptables -A torrent -m recent --update --seconds 600 --hitcount 3 -j DROP

#126271

Тут надо по другому. Иметь 2 цепочки
В первую цепочку гнать нам основые порты (53 80 110 5190 и т. д)
Во вторую всё что нам не известно и всякую хрень. Но ещё чтоб на засрали канал настроить tc ну это уже приоритет прохождения.

#126282

Помогите пожалуйста практическим советом. Если можно скиньте скрипт, который добавляет эти правила в iptables. Я настолько уже устал, если честно, от этого поиска решения и т.п. что мне уже ... :(

#126284

astalavista вы провайдер или кто? Вам уже сказали закрыть все порты и открыть нужные
Сначала найдите проблему потом можно решить.

#126291
Kettler написал:
Тут надо по другому. Иметь 2 цепочки
В первую цепочку гнать нам основые порты (53 80 110 5190 и т. д)
Во вторую всё что нам не известно и всякую хрень. Но ещё чтоб на засрали канал настроить tc ну это уже приоритет прохождения.

Так и было сказано, внимательнее надо бы smile

#126296
Kettler написал:
astalavista вы провайдер или кто? Вам уже сказали закрыть все порты и открыть нужные
Сначала найдите проблему потом можно решить.

Какие порты Вы так настойчиво предлагате закрыть? Обрубить торрент так можно, так вот тогда клиенты и съедят smile

Войдите или зарегистрируйтесь, чтобы ответить.