2 IP адреса на одном интерфейсе

Если у вас появилась необходимость настроить 2 IP адреса на одном интерфейса в CentOS, то сделать это достаточно просто. Воспользуемся командой ifconfig. Для начала проверим список сетевых интерфейсов:

# ifconfig

eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 254 bytes 30173 (29.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 27658 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX packets 11 bytes 940 (940.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 940 (940.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Добавим к интерфейсу eno16777728 еще один ip адрес 192.168.159.120:

# ifconfig eno16777728:1 192.168.159.120 up

Проверим, что получилось:

# ifconfig
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 254 bytes 30173 (29.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 204 bytes 27658 (27.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eno16777728:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.120 netmask 255.255.255.0 broadcast 192.168.159.255
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX packets 11 bytes 940 (940.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11 bytes 940 (940.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Все в порядке, мы добавили второй ip адрес на один и тот же интерфейс. Но после перезагрузки дополнительный адрес не сохранится. Чтобы его сохранить, необходимо создать файл настроек интерфейса в папке /etc/sysconfig/network-scripts

# mcedit /etc/sysconfig/network-scripts/ifcfg-eno16777728:1

DEVICE=eno16777728:1
BOOTPROTO=static
IPADDR=192.168.159.120
NETMASK=255.255.255.0
ONBOOT=yes

Сохраняем файл, перезагружаемся и проверяем, что получилось. Второй ip адрес должен быть на месте.

image_pdfimage_print

CentOS – настройка сети

Если у вас установка производилась с дистрибутива minimal, то при попытке посмотреть сетевые настройки с помощью команды ifconfig в консоли вы увидите следующее:

-bash: ifconfig: command not found

или в русской версии:

-bash: ifconfig команда не найдена

Для работы с ifconfig и прочими сетевыми утилитами необходимо установить пакет net-tools. Сделаем это:

# yum -y install net-tools.x86_64

Теперь можно увидеть настройки сети:

# ifconfig

eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
inet6 fe80::20c:29ff:fe7d:593f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 319 bytes 36709 (35.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 256 bytes 148817 (145.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 6 bytes 624 (624.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 624 (624.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Если у вас нет желания устанавливать дополнительный пакет, то можно воспользоваться более простой командой ip с параметрами:

# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777728: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:7d:59:3f brd ff:ff:ff:ff:ff:ff
inet 192.168.159.129/24 brd 192.168.159.255 scope global dynamic eno16777728
valid_lft 1709sec preferred_lft 1709sec
inet6 fe80::20c:29ff:fe7d:593f/64 scope link
valid_lft forever preferred_lft forever

Мы увидели конфигурацию сети, теперь давайте ее отредактируем. Допустим, нам нужно сменить ip адрес. Для этого идем в директорию /etc/sysconfig/network-scripts и открываем на редактирование файл ifcfg-eth0.

BOOTPROTO с dhcp на none
DNS1 указать dns сервер
IPADDR0 настроить статический ip адрес
PREFIX0 указать маску подсети
GATEWAY0 настроить шлюз по-умолчанию

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

# /etc/init.d/network restart

Restarting network (via systemctl): [ OK ]

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

# ifconfig:

eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.159.129 netmask 255.255.255.0 broadcast 192.168.159.255
inet6 fe80::20c:29ff:fe7d:593f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:7d:59:3f txqueuelen 1000 (Ethernet)
RX packets 672 bytes 71841 (70.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 572 bytes 290861 (284.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Все в порядке, новые настройки сетевого интерфейса установлены.

image_pdfimage_print

EIGRP

Fig_1

Базовая настройка

conf t
router eigrip 1
network 192.168.1.0 0.0.0.255
network 10.0.1.0 0.0.0.255
no auto-summery
passive-interf g2/0
sh ip eigr nei
sh ip protocols
sh ip eigrp traffic
224.0.0.10 - мультикаст eigrp

no network 192.168.1.0 - отменить
network 0.0.0.0 255.255.255.255 - анонсировать все
passive-interface - интерфейс за которым точно нет маршрутизаторов, т.е. например LAN
passive-interface default - все интерф. в этот режим
passive-interf g2/0 - режим на выбранном интерфейсе
no auto-summery - выключить работу с классовыми сетями, т.е. перевести на работу с VLSM

Настроим аутентификацию по ключу для примера на первых двух роутерах

Для начала нужно выставить время. Смотрим текущее:

Router#sh clock

Настраиваем вручную:

Router#clock set 21:59 Apr 18 2017
Router#sh clock
21:59:4.994 UTC Tue Apr 18 2017

Теперь настраиваем ключи

Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#key 
Router(config)#key chain MYCHAIN
Router(config-keychain)#key 1
Router(config-keychain-key)#key
Router(config-keychain-key)#key-string cisco

Выставляем период когда он начинает работать и перестает работать

Router(config-keychain-key)#acc
Router(config-keychain-key)#accept-lifetime 18:00:00 apr 18 2017 18:00:00 may 2 2017

Выставляем дату и время когда этот ключ начинает отсылаться и прекращает

Router(config-keychain-key)#send-lifetime 18:00:00 apr 18 2017 18:00:00 may 2 2017

Настраиваем ключ 2

Router(config-keychain-key)#key 2
Router(config-keychain-key)#key-string cisco2

И периоды работы с небольшим перекрытием ключа один

Router(config-keychain-key)#acc
Router(config-keychain-key)#accept-lifetime 18:00:00 may 1 2017 18:00:00 jun 2 2017
Router(config-keychain-key)#send-lifetime 18:00:00 may 1 2017 18:00:00 jun 2 2017
Router(config-keychain-key)#^Z
Router#
%SYS-5-CONFIG_I: Configured from console by console

Выбираем интерфейс смотрящий на соседский роутер

Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int g1/0

Включаем аутентификацию

Router(config-if)#ip au
Router(config-if)#ip authentication mod
Router(config-if)#ip authentication mode ei
Router(config-if)#ip authentication mode eigrp 1 md5
Router(config-if)#
%DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 10.0.1.1 (GigabitEthernet1/0) is down: authentication mode changed

Прописываем по какому ключу

Router(config-if)#ip aut
Router(config-if)#ip authentication key-
Router(config-if)#ip authentication key-chain ei
Router(config-if)#ip authentication key-chain eigrp 1 MYCHAIN

Аналогично делаем на другом роутере.

После проверяем

#sh ip eig nei
#sh ip router

 

image_pdfimage_print

Sieve

В качестве сортировщика почты используется плагин к dovecot языка филтрации Sieve (http://ru.wikipedia.org/wiki/Sieve)

В директории ящика есть файл .dovecot.sieve, в который включаются файлы скриптов(в каждом одном условия и действия для него) из директории .sieve/ так же в директории ящика.

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

 require ["fileinto","reject","vacation","regex","envelope","relational","body","copy"]

Пример

Скрипт с именем “testscript” для ящика aaa@test.dom пользователя владельца user, проверяет формулировку: Если в заголовках письма “Header” или “Subject” не найдены подстроки “AAA”, “BBB”, “ССС” или размер письма больше 1 мегабайта, то переслать письмо ящику bbb@test.dom, а в ящике aaa@test.dom не сохранять.

После создания скрипта сортировки через визард в панели, появятся такое содержимое файлов:

/var/www/user/data/email/test.dom/aaa/.dovecot.sieve:

 require ["include"];
 include :personal "testscript";
  • require – заявляем что используем директиву include для включения скриптов
  • include – включаем скрипт testscript

/var/www/user/data/email/test.dom/aaa/.sieve/testscript.sieve:

 if anyof (	not header :contains ["Header","Subject"]  ["AAA","BBB","CCC"],
 	 size :over 1024K
 ) {	redirect "bbb@test.dom";
 	discard;  
 }
  • anyof – любое из условий верно

Первое условие (условия каждое на новой строке через запятую между ‘(‘ и ‘)’):

  • not – логическое НЕ
  • header – проверяем заголовки письма
  •  :contains – содержит
  • [“Header”,”Subject”] – проверяем заголовки Header или Subject
  • [“AAA”,”BBB”,”CCC”] – проверяем, что заголовки содержат “AAA”, “BBB” или “ССС”

Второе условие:

  • size – проверяем размер письма
  •  :over – больше
  • 1024K – 1 мегабайт

Первое действие (действия каждое на новой строке через запятую точку с запятой между ‘{‘ и ‘}’):

  • redirect – перенаправить
  • “bbb@test.dom” – на адресс bbb@test.dom

Второе действие:

  • discard – удалить (не сохранять в ящике, для которого выполняется скрипт)
image_pdfimage_print

Sendmail – удалить письма старше…

Устанавливаем:

/usr/ports/mail/archmbox

Удалить письма старше 15 дней

archmbox -k -o 15 /var/mail/alpog

Удалить письма возрастом до указанной даты выбранного ящика

archmbox -k -d 2016-01-31 /var/mail/alpog

Удалить письма возрастом до указанной даты во всех ящиках

archmbox -k -d 2016-01-31 /var/mail/*
image_pdfimage_print

SpamAssassin и настройка Exim

SpamAssassin можно установить двумя способами:

  1. perl -MCPAN -e shell;
  2. /usp/ports/mail/spamassassin.

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

cd /usr/ports/security/p5-Digest-MD5
make install clean
cd /usr/ports/www/p5-HTML-Parser
make install clean
cd /usr/ports/dns/p5-Net-DNS
make install clean
cd /usr/ports/japanese/p5-Mail-SpamAssassin
make install clean

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

После установки настраиваем SpamAssassin.

cat /usr/local/etc/mail/spamassassin/local.cf
trusted_networks 192.168.1/24
required_score 5.0

report_safe 0
rewrite_header subject [SPAM]
use_bayes 1
#bayes_path /usr/local/etc/mail/spamassassin/bayes/
bayes_file_mode 0666
bayes_min_spam_num 1
bayes_min_ham_num 1
bayes_learn_to_journal 1
skip_rbl_checks 0
bayes_auto_learn 0

#ok_languages ru en
ok_locales ru_en

score BAYES_00 0.0001 0.0001 -6.0 -6.0
score BAYES_05 0.0001 0.0001 -3.0 -3.0
score BAYES_20 0.0001 0.0001 -1.0 -1.0
score BAYES_50 0.0001 0.0001 1.6 1.6
score BAYES_60 0.0001 0.0001 2.0 2.0
score BAYES_80 0.0001 0.0001 4.0 4.0
score BAYES_95 0.0001 0.0001 6.5 6.5
score BAYES_99 0.0001 0.0001 10.0 10.0
score RDNS_NONE 0.0001 0.0001 3.0 3.0

score SUBJ_FULL_OF_8BITS 0.00
score HTML_COMMENT_8BITS 0.01
score HEADER_8BITS 0.00
score TO_NO_USER 0.01
score FORGED_MUA_OUTLOOK 0.5
score X_AUTH_WARNING 0.01
score SUBJ_HAS_UNIQ_ID 9.99
score HTTP_USERNAME_USED 9.99
score FORGED_YAHOO_RCVD 9.99
score FORGED_JUNO_RCVD 16
score UNWANTED_LANGUAGE_BODY 1.02
score MLM 5.55
score RCVD_NUMERIC_HELO 4.95

Теперь добавляем в конфиг exim’a до acl’ов строчку

spamd_address = 127.0.0.1 783

и в ACL’ах в правило acl_check_data, где spam – это user под которым стартует exim

acl_check_data:

#deny  message = Virus found ($malware_name)
        #malware = *

  warn  message = X-Spam-Score: $spam_score ($spam_bar)
        hosts   = !+relay_from_hosts
        spam    = mailnull:true

  warn  message = X-Spam-Report: $spam_report
        hosts   = !+relay_from_hosts
        spam    = mailnull:true

  warn  message = Subject: [SPAM] $h_Subject:
        hosts   = !+relay_from_hosts
        spam    = mailnull

  deny  message = This message scored $spam_score spam points.
        spam    = mailnull:true
        # Отбрасывает спамовые письма с указанием ошибки
        hosts   = +relay_from_hosts
        condition = ${if >{$spam_score_int}{120}{1}{0}}

  accept

Запускаем spamd и рестартим exim

echo 'spamd_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/sa-spamd start
/usr/local/etc/rc.d/exim restart

У меня spamd стартовал с ошибкой о невозможности создать user_prefs. Решил созданием директории по предложенному пути

mkdir /var/spool/.spammassassin/
chown -R spamd /var/spool/.spammassassin/

Наша связка начинает сразу работать с заранее предустановленными параметрами. Но что бы увеличить вероятность правильного срабатывания для отсеевания спама необходимо систему обучить – скормить ей более 200 писем с примерами “белых писем” (ham) и более 200 спамовых писем (spam).

Обучение может производится автоматически, с помощью bayes_auto_learn – когда очки письма (без учета очков за AWL, BAYES_XX, BLACKLIST и WHITELIST) выходят за пределы между auto_learn_threshold_nonspam и auto_learn_threshold_spam. Это можно узнать если в заголовке письма в поле X-Spam-Status: присутствует запись autolearn=spam или autolearn=ham.

И обучение может производиться вручную (или при помощи скрипта) командой sa-lean. Для этого нужно скормить каталог писем со спамом spam и каталог благонадежных писем ham. Письма нужно иметь в не модифицированном виде (без forward`а и прочих почтовых пересылок перенаправлений). Для удобства завёл специальные папочки в которые складывал примеры писем. После накопления необходимого количества писем, экспортировал их на сервер и скормил обучалке:

# /usr/local/bin/sa-learn --ham /var/vmail/tst-amo.pp.ua/svm/Maildir/cur 
# /usr/local/bin/sa-learn --spam /var/vmail/tst-amo.pp.ua/svm/Maildir/.imp_spam/cur

Проверка конфигурации – полный вывод

#spamassassin --lint -D

Проверка конфигурации – вывод только проблемных мест

#spamassassin --lint

Если в процессе выводит что то типа

 warn: bayes: bayes db version 0 is not able to be used, aborting! 
 at /usr/local/lib/perl5/site_perl/Mail/SpamAssassin/BayesStore/DBM.pm line 208.

то выполните команду

sa-learn --sync

 Тест на спам

Отправляем на тестируемые сервер письмо с таким текстом:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Должно получить как минимум 1000 очков и получить гордый титул SPAM.

Пропишем транспорт и роутер для спама

ee /usr/local/etc/exim/configure
###############
begin routers

check_malware:
 driver = redirect
 condition = ${if def:h_X-Quarantine-Me-Malware: {1}{0}}
 headers_remove = Subject
 headers_add = Subject: [CLAMAV: $acl_m2] $h_Subject
 data = postmaster@tst-amo.pp.ua
 file_transport = address_file

# SpamAssassin
spamcheck_router:
 driver = accept
 condition = "${if and { \
 {!def:h_X-Spam-Flag:} \
 {!eq {$received_protocol}{spam-scanned}} \
 {!eq {$received_protocol}{local}} \
 {!eq {$sender_host_address}{127.0.0.1}} \
 {<{$message_size}{50k}} \
 } {1}{0}}"
 retry_use_local_part
 transport = spamcheck
 no_verify
##################
begin transports

remote_smtp:
 driver = smtp

# SpamAssassin
spamcheck:
 driver = pipe
 batch_max = 100
 command = /usr/local/sbin/exim -oMr spam-scanned -bS
 current_directory = "/tmp"
 home_directory = "/tmp"
 group = mail
 user = mailnull
 log_output
 message_prefix =
 message_suffix =
 return_fail_output
 no_return_path_add
 transport_filter = /usr/local/bin/spamc -u mailnull
 use_bsmtp

Так как на сервере работает dovecot с sieve, то работа по сортировке спама ляжет на него.

Сам скрипт для укладывания спама в папку Junk

require ["regex", "fileinto", "imap4flags"];
# Catch mail tagged as Spam, except Spam retrained and delivered to the mailbox
 if exists "X-Spam-Status"
 {
# Mark as read
 setflag "\\Seen";
# Move into the Junk folder
 fileinto "Junk";
# Stop processing here
 stop;
}

Выполнить команду для компиляции sieve скрипта

sievec /usr/local/etc/dovecot/sieve/

 

 

image_pdfimage_print

Витая пара

Обозначения для распространенных типов кабелей из витых пар
Общепринятое название Обозначение по ISO/IEC 11801 Общий экран Экран для пар
UTP U/UTP нет нет
STP, ScTP, PiMF U/FTP нет фольга
FTP, STP, ScTP F/UTP фольга нет
STP, ScTP S/UTP оплётка нет
SFTP, S-FTP, STP SF/UTP оплётка, фольга нет
FFTP F/FTP фольга фольга
SSTP, SFTP, STP PiMF S/FTP оплётка фольга
SSTP, SFTP SF/FTP оплётка, фольга фольга

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

U = unshielded, без экрана
F = foil, фольга
S = braided screening, оплётка из проволоки (только внешний экран)
TP = twisted pair, витая пара
TQ = индивидуальный экран для двух витых пар (на 4 провода)

Типы наиболее используемой витой пары

  • UTP – неэкранированная витая пара
  • FTP или F/UTP – кабель, защищенный одним внешним слоем фольги
  • STP – каждая пара защищена отдельным слоем фольги + общий слой фольги в виде сетки
  • S/FTP – каждая пара в оплетке + внешний экран из медной оплетки
  • U/STP – каждая пара защищена фольгой но без внешнего общего экрана
  • SF/UTP – кабель защищен двойным внешним слоем, один слой – оплетка, второй – фольга

Категории витой пары

  • CAT1 – 1 пара и используется для передачи голоса и цифровых данных при участии модема
  • CAT2 – 2 пары проводников и уже изжил себя; до 4 Мбит/с
  • CAT3 – 4 пары; 10-100 МБит; до 100 м
  • CAT5 – 4 пары; до 1000 МБит; до 100 м
  • CAT5e – усовершенствованная CAT5
  • CAT6a – 10 ГБит; до 100 м
  • CAT7a – 40 ГБит; до 50 м и 100 ГБит до 15 м

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

Таблица цветовой маркировки кабелей витых пар в зависимости от области применения
Цвет оболочки кабеля Область применения
Черный Предназначен для прокладки вне помещений, оболочка кабеля покрыта дополнительным слоем полиэтилена для защиты от внешних атмосферных воздействий
Серый Предназначен для прокладки внутри помещений
Оранжевый Оболочка выполнена из негорючего полимера, маркируются как LSZH

маркировки на фото, данный кабель предназначен для работы при температуре окружающей среды до 75°С, UTP – без экранирования, 4PR – имеет 4 витые пары, EIA/TIA-568 – соответствует спецификации EIA/TIA-568, метки на кабеле в футах.

image_pdfimage_print

Frame-Relay с помощью sub-interfaces

И так, на схеме три маршрутизатора и Frame relay облако. Маршрутизаторы R2 и R3 не взаимодействуют друг с другом на прямую , R1 в свою очередь обеспечивает обмен трафиком между R2 и R3 .

Настройка Frame relay

R1:

На маршрутизаторе , который будет связывать R2 и R3 указываем тип sub-interface как multipoint. Настраиваем мапинг соответственно топологии командой frame-relay map ip 10.0.0.2 100, где число после адреса удаленного маршрутизатора – номер виртуального канала. Примите во внимание что на физический интерфейс ip address назначать не обязательно, достаточно лишь включить его командой no shutdown .

R1(config)#interface serial 0/0 
R1(config-if)#encapsulation frame-relay 
R1(config-if)#clock rate 64000 
R1(config-if)#no shutdown 
R1(config)#interface serial 0/0.1 multipoint 
R1(config-subif)#ip address 10.0.0.1 255.255.255.0 
R1(config-subif)#frame-relay map ip 10.0.0.2 100 
R1(config-subif)#frame-relay map ip 10.0.0.4 400

R2:

На остальных маршрутизаторах включаем физический интерфейс, указываем тип sub-interface как

point-to-point, и номер dlci.

R2(config)#interface serial 0/0 
R2(config-if)#encapsulation frame-relay 
R2(config-if)#clock rate 64000 
R2(config-if)#no shutdown 
R2(config)#interface serial 0/0.1 point-to-point 
R2(config-subif)#ip address 10.0.0.2 255.255.255.0 
R2(config-subif)#frame-relay interface-dlci 200

R3:

R3(config)#interface serial 0/0
R3(config-if)#encapsulation frame-relay
R3(config-if)#clock rate 64000
R3(config-if)#no shutdown
R3(config)#interface serial 0/0.1 point-to-point
R3(config-subif)#ip address 10.0.0.4 255.255.255.0
R3(config-subif)#frame-relay interface-dlci 300

Теперь настроим Frame-relay облако:

Добавляем на интерфейс, подключенный к маршрутизатору dlci, аналогичный тому что мы настроили на sub-interface.На следующей картинке добавляется два dlci, так как к каждому маршрутизатору проложен отдельный туннель, а на каждый туннель нужно назначать свой dlci.

R1:

R2:

R3:

На вкладке Frame-Relay настроим взаимодействие между виртуальными каналами таким образом чтобы чтобы крайние маршрутизаторы соединялись с R1.

С помощью команды show frame-relay map можно узнать настроенный мапинг

на интерфейсах роутера.

Проверяем доступность R2 c R3.

На этом конфигурация закончена.

image_pdfimage_print

OSPF

Рассмотрим следующую топологию сети:

Динамическая маршрутизация. Настройка OSPF на Cisco IOS

Допустим, в этой сети мы используем статическую маршрутизацию, и появилась необходимость добавить новый роутер (R4). Роутеры «знают» только про подключенные к ним сети напрямую (directly connected). В таком случае нам придется вручную добавить все маршруты к подсетям на R4, а на остальных роутерах добавить маршруты к подсетям, которые обслуживает R4:

Динамическая маршрутизация. Настройка OSPF на Cisco IOS

С ростом сети это становится достаточно трудоемкой задачей. Протоколы динамической маршрутизации позволяют обмениваться маршрутами автоматически, упрощая обслуживание сети. Также динамические протоколы маршрутизации сами определяют оптимальный маршрут для отправки пакетов (мы можем влиять на это в случае необходимости) и выбирать альтернативный маршрут в случае падения какого-то канала.

Например, R3 может связаться с R1 через несколько маршрутов: через 10.5.0.4/30, через 10.5.0.8/30 -> 10.5.0.0/30 и 10.5.0.16/30 -> 10.5.0.12/30 -> 10.5.0.0/30. При использовании OSPF роутеры будут постоянно обмениваться информацией про известные маршруты и состояние соединений. В случае падения прямого канала между R1 и R3 трафик пойдет через роутер R2.

Настройка OSPF

Вот так будет выглядеть топология нашей сети с добавленным новым роутером R4:

Динамическая маршрутизация. Настройка OSPF на Cisco IOS

Начнем с настройки роутера R1. Представляю Ваше вниманию непосредственно сам пример настройки.

Запустим процесс ospf:

R1(config)# router ospf 1

Последнее число — это PID процесса, может отличаться на разных роутерах, но исключительно для удобства лучше задавать одно и тоже число.

Теперь отключим отправку hello пакетов на всех интерфейсах. Из соображений безопасности мы будем явно задавать интерфейсы, на которых будут устанавливаться neighbour отношения.

R1(config-router)#passive-interface default

Теперь укажем интерфейсы, на которых мы будем отправлять hello пакеты. Для R1 это fa0/0 и fa0/1:

R1(config-router)#no passive-interface fa0/0
R1(config-router)#no passive-interface fa0/1

С помощью команды network мы можем сделать 2 вещи — сообщить, какие сети мы хотим анонсировать по OSPF другим роутерам и на каких интерфейсах мы будем отправлять hello пакеты. Именно поэтому ранее мы указали конкретные интерфейсы для hello пакетов. К примеру, на роутере R1 нам нужны 3 сети: 10.5.0.0/30, 10.5.0.4/30 и 172.16.0.0/26. Но в последней сети будут исключительно пользовательские устройства и нам бы совсем не хотелось, чтобы кто-то имел возможность с нее влиять на таблицы маршрутизации роутеров.

Формат команды network:

network 0.0.0.0 255.255.255.255 area 0

Первым параметром идет номер сети, вторым — wildcart маска и последним номер зоны.

Проще говоря, это команда сообщает роутеру, c каких интерфейсов будут анонсироваться подсети по OSPF. В примере выше мы разрешили анонсировать любые подсети, с любых интерфейсов. Данный способ, конечно, упрощает настройку, но не рекомендован Cisco. Потому что любой интерфейс, который вы настроили на роутере, сразу уйдет в таблицы маршрутизации других роутеров. Cisco рекомендует подключать каждую сеть отдельно, для нашей конфигурации сети на R1 это будет выглядеть так:

R1(config-router)#network 10.5.0.1 0.0.0.0 area 0
R1(config-router)#network 10.5.0.5 0.0.0.0 area 0
R1(config-router)#network 172.16.0.1 0.0.0.0 area 0

Для понимания синтаксиса приведу пример, который позволит анонсировать обе служебные сети(10.5.0.0/30 и 10.5.0.4/30):

R1(config-router)#network 10.5.0.0 0.0.0.255 area 0

Дословно это означает: «анонсировать подсети с интерфейсов, которые начинаются на 10.5.0»

Теперь настроим R2:

router ospf 1
 passive-interface default
 no passive-interface FastEthernet0/0
 no passive-interface FastEthernet0/1
 no passive-interface Vlan30
 network 10.5.0.2 0.0.0.0 area 0
 network 10.5.0.9 0.0.0.0 area 0
 network 10.5.0.13 0.0.0.0 area 0
 network 172.16.0.129 0.0.0.0 area 0

После этого мы получим уведомление:

*Mar 1 00:05:29.875: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.0.1 on FastEthernet0/0 from LOADING to FULL, Loading Done

Это означает, что R1 и R2 установили neighbour отношения и обменялись информацией о известных маршрутах. Теперь на R2 должен быть один «сосед»:

R2#show ip ospf neighbor 
 
Neighbor ID     Pri   State           Dead Time   Address         Interface
172.16.0.1        1   FULL/DR         00:00:35    10.5.0.1        FastEthernet0/0

Посмотрим таблицу маршрутизации на R2:

R2#show ip route 
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route
 
Gateway of last resort is not set
 
     172.16.0.0/26 is subnetted, 2 subnets
C       172.16.0.128 is directly connected, Vlan20
O       172.16.0.0 [110/11] via 10.5.0.1, 00:06:39, FastEthernet0/0
     10.0.0.0/30 is subnetted, 3 subnets
C       10.5.0.8 is directly connected, Vlan30
O       10.5.0.4 [110/20] via 10.5.0.1, 00:06:39, FastEthernet0/0
C       10.5.0.0 is directly connected, FastEthernet0/0

От R1 мы получили 2 маршрута по OSPF, о чем и говорит буква O в начале записи о маршруте.

Конфигурация R3:

router ospf 1
 passive-interface default
 no passive-interface FastEthernet0/0
 no passive-interface FastEthernet0/1
 no passive-interface Vlan20
 network 10.5.0.6 0.0.0.0 area 0
 network 10.5.0.10 0.0.0.0 area 0
 network 10.5.0.17 0.0.0.0 area 0
 network 172.16.0.65 0.0.0.0 area 0

И для R4:

router ospf 1
 passive-interface default
 no passive-interface FastEthernet0/0
 no passive-interface FastEthernet0/1
 network 10.5.0.14 0.0.0.0 area 0
 network 10.5.0.18 0.0.0.0 area 0
 network 172.16.1.1 0.0.0.0 area 0
 network 172.16.1.65 0.0.0.0 area 0
 network 172.16.1.129 0.0.0.0 area 0
 network 172.16.1.193 0.0.0.0 area 0

Теперь наша таблица маршрутизации выглядит так:

R1#show ip route 
...
 
     172.16.0.0/26 is subnetted, 6 subnets
O       172.16.1.128 [110/21] via 10.5.0.6, 00:11:05, FastEthernet0/1
                     [110/21] via 10.5.0.2, 00:11:05, FastEthernet0/0
O       172.16.1.192 [110/21] via 10.5.0.6, 00:11:05, FastEthernet0/1
                     [110/21] via 10.5.0.2, 00:11:05, FastEthernet0/0
C       172.16.0.0 is directly connected, Vlan10
O       172.16.1.0 [110/21] via 10.5.0.6, 00:11:05, FastEthernet0/1
                   [110/21] via 10.5.0.2, 00:11:05, FastEthernet0/0
O       172.16.0.64 [110/11] via 10.5.0.6, 00:11:07, FastEthernet0/1
O       172.16.1.64 [110/21] via 10.5.0.6, 00:11:07, FastEthernet0/1
                    [110/21] via 10.5.0.2, 00:11:07, FastEthernet0/0
     10.0.0.0/30 is subnetted, 5 subnets
O       10.5.0.12 [110/20] via 10.5.0.2, 00:11:07, FastEthernet0/0
O       10.5.0.8 [110/11] via 10.5.0.6, 00:11:08, FastEthernet0/1
                 [110/11] via 10.5.0.2, 00:11:08, FastEthernet0/0
C       10.5.0.4 is directly connected, FastEthernet0/1
C       10.5.0.0 is directly connected, FastEthernet0/0
O       10.5.0.16 [110/20] via 10.5.0.6, 00:11:11, FastEthernet0/1

Теперь можно попробовать сымитировать падения аплинка. Проведем трассировку маршрута с роутера R3 к клиентскому ПК с IP 172.16.0.2:

R3#traceroute 172.16.0.2
 
Type escape sequence to abort.
Tracing the route to 172.16.0.2
 
  1 10.5.0.5 16 msec 16 msec 16 msec
  2 172.16.0.2 24 msec 36 msec 44 msec

Из трассировки видно, что трафик пойдет напрямую к R1. Отключим интерфейс на R1, к которому подключен R3:

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#interface fa0/1
R1(config-if)#shutdown 
R1(config-if)#end

R3 заметил падение канала с R1:

*Mar  1 03:32:41.567: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.0.1 on FastEthernet0/0 from FULL to DOWN, Neighbor Down: Dead timer expired

Теперь трафик пойдет через альтернативный канал (R3 -> R2 — R1):

R3#traceroute 172.16.0.2
 
Type escape sequence to abort.
Tracing the route to 172.16.0.2
 
  1 10.5.0.9 16 msec 16 msec 16 msec
  2 10.5.0.1 40 msec 32 msec 40 msec
  3 172.16.0.2 44 msec 48 msec 68 msec

На этом настройка OSPF с одной зоной (area 0) закончена. Теперь наша сеть использует OSPF для динамической маршрутизации.

Multi Area OSPF

Для чего нам может понадобиться разделить нашу сеть на несколько зон? В первую очередь, для агрегации маршрутов. Например, в нашей топологии роутер R4 анонсирует в сеть 4 маршрута, но все сети из диапазона 172.16.1.0-172.16.1.255 будут принадлежать исключительно ему, и мы хотим анонсировать один маршрут — 172.16.1.0/24. Это особенно актуально в больших сетях с большой таблицей маршрутизации. Так же, в силу специфики всех link-state протоколов динамической маршрутизации, в OSPF каждый роутер узнает о падении любого канала в сети. Это, конечно, повышает качество выбора оптимального маршрута, но и заметно повышает нагрузку. Допустим, у нас есть 15 офисов в Хмельницком и 10 в Виннице — роутерам в Виннице совершенно не обязательно знать о том, что какой-то роутер в Хмельницком упал. Разделение сети на разные зоны решает данный вопрос.

Динамическая маршрутизация. Настройка OSPF на Cisco IOS

Для начала уберем анонс подсетей с R4:

router ospf 1
  no network 172.16.1.1 0.0.0.0 area 0
  no network 172.16.1.65 0.0.0.0 area 0
  no network 172.16.1.129 0.0.0.0 area 0
  no network 172.16.1.193 0.0.0.0 area 0

И добавим их с area 1:

router ospf 1
  network 172.16.1.1 0.0.0.0 area 1
  network 172.16.1.65 0.0.0.0 area 1
  network 172.16.1.129 0.0.0.0 area 1
  network 172.16.1.193 0.0.0.0 area 1

И объявим диапазон для зоны:

R4(config-router)#area 1 range 172.16.1.0 255.255.255.0

Теперь на роутерах с area 0 появился только один маршрут:

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route
...
O IA    172.16.1.0/24 [110/21] via 10.5.0.6, 00:00:30, FastEthernet0/1
                      [110/21] via 10.5.0.2, 00:00:30, FastEthernet0/0
...
image_pdfimage_print

PPP

Router#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname R1
R1(config)#username R1 password 123456789
R1(config)#interface serial 0/0/0
R1(config-if)#en
R1(config-if)#encapsulation ppp
R1(config-if)#ppp authentication chap
R1(config-if)#ip address 192.168.0.1 255.255.255.0
R1(config-if)#no shutdown
%LINK-5-CHANGED: Interface Serial0/0/0, changed state to down

Настройка на втором маршрутизаторе:

Router#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname R2
R2(config)#username R1 password 123456789
R2(config)#interface serial0/3/0
R2(config-if)#encapsulation ppp
R2(config-if)#ppp authentication chap
R2(config-if)#ip address 192.168.0.2 255.255.255.0
R2(config-if)#no shutdown 
%LINK-5-CHANGED: Interface Serial0/3/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/3/0, changed state to up

Обратите внимание, что пользователь, которого мы заводим на маршрутизаторе R1 имеет имя R2, а на R2 – R1. Это необходимо, так как когда один роутер подключается к другому, он указывает своё имя, соответственно, другой должен знать это имя (видеть его в своём списке локальных пользователей). Ещё одна немаловажная деталь: пароли к пользователям R1 и R2 обязательно должны совпадать.

Для проверки можем выполнить команду:

R2#sh ip inter brief 
Interface              IP-Address      OK? Method Status                Protocol
 …
Serial0/3/0            192.168.0.2     YES manual up                    up
 …

Если status будет «up», а протокол – «down», то это, как правило означает, что какие-то проблемы с PPP – не та аутентификация, не совпали пароли, качество линии ниже того, что мы заказывали и т.п. В этом случае придётся проверять конфиги и запускать debug ppp, чего я не пожелаю и врагу.

R2#debug ppp auth

или

R2#debug ppp negotiation

 

image_pdfimage_print