ISP`s IT Аутсорсинг
Быстрый переход: Главная блога Главная сайта Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем форуме и мы попробуем Вам помочь.
Subnets.ru Регистрация IP и Автономных систем mega-net.ru

Архивные статьи в категории ‘Cisco Systems’

Добро пожаловать в блог! Надеемся, что Вы еще вернетесь.

Введение

Поводом к посту послужил поиск проблемы, следующего характера: блокированные пользователи с помощью ACL на SVI на 3560 продолжают работать.

Данный пост не претендует на некое открытие, возможно автор изначально не внимательно читал rtfm)

Схема работы сети абсолютно стандартная: 3560 в роли L3 -> trunk ports -> L2 коммутаторы. Все пользователи находятся в своих Vlan, для каждого vlan свой SVI на 3560.

Сами конфиги

!
interface GigabitEthernet0/5
switchport trunk encapsulation dot1q
switchport trunk allowed vlan 308,508,553,901-938,951-958,1010-1030
switchport mode trunk
mac access-group DropL2InvalidFrames in

!
interface Vlan904
ip address х.х.х.х 255.255.255.248
ip access-group vlan904-in in
ip access-group vlan904-out out

!
interface Vlan909
ip address у.у.у.у 255.255.255.248
ip access-group vlan909-in in

!
mac access-list extended DropL2InvalidFrames
deny any 0180.c200.0000 0000.0000.000f
deny any host 0180.c200.0010
deny any host 0100.0c00.0000
deny any host 0100.0ccc.cccc
deny any host 0100.0ccc.cccd
deny any host 0100.0ccd.cdce
deny any host 0100.0ccd.cdd0
permit any any
!

sh ip access-lists vlan904-in

Extended IP access list vlan904-in
10 deny tcp host х.х.х.х any eq 445
20 deny tcp host х.х.х.х any eq 135
30 deny tcp host х.х.х.х any eq 139
40 permit ip any any

sh ip access-lists vlan909-in

Extended IP access list vlan909-in
10 deny ip у.у.у.у 0.0.0.7 any
20 permit ip any any

Вывод

Как видно из конфигурации, что клиент находящийся во vlan 909 не должен работать, однако, это не так. После долгих поисков и проб с конфигурацией ACL, было выяснено — исключение строки

mac access-group DropL2InvalidFrames in

из конфигурации порта коммутатора восстанавливало работу ACL L3.

После изучения документа Catalyst 3560 Switch Software Configuration Guide находим некоторые полезные фрагменты:

When an input router ACL and input port ACL exist in an switch virtual interface (SVI), incoming
packets received on ports to which a port ACL is applied are filtered by the port ACL. Incoming
routed IP packets received on other ports are filtered by the router ACL. Other packets are not
filtered.

И еще выдержка:

After you create a MAC ACL, you can apply it to a Layer 2 interface to filter non-IP traffic coming in
that interface. When you apply the MAC ACL, consider these guidelines:
• If you apply an ACL to a Layer 2 interface that is a member of a VLAN, the Layer 2 (port) ACL
takes precedence over an input Layer 3 ACL applied to the VLAN interface or a VLAN map applied
to the VLAN. Incoming packets received on the Layer 2 port are always filtered by the port ACL.
• You can apply no more than one IP access list and one MAC access list to the same Layer 2 interface.
The IP access list filters only IP packets, and the MAC access list filters non-IP packets.

Данный текст можно притянуть «за уши» к решению проблемы и принять, что это так, но однако сам документ, равно как и автор более широко осветить решение данной проблемы не может. Пока этот обнаруженный факт оставляем, как заметка №1, которую надо учитывать при настройке коммутаторов 3560.

P.S. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: zaikini
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 3, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Вступление

Время от времени поднимается вопрос:

«А может ли Cisco выступать в качестве pptp-клиента?»

и, обычно, на него следует ответ: «Нет».

Однако, большинство IOS версий 12.2 или выше поддерживают это, если дана комманда service internal (она скрытая — по «?» не отображается, но работает) . После выполнения этой комманды в разделе vpdn group в секции request-dialin становятся доступны комманды rotary-group и pool-member.

Рабочая конфигурация на примере Cisco 827-V4 :

!
service internal
!

рекомендуется, подробности ниже — в «Ссылках»:
!
no ip gratuitous-arps
!
ip multicast-routing
!

Включаем VPN
!
vpdn enable
!
vpdn-group 1
request-dialin
protocol pptp
rotary-group 0

IP-адреса PPTP серверов:

initiate-to ip 1.1.1.1
initiate-to ip 2.2.2.2
!

Настройки Dialer0:
interface Dialer0

Уменьшение стандартного MTU:
mtu 1450

Получаем IP от PPTP сервера:
ip address negotiated

Источник сетевой активности, для автоустановления соединения, без использования дополнительных маршрутов:
ip pim dense-mode

Выставляем инкапсуляцию:
encapsulation ppp

Продолжаем настройку Dialer0:

dialer in-band
dialer idle-timeout 0
dialer string 123 ! Рекомендуется, но не используется
dialer vpdn
dialer-group 1
no cdp enable
ppp pfc local request
ppp pfc remote apply
ppp encrypt mppe auto
ppp chap hostname ВАШ_ЛОГИН
ppp chap password 0 ВАШ_ПАРОЛЬ
!
dialer-list 1 protocol ip permit

Маршруты до PPTP-серверов:
ip route 1.1.1.1 255.255.255.255 Ethernet0
ip route 2.2.2.2 255.255.255.255 Ethernet0

Маршрут по умолчанию через VPN:
ip route 0.0.0.0 0.0.0.0 Dialer0

После применения данной конфигурации у вас должен сразу подняться туннель:

Router#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
Ethernet0                  192.168.221.106 YES DHCP   up                    up
Dialer0                    10.255.0.1      YES IPCP   up                    up
Virtual-Access1            unassigned      YES unset  up                    up

Подняться default роутинг:

Router#sh ip route
Gateway of last resort is 0.0.0.0 to network 0.0.0.0

     1.1.1.0/32 is subnetted, 1 subnets
S       1.1.1.1 [1/0] via 192.168.221.1
     10.0.0.0/32 is subnetted, 2 subnets
C       10.30.10.1 is directly connected, Dialer0
C       10.255.0.1 is directly connected, Dialer0
C    192.168.221.0/24 is directly connected, Ethernet0
S*   0.0.0.0/0 is directly connected, Dialer0

Ссылки:

P.S. Все команды в вышеприведенной конфигурации являются обязательными.
P.P.S. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: Панфилов Алексей (lehis (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 2, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Введение

Есть такая удобная штука как CDP ( Cisco Discovery Protocol ) — проприетарный протокол второго уровня модели OSI, разработанный компанией Сisco Systems, позволяющий обнаруживать подключенное (напрямую или через устройства первого уровня) сетевое оборудование Сisco, его название, версию IOS и IP-адреса.

Устройство посылает мультикаст анонс на MAC адрес 0100.0ccc.cccc. В конфигурации по-умолчанию анонсы рассылаются каждые 60 секунд на порты Ethernet, Frame Relay и ATM. Каждое устройство, понимающее протокол, сохраняет полученную информацию в таблице и позволяет посмотреть её по команде show cdp neighbours. Если устройство трижды не прислало анонс (при значениях по-умолчанию — 3 минуты), оно удаляется из таблицы. Возникло желание на оборудовании Cisco видеть, какие сервера FreeBSD и через какие сетевые карты подключены.

Практическая реализация

В ответ на желаемое google.ru выдал ссылку на net/ladvd в дереве портов FreeBSD. Этот порт занимается тем, что рассылает анонсы по протоколам CDP и LLDP. Нам как раз подходит первый из них.

Устанавливаем, как обычно:

cd /usr/ports/net/ladvd
make install clean

Добавляем строки в /etc/rc.conf для автозапуска демона при старте системы:

ladvd_enable=»YES»
ladvd_flags=»-c»

флаг -c означает, что сервер будет рассылать анонсы по протоколу CDP.

запускаем демона вручную

/usr/local/etc/rc.d/ladvd start

смотрим на Cisco результат:

Switch> show cdp neighbors

Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone

Device ID                 Local Intrfce    Holdtme   Capability    Platform      Port ID
server01.mydomain.ru      Gig 0/19         165            R        FreeBSD       bge0
Switch-14                 Gig 0/9          125          R S I      WS-C3560G     Gig 0/8

Смотрим внимательнее:

Switch>sh cdp neighbors detail

Device ID: server01.mydomain.ru
Entry address(es):
IP address: 192.168.32.23
Platform: FreeBSD,  Capabilities: Router
Interface: GigabitEthernet0/19,  Port ID (outgoing port): bge0
Holdtime : 156 sec

Version :
FreeBSD 7.0-RELEASE FreeBSD 7.0-RELEASE #2: Wed Sep 24 19:33:17 MSD 2008     root@server01.mydomain.ru :/usr/src/sys/i386/compile/SERVER01 i386

advertisement version: 2
Duplex: full
Management address(es):

В случае возникновения проблем запускаем демона ladvd в «недемоническом» 🙂 режиме, запустите его с ключами:

ladvd -f -c -vvv

Вывод будет, примерно, таким:

found ethernet interface bge0
adding interface bge0
found ethernet interface bge1
skipping interface bge1 (down)
skipping interface pflog0
skipping interface pfsync0
skipping interface lo0
fetching addresses for all interfaces
ladvd 0.6.1 running
fetching all interfaces
found ethernet interface bge0
adding interface bge0
found ethernet interface bge1
skipping interface bge1 (down)
skipping interface pflog0
skipping interface pfsync0
skipping interface lo0
fetching addresses for all interfaces
starting loop with interface bge0
fetching bge0 media details
autoneg supported on bge0
autoneg enabled on bge0
full-duplex enabled on interface bge0
building cdp packet for bge0
sending cdp packet (262 bytes) on bge0
sleeping for 30 seconds

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

P.S. И два слова о безопасности:

необходимо отключать протокол cdp на интерфейсах, выходящих за защищённый периметр, так как передаваемая информация (например, версия IOS) может использоваться для подготовки атаки через уязвимость конкретной версии IOS.

Глобально, на всем девайсе, выключение CDP производится командой:

Switch(config)# no cdp run

или для конкретного интерфейса:

Switch(config-if)# no cdp enable

P.P.S. О настройке CDP на оборудовании Cisco Systems будет рассказано дополнительно в отдельной статье.

P.P.P.S. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !
Автор: Панфилов Алексей (lehis (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 4, среднее: 4,75 из 5)
Загрузка...
Отправить на почту Отправить на почту

В продолжении статьи «Конфигурация OSPF на оборудовании Cisco Systems» посмотрим как в данной схеме можно выполнить редистрибуцию статических маршрутов, ну скажем на маршрутизаторе Б, в протокол OSPF.

Например на маршрутизаторе Б появился статический маршрут, ну скажем 192.168.0.0/24:

Switch> enable
Switch# configure terminal
Switch(config)# ip route 192.168.0.0 255.255.255.0 10.0.1.10

и мы хотим «вбросить» этот маршрут в OSPF.

С этой задачей нам поможет справится редистрибуция маршрутов из одного протокола в другой.

Приступим

1. Создадим access-list, по нему мы будем match`ить нужный нам маршрут(ы):

