Pull to refresh

Cisco 1812 как домашний роутер

Reading time 6 min
Views 45K
Решил я найти замену своему D-Link DIR-300, т.к. держать качественное соединение с моим новым провайдером по L2TP он упорно отказывался, да и вообще железка морально устарела. Перечитав кучу обзоров домашних маршрутизаторов я понял, что, в принципе, они все одинаковые: с одинаковыми возможностями и скучным web-интерфейсом. А всякие плюшки, вроде внешних накопителей и торрент клиентов, мне и даром не надо. Квартира у меня маленькая, поэтому вариант установки отдельного компа по типу hp micro server не подходит, да и денег жалко.

Так уж сложилось, что живу я во Владивостоке и Япония у нас под боком, есть и неплохой, японский же, аукцион на котором продают все: от комиксов до автомобилей. Есть и раздел с серверным оборудованием, на котором я и начал свои поиски. Т.к. искал не для стойки, а для дома, то интересовало меня что-то вроде cisco 8хх серии. К сожалению таковых не нашлось, зато нашлись в большом количестве и по смешным ценам cisco 1812 , но с буквой j, единственное отличие которых от тех, что по ссылке выше — отсутствие wifi модуля. Не долго думая — заказал, через недельку получил.
Итак, что мы имеем:

Cisco IOS Software, C181X Software (C181X-ADVENTERPRISEK9-M), Version 15.0(1)M, RELEASE SOFTWARE (fc2)
Cisco 1812-J (MPC8500) processor (revision 0x400) with 118784K/12288K bytes of memory.
10 FastEthernet interfaces
1 ISDN Basic Rate interface
1 Virtual Private Network (VPN) Module
62592K bytes of ATA CompactFlash (Read/Write)

И что хотим получить:
Подключение к обычному домовому провайдеру, с локальными сервисами и L2TP туннелем во внешний мир, компьютера и ноутбука. Удаленное управление маршрутизатором по ssh и доступ на основной домашний компьютер по RDP. А так же dynamic dns.

1. Общие настройки

Для начала подключимся к маршрутизатору через консольный порт (я использую PuTTY) и войдем в привилегированный режим:

Router>en
Router#

Первым делом изменим название нашего маршрутизатора на что-нибудь более приятное глазу, чем просто “Router” и добавим ему имя домена (это пригодится при дальнейшей генерации ключа rsa для настройки ssh), так-же добавим адреса dns серверов провайдера:

Router#conf t
Router(config)#hostname home
home(config)#ip domain-name home.lan
home(config)#ip name-server x.x.x.x
home(config)#ip name-server y.y.y.y

Далее скажем роутеру шифровать пароли и архивировать конфигурационный файл:

home(config)#service password-encryption
home(config)#service compress-config

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

home(config)#username yourname secret yourpass
home(config)#enable secret your_enable_pass
home(config)#aaa new-model
home(config)#aaa authentication login default local
home(config)#aaa authorization exec default local

Осталось сгенерировать ключи, настроить ssh и сконфигурировать виртуальный терминал:

home(config)#crypto key generate rsa
home(config)#ip ssh version 2
home(config)#line vty 0 4
home(config-line)#exec-timeout 0 0
home(config-line)#transport preferred ssh
home(config-line)#transport input ssh
home(config-line)#exit

И на этом настройку базовой конфигурации можно считать законченной.

2. LAN

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

home(config)#int vlan 1
home(config-if)#ip address 192.168.0.1 255.255.255.0
home(config-if)#no ip redirects
home(config-if)#no ip unreachables
home(config-if)#no ip proxy-arp
home(config-if)#no cdp enable
home(config-if)#ip nat inside
home(config-if)#load-interval 30
home(config-if)#exit

В принципе больше ничего и не нужно, т.к. все lan порты по умолчанию в первом vlan, то можно включать в них железо, настраивать адресацию и “локалка” готова. Для ленивых можно настроить еще dhcp сервер на маршрутизаторе:
Убираем адреса которые мы не хотим отдавать по dhcp

home(config)ip dhcp excluded-address 192.168.0.1 192.168.0.99
Home(config)ip dhcp excluded-address 192.168.0.111 192.168.0.254

Создаем пул dhcp

home(config)ip dhcp pool dhcp
home(dhcp-config)#import all
home(dhcp-config)#network 192.168.0.0 255.255.255.0
home(dhcp-config)#default-router 192.168.0.1
home(dhcp-config)#dns-server 192.168.1.1
home(dhcp-config)#domain-name home.lan
home(dhcp-config)#lease infinite

Теперь можно получать адреса динамически из диапазона 192.168.0.100 — 192.168.0.110

3. WAN

Мой провайдер выпускает в глобальную сеть посредством L2TP с динамическим внешним ip адресом, поэтому будем настраивать сам туннель и при его поднятии системой отсылать полученный ip адрес серверу dyndns.org
Начнем с настроек ddns, т.к. они будут использоваться при создании подключения к провайдеру:

