Использование Cisco 800 серии (на примере Cisco 857) в качестве маршрутизатора для дома

в 12:58, , рубрики: ADSL, Cisco, nat, PPPoE, soho, wifi, интернет, маршрутизатор, мост, Сетевое оборудование

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

Проблема была такова. Провайдер предоставляет PPPoE-подключение, я купил белый IP, активно использую интернет в том числе для поднятия своих сервисов под так называемые «pet projects». Первый мой маршрутизатор Zyxel работал несколько лет и приказал долго жить. Купленный взамен аналогичный умер быстрее. Затем я пробвал другие разные китайские поделки из ближайшего магазина, последним стал TP-Link TD-W8151N. Он работал неплохо до тех пор, пока не начиналась приличная входящая активность через NAT, после чего он постепенно вешался и переставал отвечать на запросы. Мне это надоело, и я купил через eBay списанный где-то в Америке маршрутизатор Cisco 857.

Смысл использования Cisco 800 в том, что это все-таки полупромышленное оборудование, оно вполне надежно и имеет большой ресурс. Так оно и получилось. Устройство заработало и за 3 года не показало ни единой проблемы, оно просто работало и не требовало никакого вмешательства.

Характеристики Cisco 857 такие:

  • 1 порт POTS (ADSL)
  • 4 порта Ethernet 100 Mbps FD
  • Wi-Fi 2.4 GHz 802.11g
  • COM-порт для консоли
  • Нормальная поддержка Telnet, SNMP и т.д.
  • Приличный корпус, внешний блок питания и надежда на долгую жизнь без сбоев

Конкретно мой маршрутизатор предназначен для линий ADSL, которые все еще живут в России, но, полагаю, будет актуально и для Ethernet, там даже проще (не надо поднимать ATM-интерфейс). Есть также версия без Wi-Fi. Современные модификации 800й серии поддерживают сети 802.11 более новые, чем убогий 802.11g, хотя мне хватало и его.

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

Об обновлении прошивки

Текущая версия IOS для Cisco 800 серии на момент составления мануала — 12.4. Крайне рекомендуется перепрошить с более старой, так как некоторые вещи могут не поддерживаться или работать неправильно. Процесс перепрошивки описан в мануале на роутер, в процессе потребуется TFTP-сервер в локальной сети и настроенный LAN-интерфейс.

Прежде всего надо подключиться к маршрутизатору. Он должен быть сброшен [продавцом] на дефолтные настройки и не иметь пароля. Подключаемся через консоль при помощи COM-порта через прилагаемый кабель: 9600 бод, 8 бит данных, 1 стоп бит, без проверки четности.

При заводской настройке устройсто именовано как Router, что видно в командной строке:

Router>

Переходим в привилегированный режим командой enable:

Router>enable

Приглашение изменится на

Router#

Удаляем имеющуюся конфигурацию, находящуюся во флэш-памяти:

Router#erase startup-config

Перезагружаем маршрутизатор:

Router#reload

Ждем пока роутер перезагрузится, наблюдая за процессом загрузки в окне консоли.

Отказываемся от предложения произвести первоначальную настройку:

Would you like to enter the initial configuration dialog? [yes/no]: no

Переходим в привилегированный режим.

Router>enable

Можно посмотреть версию:

Router#show version

Можно посмотреть текущую конфигурацию:

Router#show run

Заходим в режим конфигурирования:

Router#configure terminal

Даем свое имя роутеру:

Router(config)#hostname <my_hostname>

Устанавливаем шифрование паролей:

my_hostname(config)#service password-encryption

Задаем пароль на вход в привилигированный режим (без этого не будет работать конфигурирование через терминал):

my_hostname(config)#enable secret <my_password>

Создаем админа (не особо нужен, но пусть будет для порядка):

my_hostname(config)#username admin privilege 15 password 0 <my_password>

Разрешаем доступ через telnet.

Сначала создадим список доступа (назовем его terminal), который разрешит доступ только из локальной сети:

my_hostname(config)#ip access-list standard terminal
my_hostname(config-std-nacl)#permit 192.168.0.0 0.0.0.255
my_hostname(config-std-nacl)#exit

Теперь смотрим, сколько есть линий терминала:

my_hostname(config)#line vty ?

Cколько он там сказал доступно? 0-4? значит