Switch(config)# ip access-list standard 10
Switch(config-std-nacl)# permit 192.168.0.0 0.255.255.255
Switch(config-std-nacl)# exit

2. Создадим маршрутную карту, в которой укажем access-list созданный в п.1:

Switch(config)# route-map redistr-static permit 100
Switch(config-route-map)# match ip address 10
Switch(config-route-map)# exit

3. Укажем OSPF, что мы хотим сделать редистрибуцию:

Switch(config)# router ospf 10
Switch(config-router)# redistribute static route-map redistr-static

4. Сохраним конфиг:

Switch(config-router)# exit
Switch(config)# exit
Switch# wri

Вот и все. Теперь все статические маршруты, попадающие под access-list 10 будут редистрибутированы в OSPF.

Не могу не подметить, что в команде redistribute, можно:
а) задать и метрику, с которой будет выполняться данная редистрибуция:

Switch(config-router)# redistribute static route-map redistr-static metric 15

б) задать tag, с которым будет распространяться маршрут (по нему, на других маршрутизаторах, можно определять откуда маршрут пришел):
Switch(config-router)# redistribute static route-map redistr-static metric 15 tag 1

Посмотрим, route-map и access-list на маршрутизаторе Б:
Switch# show route-map redistr-static

route-map redistr-static, permit, sequence 100
Match clauses:
ip address (access-lists): 10
Set clauses:
Policy routing matches: 0 packets, 0 bytes