home(config)#ip ddns update method dyndns
home(DDNS-update-method)#HTTP
home(DDNS-HTTP)#add http://ddnsuser:ddnspass@members.dyndns.org/nic/update?system=dyndns&hostname=<h>&myip=<a>

home(DDNS-HTTP)#end

Тут есть один момент, дело в том, что в цисках по умолчанию на знак "?" выводится подсказка по командам, а как вы могли заметить, этот символ используется в строке url которая и обновляет ip адрес на dyndns. Поэтому копи-пэйст тут не сработает и придется писать url ручками, а для того чтобы вставить символ "?", перед ним необходимо нажать комбинацию клавиш «CTRL+v» и тогда "?" впечатается без проблем.
Далее сконфигурируем внешний ethernet интерфейс:

home(config)#interface FastEthernet0
home(config-if)#ip dhcp client update dns
home(config-if)#ip address dhcp
home(config-if)#ip nat outside
home(config-if)#load-interval 30
home(config-if)#end

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

home(config)l2tp-class "class name you like"

и сконфигурируем pseudowire класс (даже и не знаю как на русский это грамотно перевести):

home(config)#pseudowire-class "имя класса который создали ранее"
home(config-pw-class)#encapsulation l2tpv2
home(config-pw-class)#protocol l2tpv2 class1
home(config-pw-class)#ip local interface FastEthernet0

Ну и осталось, собственно создать сам туннельный интерфейс:

home(config)#int virtual-PPP 1
home(config-if)#ip ddns update hostname your-domain-on-dyndns.org
home(config-if)#ip ddns update dyndns
home(config-if)#ip address negotiated
home(config-if)#ip mtu 1454
home(config-if)#ip nat outside
home(config-if)#no ip virtual-reassembly
home(config-if)#ip tcp adjust-mss 1414
home(config-if)#ppp chap hostname username-from-your-isp
home(config-if)#ppp chap password pass-from-your-isp
home(config-if)#pseudowire x.x.x.x 10 pw-class "имя класса который создали ранее"
home(config-if)#end

В конфигурации туннеля есть 2 строчки которые вам могут не подойти:
ip mtu 1454 и ip tcp adjust-mss 1414. Без этих параметров данные передаваемые по туннелю фрагментировались и, соответственно, нормально ничего не работало.
По туннелю я не получал «маршрут по умолчанию», поэтому пришлось прописать его вручную:

home(config)#ip route 0.0.0.0 0.0.0.0 virtual-ppp 1 permanent

Так же у нас есть еще и локальная сеть провайдера, где нет ограничений по скорости и чтобы в нее попасть надо также прописать несколько маршрутов вручную, у меня это выглядит так:

home(config)ip route 10.0.0.0 255.0.0.0 FastEthernet0
home(config)ip route 172.16.0.0 255.240.0.0 FastEthernet0

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

4. NAT

После приведенных выше настроек, ваш туннель должен подняться и ваш маршрутизатор, теоретически, может бороздить просторы интернета, но мы же хотим в интернет выходить со своего компьютера, а не с маршрутизатора? Для этого необходимо настроить трансляцию адресов (NAT). В конфигурации интерфейсов мы уже прописали некоторые параметры, для того чтобы они (интерфейсы) работали в нужном нам режиме:
ip nat inside на интерфейсе vlan 10 и ip nat outside на интерфейсах FA0 и Virtual-PPP 1.
Осталось настроить сам NAT. Так как у нас фактически два направления наружу (локальная сеть провайдера и сам интернет), то выпускать трафик на эти направления мы будем через разные интерфейсы (FA0 и Vritual-PPP1). Делается это с помощью access-list ов:
Создаем 2 access-list, один для LAN, другой для WAN

home(config)ip access-list extended LAN
home(config-ext-nacl)#permit ip 192.168.0.0 0.0.0.255 172.16.0.0 0.15.255.255
home(config-ext-nacl)#permit ip 192.168.0.0 0.0.0.255 10.0.0.0 0.255.255.255
home(config-ext-nacl)#exit
home(config)ip access-list extended WAN
home(config-ext-nacl)#permit ip 192.168.0.0 0.0.0.255 any

и собственно NAT, все что направляется в локалку провайдера пускаем через FA0:

home(config)ip nat inside source list LAN interface FastEthernet0 overload

а все остальное — в virtual-ppp1:

home(config)ip nat inside source list WAN interface Virtual-PPP1 overload


В принципе на этом все, теперь мы должны с компьютера подключенного к циске, спокойно ходить в интернет. Если нужен RDP на какую-либо машину из вашей локальной сети — пробрасываем, с помощью того-же NAT, порты до этой машины:

home(config)ip nat inside source static tcp 192.168.0.100 3389 interface Virtual-PPP1 3389

5. Вместо заключения

Разобрав саму циску я увидел слот для модуля памяти, а так же minipci слот для wifi модуля. С wifi пока не разбирался, но память подошла стандартная от ноутбука на 256Мб SDRAM, и теперь у моего маршрутизатора 384Мб оперативной памяти, что не может не радовать.
Tags:
Hubs:
+24
Comments 71
Comments Comments 71

Articles