my_hostname(config)#line vty 0 4
my_hostname(config)#access-class terminal in
my_hostname(config-line)#password <my_password>
my_hostname(config-line)#login
my_hostname(config-line)#exit

Также за ненадобностью отключаем возможность управления роутером через SDM, а так же протокол CDP:

my_hostname(config)#no ip http server
my_hostname(config)#no ip http secure-server
my_hostname(config)#no cdp run

Включаем Eth0 порт:

my_hostname(config)#interface fastethernet 0
my_hostname(config-if)#no shutdown
my_hostname(config-if)#exit

Eth0 это не полноценный интерфейс, это лишь коммутатор, который висит на vlan 1, зайдем в него:

my_hostname(config)#interface vlan 1

Задаем ему описание:

my_hostname(config-if)#description LAN

Теперь можно просто задать ему адрес и включить (попутно подняв NAT), например так:

my_hostname(config-if)#ip address 192.168.0.1 255.255.255.0
my_hostname(config-if)#ip nat inside
my_hostname(config-if)#no shutdown

Но это не даст возможности работать с сетью через Wi-Fi.

Поэтому, если требуется Wi-Fi, так делать не будем — вместо этого требуется делать мост, поместив в него свой vlan.

Продолжаем настраивать vlan:

my_hostname(config-if)#no ip address
my_hostname(config-if)#ip virtual-reassembly

Сконструируем мост (нумерация начинается с 1, как и в случае с vlan)

my_hostname(config-if)#bridge-group 1
my_hostname(config-if)#bridge-group 1 spanning-disabled

Настроим мост, в частности, сразу укажем, что нужен NAT:

my_hostname(config-if)#interface BVI1
my_hostname(config-if)#ip address 192.168.0.1 255.255.255.0
my_hostname(config-if)#ip nat inside
my_hostname(config-if)#ip virtual-reassembly

Завершаем настройку LAN-интерфейса:

my_hostname(config-if)#exit

Сохраняем сделанные настройки и перезагружаем:

my_hostname#write
my_hostname#reload

Теперь консоль можно отсоединить. Роутер доступен через telnet (21й порт) по указанному IP из локальной сети, воткнутой в Eth0 порт. Этот же адрес будет адресом шлюза по умолчанию в локальной сети. Теперь переходим к настройке подключения к провайдеру. Подключаемся через терминал по LAN, вводим пароль <my_password>, переходим в режим конфигурирования.

my_hostname>enable
my_hostname#configure terminal

Смотрим на ATM-интерфейс:
my_hostname(config)#interface atm 0

Задаем ему описание:

my_hostname(config-if)#description ADSL line

Задаем параметры работы:

my_hostname(config-if)#no ip address

Нужно узнать у провайдера значения VPI/VCI и указать их:

my_hostname(config-if)#pvc 0/35

Если нужно, указываем инкапсуляцию (обычно подходит по-умолчанию, уточнить у провайдера), например:

my_hostname(config-if-atm-vc)#encapsulation aal5snap

Указываем, что выбранный pvc будет использоваться для PPPoE-соединения:

my_hostname(config-if-atm-vc)#pppoe-client dial-pool-number 1

Завершаем настройку выбранной линии ATM:

my_hostname(config-if-atm-vc)#exit

Так как необходимо поднять PPPoE-клиент, то настраивается интерфейс dialer (нумерация с 0), на котором будет интернет:

my_hostname(config-if)#interface dialer 0
my_hostname(config-if)#description Internet

IP-адрес выберем автоматический, включим NAT:

my_hostname(config-if)#ip address negotiated
my_hostname(config-if)#ip nat outside

Надо внимательно задать размер пакетов, это важно (иначе нас ждут тормоза и глюки):

my_hostname(config-if)#ip mtu 1492
my_hostname(config-if)#ip tcp adjust-mss 1452

Указываем протокол PPP и помещаем в пул дозвонщика:

my_hostname(config-if)#encapsulation ppp
my_hostname(config-if)#dialer pool 1

Задаем ему режим аутентификации и учетные данные (все это нужно узнать у провайдера):

my_hostname(config-if)#ppp authentication pap callin
my_hostname(config-if)#ppp pap sent-username <my_ppp_login> password <my_ppp_password>

Включаем интернет:

my_hostname(config-if)#interface atm 0
my_hostname(config-if)#no shutdown

Через некоторое время должны загореться индикаторы DSL-линии и чуть позже него индикатор PPP.