Switch# show access-lists 10

Standard IP access list 10
    10 permit 192.168.0.0, wildcard bits 0.255.255.255 (2 matches)

На маршрутизаторе А вы должны видеть этот маршрут:
Switch# show ip route ospf | inc 192.168.0.0/24

O E2    192.168.0.0/24 [110/15] via 10.0.255.2, 1m, Vlan10

На маршрутизаторе В также:
Switch# show ip route ospf | inc 192.168.0.0/24

O E2    192.168.0.0/24 [110/15] via 10.0.255.9, 1m, Vlan100

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

З.Ы.Ы. Очепятки возможны. Если вы заметили неточность или у вас есть вопросы по данной схеме, то вы можете написать об этом на нашем форуме с соответствующем разделе.

Автор: Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 6, среднее: 5,00 из 5)
Загрузка...
Отправить на почту Отправить на почту

Вы ознакомились с теорией протокола OSPF и готовы к его настройке. Ну чтож, поехали.

Посмотрим на следующую схему сети. Что имеется:

  • 3шт. catalyst 3560G с включенной функцией маршрутизации
  • маршрутизатор А связывает нашу сеть с сетью Интернет
  • к маршрутизаторам Б и В подключены клиенты, находящиеся в 200-ом влане и IP-подсетях 10.0.1.0/24 и 10.0.2.0/24
  • у маршрутизаторов Б и В указан статический маршрут до default gateway (маршрутизатор А, 10.0.255.1)
