пятница, апреля 19, 2013

TFTP сервер на маршрутизаторе фирмы Cisco

Привет всем читателям. Сегодня мы вместе с вами снова вернемся к протоколу TFTP и поговорим о том как превратить наш с вами маршрутизатор фирмы Cisco в TFTP сервер. Соглашусь с вами, что надобность в этом на практике возникает не очень часто, но все же лучше знать и уметь пользоваться данным функционалом, мало ли в жизни всякое бывает.


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

Разбирать конфигурирование маршрутизаторов фирмы Cisco в качестве TFTP сервера, мы опять же будем на примере, но в этот раз для симуляции сети мы будем использовать GNS3. Соберем в нем следующую простенькую схему, содержащую 3 маршрутизатора, имеющих как минимум по 2 Ethernet  интерфейса (в данном примере использован IOS от Cisco 2691 - c2691-advipservicesk9-mz.124-15.T6.bin):
Данная схема сети должна быть собрана в GNS3
Данная схема сети должна быть собрана в GNS3
Внесем в конфигурации маршрутизаторов следующие команды:

Маршрутизатор R1:

  R1(config)#interface fastEthernet 0/0
  R1(config-if)# ip address 192.168.1.2 255.255.255.252
  R1(config-if)#no shutdown

Маршрутизатор R2:

  R2(config)#interface fastEthernet 0/0
  R2(config-if)#ip address 192.168.1.1 255.255.255.252
  R2(config-if)# no shutdown
  R2(config)#interface fastEthernet 0/1
  R2(config-if)#ip address 192.168.2.1 255.255.255.252
  R2(config-if)#no shutdown

Маршрутизатор R3:

  R3(config)#interface fastEthernet 0/0
  R3(config-if)#ip address 192.168.2.2 255.255.255.252
  R3(config-if)#no shutdown

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



В простейшем случае, для того чтобы сконфигурировать ваш маршрутизатор в качестве TFTP сервера необходимо ввести на нем команду вида tftp-server <место от куда брать файл> <имя файла>.

Давайте попробуем настроить маршрутизатор R2 так, чтобы он раздавал файл своей конфигурации, сохраненный во флеш памяти,  по TFTP. Для этого выполним на нем команды:

  R2#copy running-config flash:
  R2(config)#tftp-server flash:r2-confg

Здесь первой командой мы копируем текущую конфигурацию нашего устройства во флеш память. По умолчанию, если согласится со всеми ее параметрами нажав Enter, эта команда очищает флеш  память и создает в ней файл с именем <hostname>-confg (в нашем случае r2-confg). Вторая же команда запускает на маршрутизаторе TFTP сервер, который будет раздавать файл r2-confg, хранящийся во флеш памяти маршрутизатора (полный перечень мест/устройств из которых маршрутизатор может делать файлы доступными по TFTP можно получить с помощью команды tftp-server ?, в зависимости от модели устройства придется использовать разные места). Данная команда не вносит ни каких ограничений, на то кто может скачивать данный файл, поэтому его может скачать любое устройство,  с установленным TFTP клиентом, имеющее связь с маршрутизатором по протоколу IP. Проверим это попробовав скопировать данный файл используя машрутизаторы R1 и R3.

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

Копируем файл с TFTP сервера во флеш память:

  R1#copy tftp flash
  Address or name of remote host []? 192.168.1.1
  Source filename []? r2-confg
  Destination filename [r2-confg]?
Accessing tftp://192.168.1.1/r2-confg...
  Erase flash: before copying? [confirm]n
Loading r2-confg from 192.168.1.1 (via FastEthernet0/0): !
[OK - 937 bytes]
Verifying checksum...  OK (0x237E)
937 bytes copied in 0.228 secs (4110 bytes/sec)

Просматриваем содержимое флеш памяти:

  R1#show flash:
System CompactFlash directory:
File  Length   Name/status
  1   937      r2-confg
[1004 bytes used, 16776208 available, 16777212 total]
16384K bytes of ATA System CompactFlash (Read/Write)

Просматриваем содержимое самого файла:

  R1#more flash:r2-confg

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

  R3#copy tftp flash
  Address or name of remote host []? 192.168.2.1
  Source filename []? r2-confg
  Destination filename [r2-confg]?