Завершаем настройку внешнего интерфейса:

my_hostname(config-if)#exit

Не забыть указать маршрут по-умолчанию на интерфейс dialer 0:

my_hostname(config)#ip route 0.0.0.0 0.0.0.0 dialer 0

Теперь настроим NAT, прежде всего создадим список доступа к интернету (назовем его internet):

my_hostname(config)#ip access-list standard internet
my_hostname(config-std-nacl)#permit 192.168.0.0 0.0.0.255
my_hostname(config-std-nacl)#exit

Натравливаем NAT на интерфейс dialer 0 (LAN ранее пометили как inside, а Internet как outside):

my_hostname(config)#ip nat inside source list internet interface dialer 0 overload

Интернет из LAN теперь должен работать.
Если нужно пробросить порт из Internet в LAN, то это делается примерно так:

my_hostname(config)#ip nat inside source static tcp 192.168.0.2 80 interface dialer 0 80

Переходим к Wi-Fi.

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

my_hostname(config)#interface dot11radio 0
my_hostname(config-if)#description WLAN

Параметры шифрования соединения (надо отметить, что железяка довольно старая и новые методы не поддерживает):

my_hostname(config-if)#encryption vlan 1 mode ciphers tkip

Задаем свой SSID и ключ доступа:

my_hostname(config-if)#ssid <my_ssid>
my_hostname(config-if-ssid)#authentication open
my_hostname(config-if-ssid)#authentication key-management wpa
my_hostname(config-if-ssid)#guest-mode
my_hostname(config-if-ssid)#wpa-psk ascii 0 <my_key>
my_hostname(config-if-ssid)#exit

Включаем Wi-Fi и создаем подинтерфейс, который войдет в мост:

my_hostname(config-if)#no shutdown
my_hostname(config-if)#interface dot11radio 0.1
my_hostname(config-subif)#encapsulation dot1q 1 native
my_hostname(config-subif)#no cdp enable
my_hostname(config-subif)#bridge-group 1
my_hostname(config-subif)#exit
my_hostname(config-if)#exit

На этом этапе должен подняться WLAN-интерфейс, доступ через него будет аналогичен доступу через LAN.
Если нужно, настраиваем DHCP (иногда полезно, если нет выделенного сервера).

Для начала (если нужно) исключаем адреса, зарезервированные для других целей.

Например, для получения адресов динамически из диапазона [192.168.0.129 — 192.168.0.192] будет так:

my_hostname(config)ip dhcp excluded-address 192.168.0.1 192.168.0.128
my_hostname(config)ip dhcp excluded-address 192.168.0.193 192.168.0.254

Далее создаем пул DHCP:

my_hostname(config)ip dhcp pool dhcp
my_hostname(dhcp-config)#import all
my_hostname(dhcp-config)#network 192.168.0.0 255.255.255.0
my_hostname(dhcp-config)#default-router 192.168.0.1
my_hostname(dhcp-config)#dns-server <my_dns_server>
my_hostname(dhcp-config)#lease infinite
my_hostname(dhcp-config)#exit

Можно еще включить SNMP для сбора диагностических данных с устройства.

Прежде всего, как обычно, нужен список доступа:

my_hostname(config)#ip access-list standard snmp-public
my_hostname(config-std-nacl)#permit 192.168.0.0 0.0.0.255
my_hostname(config-std-nacl)#exit

Собственно настройка самого SNMP:

my_hostname(config)#snmp-server community public RO snmp-public

Полезно задать какой-нибудь сервер времени, чтобы часы на роутере шли правильно:

my_hostname(config)#sntp server 78.140.251.2

Наконец, зададим DNS-сервер, чтобы с роутера можно было делать ping по имени, а не только по IP:

my_hostname(config)#ip name-server 77.88.8.1

Выходим из режима конфигурирования, cохраняем настройки, перезагружаем:

my_hostname(config)#exit
my_hostname#write
my_hostname#reload

Для сбора данных через SNMP есть следующие метрики:

  • 1.3.6.1.4.1.9.2.1.56.0 (CPU Load)
  • 1.3.6.1.2.1.2.2.1.10.18 (PPP InOctets)
  • 1.3.6.1.2.1.2.2.1.16.18 (PPP OutOctets)

Для визуализации я обычно использую программу snmpmon.exe.

Автор: genuimous

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js