Схема сети до включения OSPF

Схема сети до включения OSPF

В данной схеме OSPF вроде бы совсем не к чему. Можно его конечно запустить, но плюсов он особо не принесет. А теперь сделаем следущее: соединим маршрутизаторы Б и В между собой. В такой схеме, можно как минимум обеспечить резервирование линков от маршрутизатора Б до А и от В до А, а также быстро заводить новые подсети и распространить маршруты до них в нашей сети — динамическая маршрутизация (в данном случае OSPF) нам в этом поможет.

Итак полученная схема, на которой, как мне кажется, вы сможете понять/посмотреть принципы работы OSPF, которую мы и будем настраивать:

Схема с OSPF

Схема с OSPF

Мы рассмотрим работу OSPF в broadcast среде и на point-to-point соединении.

Приступим

Маршрутизатор А

Switch> enable
Switch# configure terminal
Switch(config)# vlan 10
Switch(config-vlan)# name main
Switch(config-vlan)# exit
Switch(config)# int vlan 10
Switch(config-if)# ip address 10.0.255.1 255.255.255.248

Явно укажем тип среды, в котором будет работать этот интерфейс в OSPF:

Switch(config-if)# ip ospf network broadcast
Switch(config-if)# exit

Продолжаем:

Switch(config)# ip routing
Switch(config)# ip subnet-zero
Switch(config)# ip classless

Переходим к настройке OSPF, номер процесса у нас будет 10:

Switch(config)# router ospf 10
Switch(config-router)# log-adjacency-changes

Зададим RID 255.255.255.255, для того чтобы данный маршрутизатор при выборах DR и BDR всегда выбирался как DR (у кого больший router-id тот и победит в выборах за место DR в сети если у всех маршрутизаторов одинаковый приоритет), а так же потом будет легко его определять ( в выводах show команд) по этому номеру RID как «верхний» маршрутизатор:

Switch(config-router)# router-id 255.255.255.255

Включим протокол OSPF на интерфейсе vlan 10 в Area 0:

Switch(config-router)# network 10.0.255.0 0.0.0.7 area 0

Команда network означает, что маршрутизатор включит протокол OSPF на тех IP интерфейсах, которые попадают под указанную маску подсети.

Укажем что мы хотим распространять default маршрут в сеть OSPF, т.е. данный маршрутизатор будет распространять маршрут по умолчанию:

Switch(config-router)# default-information originate

Сохраним конфигурацию:

Switch(config-router)# exit
Switch(config)# exit
Switch# wri

Маршрутизатор Б

Создадим влан 10, в котором «живут» маршрутизаторы А и В:
Switch> enable
Switch# configure terminal
Switch(config)# vlan 10
Switch(config-vlan)# name main

Создадим влан 200, в котором «живут» клиенты:

Switch(config-vlan)# vlan 200
Switch(config-vlan)# name clients
Switch(config-vlan)# exit

Зададим IP-адреса созданным вланам

Switch(config)# int vlan 10
Switch(config-if)# ip address 10.0.255.2 255.255.255.248
Switch(config-if)# ip ospf network broadcast
Switch(config-if)# int vlan 200
Switch(config-if)# ip address 10.0.1.1 255.255.255.0
Switch(config-if)# exit

Создадим влан 100, в по которому будут обмениваться маршрутизаторы Б и В

Switch(config)# vlan 100
Switch(config-vlan)# name backup
Switch(config-vlan)# exit
Switch(config)# int vlan 100
Switch(config-if)# ip address 10.0.255.9 255.255.255.252

Явно укажем тип среды, в котором будет работать этот интерфейс в OSPF, но не такой как на маршрутизаторе А, т.к. между маршрутизаторами Б и В явно выраженное p2p соединение и нет смысла проводить выборы DR и BDR на p2p линке, там всегда будет только два маршрутизатора: Б и В.

Избавим протокол OSPF от этой необходимости:

Switch(config-if)# ip ospf network point-to-point
Switch(config-if)# exit

Продолжаем:

Switch(config)# ip routing
Switch(config)# ip subnet-zero
Switch(config)# ip classless

Переходим к настройке OSPF. Номер процесса (10) может отличаться, т.к. OSPF не вставляет номер процесса в отправляемые пакеты, но мы оставим 10, мне так удобнее ;):

Switch(config)# router ospf 10
Switch(config-router)# log-adjacency-changes
Switch(config-router)# router-id 1.1.1.1
Switch(config-router)# network 10.0.255.0 0.0.0.7 area 0

Опишем интерфейс vlan 100, но тут я сделаю немного по другому, для примера:

Switch(config-router)# network 10.0.255.9 0.0.0.0 area 0

Обратите внимание на маску, которая равна 0.0.0.0. Таким образом мы указали OSPF, что только интерфейс с данным адресом участвует в OSPF.

Сделаем запись о сети 10.0.1.0/24:

Switch(config-router)# network 10.0.1.0 0.0.0.255 area 0

Сохраним конфигурацию:

Switch(config-router)# exit
Switch(config)# exit
Switch# wri

Маршрутизатор В

Создадим влан 10, в котором «живут» маршрутизаторы А и Б и влан под клиентов:
Switch> enable
Switch# configure terminal
Switch(config)# vlan 10
Switch(config-vlan)# name main
Switch(config-vlan)# vlan 200
Switch(config-vlan)# name clients
Switch(config-vlan)# exit

Зададим IP-адреса на вланы:

Switch(config)# int vlan 10
Switch(config-if)# ip address 10.0.255.3 255.255.255.248
Switch(config-if)# ip ospf network broadcast
Switch(config-if)# int vlan 200
Switch(config-if)# ip address 10.0.2.1 255.255.255.0
Switch(config-if)# exit

Создадим влан 100, в по которому будут обмениваться маршрутизаторы В и Б