Accessing tftp://192.168.2.1/r2-confg...
  Erase flash: before copying? [confirm]n
Loading r2-confg from 192.168.2.1 (via FastEthernet0/0): !
[OK - 937 bytes]
Verifying checksum...  OK (0x237E)
937 bytes copied in 0.248 secs (3778 bytes/sec)

Как мы и говорили выше файлы раздаваемые TFTP сервером доступны, со всех устройств имеющих связь с ним. А как обстоят дела с записью? Попробуем записать какой либо файл на наш TFTP  сервер:

  R3#copy running-config flash
  R3#copy flash tftp
  Source filename [r2-confg]? r3-confg
  Address or name of remote host []? 192.168.2.1
  Destination filename [r3-confg]?
TFTP: error code 2 received - 16739
%Error opening tftp://192.168.2.1/r3-confg (Permission denied)

Как легко заметить из приведенного выше вывода - записать файл не получилось. Аналогичный результат будет, если мы попробуем произвести запись с маршрутизатора R1. Из этого можно сделать вывод, что запись на TFTP  сервер, сконфигурированный на маршрутизаторе фирмы Cisco, запрещена, даже в тех случаях, когда любой клиент имеет доступ на чтение.

А можно ли это как то ограничить доступ на чтение? Да можно, но для этого придется сконфигурировать наш TFTP  сервер немного другим образом. Для начала отключим действующий в настоящий момент на маршрутизаторе TFTP сервер, сделаем это с помощью команды (стоит отметить, что данная команда не останавливает TFTP сервер полностью, а лишь отменяет раздачу файла   r2-confg):

  R2(config)#no tftp-server flash:r2-confg

А уже далее сделаем опять тот же самый файл доступным на TFTP сервере, но уже только одному определенному хосту в сети:

  R2(config)#access-list 1 permit 192.168.1.2
  R2(config)#access-list 1 deny any
  R2(config)#tftp-server flash:r2-confg 1

С помощью первых двух команд мы создаем ACL (Список контроля доступа)с номером 1. В первой строке мы разрешаем доступ хосту с IP адресом 192.168.1.2 (маршрутизатор R1). А второй командой мы запрещаем доступ всем другим хостам. В третье строке мы прикрепляем ACL к нашему TFTP серверу (та самая единичка добавленная в конце команды). Если  вам не совсем понятен принцип работы ACL, то не стоит огорчаться, мы рассмотрим эту тему  подробнее в наших следующих статьях.

Теперь давайте попробуем еще раз выполнить копирование файла r2-confg с маршрутизатора R2 на маршрутизаторы R1 и R3:

Маршрутизатор R1:

  R1#copy tftp flash
  Address or name of remote host [192.168.1.1]?
  Source filename [r2-confg]?
  Destination filename [r2-confg]?
Accessing tftp://192.168.1.1/r2-confg...
  Erase flash: before copying? [confirm]n
Loading r2-confg from 192.168.1.1 (via FastEthernet0/0): !
[OK - 937 bytes]
Verifying checksum...  OK (0x237E)
937 bytes copied in 0.224 secs (4183 bytes/sec)

Маршрутизатор R3:

  R3#copy tftp flash:
  Address or name of remote host []? 192.168.2.1
  Source filename []? r2-confg
  Destination filename [r2-confg]?
Accessing tftp://192.168.2.1/r2-confg...
%Error opening tftp://192.168.2.1/r2-confg (No such file or directory)

Как видно из вывода команд, маршрутизатор R1 успешно скопировал файл с TFTP сервера, а маршрутизатор R3 не смог получить доступ к данному файлу. Это говорит о том , что мы все сделали верно, и наш ACL прикрученный к TFTP серверу работает.

На сегодня это все. До новых встреч.

P.S. В этой статье и далее будем считать, что команды раскрашенные синим цветом предназначены для ввода команд  или их параметров в устройство,  а зеленые команды - это реакция маршрутизатора, выводимая на экран.

1 коммент.:

Добрый день!
А как узнать на работающей системе, к какому каталогу или файлу привязан tftp-сервер(cisco-2951).

Отправить комментарий