Switch(config)# vlan 100
Switch(config-vlan)# name backup
Switch(config-vlan)# exit
Switch(config)# int vlan 100
Switch(config-if)# ip address 10.0.255.10 255.255.255.252
Switch(config-if)# ip ospf network point-to-point
Switch(config-if)# exit

Продолжаем:

Switch(config)# ip routing
Switch(config)# ip subnet-zero
Switch(config)# ip classless
Switch(config)# router ospf 10
Switch(config-router)# log-adjacency-changes
Switch(config-router)# router-id 2.2.2.2
Switch(config-router)# network 10.0.255.0 0.0.0.7 area 0
Switch(config-router)# network 10.0.255.10 0.0.0.0 area 0
Switch(config-router)# network 10.0.2.0 0.0.0.255 area 0
Switch(config-router)# exit
Switch(config)# exit
Switch# wri

Вот в принципе и все, что было необходимо сделать, чтобы протокол OSPF заработал в этой схеме.
Если вы ввсе сделали правильно, то по команде:

Switch# sh ip ospf neighbor

На маршрутизаторе А, вы увидите:

Neighbor ID     Pri   State       Dead Time   Address        Interface
2.2.2.2       0   FULL/BDR        00:00:30    10.0.255.3     Vlan10
1.1.1.1       0   FULL/DROTHER    00:00:39    10.0.255.2     Vlan10

На маршрутизаторе Б:

Neighbor ID     Pri   State         Dead Time   Address         Interface
255.255.255.255   0   FULL/DR       00:00:32    10.0.255.1      Vlan10
2.2.2.2           0   FULL/-        00:00:33    10.0.255.10     Vlan100

На маршрутизаторе В:

Neighbor ID     Pri   State         Dead Time   Address         Interface
255.255.255.255   0   FULL/DR       00:00:32    10.0.255.1      Vlan10
1.1.1.1           0   FULL/-        00:00:33    10.0.255.9      Vlan100

Посмотрите приходящие маршруты по протоколу OSPF:

Switch# show ip route ospf

На маршрутизаторах Б и В среди маршрутов приходящих по OSPF вы должны видеть и default:

O*E2 0.0.0.0/0 [110/1] via 10.0.255.1, 00:01:02, Vlan10

На маршрутизаторе Б, маршрут до сети 10.0.2.0/24 будет проходить по vlan 100, т.к. это кратчайший маршрут:

O       10.0.2.0/24 [110/2] via 10.0.255.10, 00:00:53, Vlan100

Соответственно на маршрутизаторе В:

O       10.0.1.0/24 [110/2] via 10.0.255.9, 00:00:53, Vlan100

Вот ещё несколько полезных команд.
show ip ospf interface
show ip ospf
show ip ospf database

Если по show ip ospf neighbor ничего нет, то:

  • проверьте правильно ли вы все сконфигурировали
  • «ходит» ли multicast по этим каналам
  • не выставлен ли storm-control или ACL на multicast
  • воспользуйтесь следующими командами debug:
    • debug ip ospf
    • debug ip ospf adj
    • debug ip ospf hello
    • debug ip ospf events
    • debug ip ospf packet

Заключение

Протокол OSPF не так прост как может показаться. Я рассмотрел только начало и совсем немного из того, что умеет данный протокол. В данной схеме, благодаря протоколу OSFP, при падении линков между маршрутизаторами Б и А или В и А связность сети не потеряется и пользователи из IP сетей 10.0.1.0/24 и 10.0.2.0/24 всегда будут иметь возможность обмениваться трафиком между собой, а также с сетью Интернет потому, что мы вбросили default маршрут в сеть OSPF.

Ссылки:

З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА !

З.Ы.Ы. Очепятки возможны. Если вы заметили неточность или у вас есть вопросы по данной схеме, то вы можете написать об этом на нашем форуме с соответствующем разделе.

Автор: Николаев Дмитрий (virus (at) subnets.ru)
Ничего не понялТак себе...Не плохоДовольно интересноОтлично ! То что нужно ! (голосов: 8, среднее: 4,75 из 5)
Загрузка...
Отправить на почту Отправить на почту