<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>antiCisco blogs</title>
	<atom:link href="http://www.anticisco.ru/blogs/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.anticisco.ru/blogs</link>
	<description>блоги по технологиям  и оборудованию cisco от инструкторов</description>
	<lastBuildDate>Fri, 04 May 2012 20:47:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Эпическая сага &#171;Калифорщина&#187;</title>
		<link>http://www.anticisco.ru/blogs/?p=1398</link>
		<comments>http://www.anticisco.ru/blogs/?p=1398#comments</comments>
		<pubDate>Wed, 02 May 2012 22:19:06 +0000</pubDate>
		<dc:creator>solo</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1398</guid>
		<description><![CDATA[Еще в нежном возрасте нагадала мне на фантиках одна красотка из соседней группы дорогу дальнюю, и похоже еще было ей что сказать, как вдруг налетела воспиталка и разделила нас ледяной стеной тихого часа. Так вот выпало стало быть. ВОРНИНГ: NON-IT Content По родине скучать начал заранее. За месяц облил испуганно жмущихся к стенам домочадцев слезами. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Еще в нежном возрасте нагадала мне на фантиках одна красотка из соседней группы дорогу дальнюю, и похоже еще было ей что сказать, как вдруг налетела воспиталка и разделила нас ледяной стеной тихого часа.</p>
<p style="text-align: justify">Так вот выпало стало быть.</p>
<p style="text-align: justify"><strong>ВОРНИНГ: NON-IT Content</strong></p>
<div style="text-align: justify"><span id="more-1398"></span></div>
<p style="text-align: justify">По родине скучать начал заранее. За месяц облил испуганно жмущихся к стенам домочадцев слезами. За неделю помылся. Но тоска грызет. Я даже грустен сделался.</p>
<p style="text-align: justify">Родина, понимая тоску мою, подослала мне (прямо в ночь вылета) своих эмиссаров &#8212; позвонил Серж вечером поздним: &#171;пойдем в лес, говорит, пиво пить в темноте из бутылок будем&#187;. Я вообще к подобным предложениям от мальчиков осторожно отношусь, оттуда не далеко до черты, за которой только узкие красные джинсы да степные пожары. А тут еще и компания соответствующая (Я щас пожары имею ввиду), прям флеш-рояль на поджоги. Но обошлось. Родина, увидив такой кафешантан тут же насторожилась и дождик выдала. Обнявшись, прорыдали до полуночи.</p>
<p style="text-align: justify">А там и такси примчало. Хотел в машине устроить прощание славянки и даже начал остатки слез выдавливать, как увидел на окружной дороге пробку в районе профы в три, разъети ее мать, часа то ночи. Плюнул в окно закрытое, закутался в бурку и насупился аки скорпий.</p>
<p style="text-align: justify">У входа в еропорт по старой традиции расцеловал взасос землицу Русскую и пошел на рейс чекиниться.</p>
<p style="text-align: justify">Подошел к первой стойке &#8212; отшили &#8212; только бизнесс класс.</p>
<p style="text-align: justify">Подошел ко второй стойке &#8212; отшили &#8212; программка не запускается.</p>
<p style="text-align: justify">На третьей наши уверенно победили и отдал Я котомку с исподним в холодное жерло багажного сортировщика. Все что нажито авиакомпания определенно собралась потерять, иначе нафига допытываться где Я остановлюсь в странах заморских. А там сала одного на пол пуда&#8230;</p>
<p style="text-align: justify">Время до вылета коротал в междугородней сети интернет. Благо в столице то в еропортах есть вайфай халявный.</p>
<p style="text-align: justify">Все культурные вокруг, матом не ругаются, типа забугор летим, элитные мы. Ну Я тоже одухотворенное лицо сделал.</p>
<p style="text-align: justify">Но очередь в дьютике была, да.</p>
<p style="text-align: justify">Авиакомпания аэрофлот&#8212; услада очей.  Бортпроводницы молодые, фигуристые,  декольты с шарфиками. Всю дорогу, вольготно разложившись, покровительственно похлопывал их по всякому.</p>
<p style="text-align: justify">Но музыка играла не долго. Пересадка в ЛондОне.</p>
<p style="text-align: justify">Ловко прошел предполетный досмотр &#8212; приноровился и подскочил к деве юной на ощупывание! Доложу Я вам, занятно. Спросили куда лечу и где буду жить. Записали адресок.</p>
<p style="text-align: justify">Спросил в ответ: &#171;А вы чО правда решили продолбать мой багаж?&#187;.</p>
<p style="text-align: justify">В зале вылета усмотрел стратежное место (с розеткой рядом) и бросился туда, расталкивая зазевавшуюся чухонь. Рядом сидит природноподкопченный товарищ (Я не расист, да), плотоядно на мои переходнички (коих у меня набор знатный) щурится, Я на всякий случай деньги в носок перепрятал&#8230; А индусик мне и молвит человеческим голосом: дай, мол, мне на минуточку переходничек свой &#8212; я хочу на толику малую телефон зарядить. Пожурил его ласково за диагональ экрана неразумную, но дал.</p>
<p style="text-align: justify">Разговорились, он оказался CSE сектра SP маленького буржуйского кооператива, первый выезд на площадку.</p>
<p style="text-align: justify">Я ему показал кой-какие фотки с айпада и пару урлов дал. Два часа парень ржал как конь, потом потащил меня в кабак и настоял, что он заплатит.</p>
<p style="text-align: justify"><strong>Отступление:</strong> В Хитроу хитрые британцы навешали таблички вида &#171;До выхода Х отсюда топать 20 мин&#187;, да он ппц какой большой.</p>
<p style="text-align: justify">Откушивали мы в самом далеком от моего выхода месте.</p>
<p style="text-align: justify">Вдруг табличка &#171;иди к выходу&#187; сменилась на &#171;выход закрыт&#187; а время вроде как еще есть&#8230;</p>
<p style="text-align: justify">Короче, реально двадцать минут бы протопал. Пробежал правда за 7.</p>
<p style="text-align: justify">Т.к. самолет летит в СШП в нем ЧСХ есть американцы &#8212; это такие крупные пацаны. Пока шел к месту целовал себя за то, что договорился о месте в проходе, потому как народ подобрался знатный &#8212; каждый не меньше полутора центнеров. Вот одна така тетка мне наушники порвала.</p>
<p style="text-align: justify">Перелёт в стиле &#171;час поспал &#8212; час кино посмотрел&#187; &#8212; это тема. Выучил ровно пол серии шерлока холмса и пол серии невыполнимой миссии.</p>
<p style="text-align: justify">Тут со стюардессами все в порядке, 40+ серьезные тетки. Прям веет уверенностью &#8212; долетим, им домой надо &#8212; дети не кормленные. Были правда две природнозагорелые с такими задницами, что в проходе с ними разминуться не мог никто. Типа такой поршень носится по проходу &#8212; выдавливает малохольных.</p>
<p style="text-align: justify">Сели в ЛА. Отстоял 40 минут в очереди на таможенный контроль. Воин Маниту Незатопляемый Буй (да не затупится его томагавк) нарек меня Великим Оленем т.к. не заполнил бумажку, которую надо было взять по пути, а той которую дали в самолете не достаточно. Но разрешил за ней сбегать и потом без очереди пройти. Естественно, бумажки на английском не оказалось шустрая тетка обещала подтащить, но исчезла. Пока ждал, изрисовал похабными картинками две корейских.</p>
<p style="text-align: justify">Тетку ждать надоело и Я пошел стучаться во все двери и просить бумажку. Собрал целый консилиум парней в форме которые решали где бы взять бумажки и не посдить ли меня такого наглого на обратный самолет.</p>
<p style="text-align: justify">Нашли. Заполнил. Прошел.</p>
<p style="text-align: justify">Простояв полчаса около карусели, осознал, что багаж таки продолбали. Озаботил этим вопросом шустрого природнозагорелого паренька, он приволок отприродыжелтоватую тетку она ткнула меля лицом в список с моим именем и сообщила, что багажа тут нет, но он прилетит и вообще иди в аэрофлот &#8212; это он виноват. Прикольно.</p>
<p style="text-align: justify">Дошел до аэрофлота. Там стоят пассажиры первого класса и громко всем хамят. Я вяло поинтересовался у природноподкопченной девочки где чемодан с любимыми ситцевыми трусами она взяла рацию и сказала туда много всего. Мне перевела ответ в стиле: &#171;ищут, может занять время&#187;. Через полчаса Я скромно напомнил о себе. Она снова сказала что то в рацию. Появился русский дядька &#8212; Я его озаботил вопросом &#8212; он сказал &#8212; ждите и скрылся. Мне это настохорошело и Я пошел в АА.</p>
<p style="text-align: justify">Нашел офис обработки багажа и изложил проблему вовсенезагорелой, тетке она потыкала в комп, радостно сказала &#171;АГА!&#187; и скрылась. подождал еще. Надоело совсем. Нашел природнозагорелую и озаботил её &#8212; она потыкала в комп и тут же сообщила что багаж продолбан и прилетит ночью. Я грю в гостиницу могем? &#8212; Легко! Я вот уже тогда проникся серьёзностью природнозагорелых теток.</p>
<p style="text-align: justify">Но настоящий праздник души был в очереди на аренду машин. Еще одна природнозагорелая девочка жгла как дуговая сварка: у нее было два телефона оба торчали в декольте, симметрично так&#8230; миленько. один постоянно орал родные африканские мотивы, а на  другой время от времени звонили. От это жара была&#8230; Виброзвонок мощный, продолжительный, распространение гармонических колебаний в упругих средах потрясающее, Я выл.</p>
<p style="text-align: justify">С машиной получилось забавно: ваащета, Я заказывал мускул-кары до 1980 года выпуска с наклейкой &#171;Fuck the fuel economy&#187; и шляпой с очками в бардачке. Не дали, т.к. машину Я хотел взять в LA, а сдать в Сан-ФранЦыске. В итоге решил не выеживаться и заказал маленькую ниссан альтиму.</p>
<div style="text-align: justify">&#8212;Альтимы нет, берите малибу. Надо доплатить двести баксов.</div>
<div style="text-align: justify">&#8212;Очень жаль, пока-пока. Я видел на стоянке напротив прекрасный малибу за те же деньги.</div>
<div style="text-align: justify">&#8212;Буй с тобой, бери за теже деньги. Кстати у меня сегодня спец-предложение камри по цене малибы, возьмешь?</div>
<div style="text-align: justify">&#8212;Да пофиг, давай. А скока мустанг стоит?</div>
<div style="text-align: justify">&#8212;Доплати $330.</div>
<div style="text-align: justify">&#8212;Нах!</div>
<div style="text-align: justify">&#8212;Есть тема &#8212; нулячий камаро!</div>
<div style="text-align: justify">&#8212;Скока?</div>
<div style="text-align: justify">&#8212;+ $200.</div>
<div style="text-align: justify">&#8212;Давай. Надеюсь он желтый и без сюрпризов?</div>
<div style="text-align: justify">&#8212;Каких?</div>
<div style="text-align: justify">&#8212;Ну Я в кино видел, чувак купил камаро, а он в робота превращался, вот такую мне не надо.</div>
<div style="text-align: justify">&#8212;Едди Ваганович Мерфи, блин. О кстати в камаре и камри нет жпс!</div>
<div style="text-align: justify">&#8212;Ну и нах мне было мозга есть? Где моя малиба?</div>
<div style="text-align: justify"></div>
<div style="text-align: justify">Кстати, за навигатор зарядили  почти $200. Упаковался в авту и помчал. Заехал в магаз закупиться исподним. Увидел еще одну толковую природнозагорелую тетку, которая проверяла автоотвечик по громкой связи. Каждое сообщение начиналось с адового вопля: &#171;ЙОУ! ВЕР АР Ю?!&#187;. Так бы и ходил за ней весь день&#8230;</div>
<p style="text-align: justify">Лос-Анжелес прекрасен, Я типа попал в час пик представьте парни&#8230; мкад, час пик, по нему со скоростью 60 кмч едут машины во всех рядах. Каждая отстает от предыдущей на 50 метров. Ну млин готовая трасса для слалома. Я понял, что что-то не так, когда обратил внимание на то, что машины разбегаются пр виде меня. Короче выключил Я с трудом южный стиль вождения и поплелся со всеми.</p>
<p style="text-align: justify">Калифорния это наше Сочи только горы поменьше, а все остальное в наличии: песня &#171;чОрные глаза&#187;, хачапури, лаваш, кебаб итп.</p>
<p style="text-align: justify">Постоял на берегу, посмотрел в сторону Родины&#8230; Туман был, не видно ничО. Но веяло оттуда чем-то хорошим.</p>
<p style="text-align: justify">Проехал не далеко, срубил джетлаг.</p>
<p style="text-align: justify">Мотель &#8212; полный атас. Все как в кино. Гадюшник, но мне было уже наплевать.</p>
<p style="text-align: justify">Характер расшатанности кроватей говорит о классической постановке вопроса на территории калифорщины. Зато душ.</p>
<p style="text-align: justify">Встал в 5 по местному времени. Как честный тип тытался минут 10 достучаться до портье, чтоб ключи отдать&#8230; забил и сунул под дверь.</p>
<p style="text-align: justify">Помчал дальше.</p>
<p style="text-align: justify">Показалось что машину ведет вправо, остановился, включил аварийку. Не успел отстягнуть ремень, как увидел сзади останавливающегося полицая, хайвей патрол блин.</p>
<p style="text-align: justify">Вот тут всякое подумалось: что в багажник не заглянул, бардачОк не проверил. А ну как там труп или запас зелья конский?</p>
<p style="text-align: justify">Машина полицая обвешана всякими деталями от звездолетов, ну чисто жигули семерка в Чалтыре (тут Я конечно приувеличил, ну куда ему до наших парней).</p>
<p style="text-align: justify">Подошел офицер Фернандез и, придерживая руку у пояса, поинтересовался</p>
<p style="text-align: justify">&#8212;А фигли ли ты тут делаешь?</p>
<p style="text-align: justify">&#8212;Лос лобос антонио бандераз, марьячи (колесо остановился посмотреть)</p>
<p style="text-align: justify">&#8212;А едешь куда? [он явно очленел от моего испанского]</p>
<p style="text-align: justify">&#8212;Туда.</p>
<p style="text-align: justify">&#8212;А ну ладно, скатертью по ягодицам.</p>
<p style="text-align: justify">Ни документов проверить, ни машину досмотреть&#8230; Плохо служба поставлена у товарища Фернадеса.</p>
<p style="text-align: justify">Зато я фотку сделал</p>
<div style="text-align: justify"><a href="http://www.anticisco.ru/blogs/wp-content/uploads/2012/05/IMG_0088.jpg"><img class="aligncenter size-large wp-image-1399" src="http://www.anticisco.ru/blogs/wp-content/uploads/2012/05/IMG_0088-1024x768.jpg" alt="" width="1024" height="768" /></a></div>
<div>
<p style="text-align: justify">Где то там под туманом мирно спит поселок городского типа имени святой Варвары.</p>
<p style="text-align: justify">Долго ли коротко ли, но с открытыми окнами да под Владимира Семеновича подкатил вальяжно к отелю&#8230; Местные поразбежались. Я не обломался, заглушил машину, допел песню про коней привередливых соло и пошел вселяться.</p>
<p style="text-align: justify">Американские отели &#8212; полный праздник души &#8212; полномасшабная кухня с кастрюлями&#8230; холодильник размером с малогабаритную квартиру.</p>
<p style="text-align: justify">Багаж правда на слудующий день привезли. Что радует. Со снятыми ремнями.</p>
<p style="text-align: justify">Местность &#8212; супер &#8212; кругом отели, пальмы, офисы IT-компаний. Причем выше 2 этажей строений очень мало. Места вагон, очень зелено, супер! Утки ходют. Кур не видно.</p>
<p style="text-align: justify">Еще белки есть&#8230; ну как белки, так фигня какая-то.</p>
<p style="text-align: justify">Вот у нас какие белки &#8212; чОткие, дерзкие, резкие как понос. Ну чисто гопота.</p>
<p style="text-align: justify">А тут крысы пушистые, сутливые и невнятные. Плохие белки короче.</p>
<p style="text-align: justify">Аборигены очень  вежливые и дружелюбные, все очень за меня радовались: что наконец в нашей стране закончился тоталитарный ад с расстрелами и голодом и теперь мы можем есть гамбургеры и слушать Бритни. Сетовали, что демократии у нас мало и Путин плохой. Я тоже взвизгивал от восторга и поддерживал беседу, благодарил за все, просил дать нам больше джинсов, айпадов и жувачки. Когда нечаянно выпал из контекста, рассказал им шутку &#171;Все лучшее детям! Американским&#187;. Я жыж говорю, нечаянно.</p>
<p style="text-align: justify">На выходных поехали в Сан-ФранцЫску. Накануне, проштудировав путеводители, выяснили, что смотреть там только мост, центральную прощадь, алькатрас, зоопарк и трамваи. Офигенный выбор.</p>
<p style="text-align: justify">Тупо сели в экскурсионный автобус который мимо этого всего едет.</p>
<p style="text-align: justify">Бодрая девушка-экскурсовод рассказала, что тут все самое клевое и тут придумали трамвай и метро. Мой коллега (португалец) угодливо подсказал, что канал под Ла-Маншем тоже тут делали. Заржали почему то очень немногие. Согласен, шутка тупая.</p>
<p style="text-align: justify">На алькатрас не поехали. Зоопарк тоже побоку. Побродили маленько. Но мост красивый, да.</p>
<p style="text-align: justify">Мостов там две штуки тот который поменьше и красный &#8212; &#171;Золотые ворота&#187;.</p>
<p style="text-align: justify">Есть мнение, что если второй покрасить, на золотые ворота больше никто не поедет.</p>
<p style="text-align: justify">Количество бомжей потрясает. большая часть жрет что-то из макдоналдса. Нормально, довольные, кричат что-то, половина с айподами. Интересно, они музу официально в тунце покупают?</p>
<p style="text-align: justify">В бизнес-квартале между небоскребами отчетливо пахнет мочей и горки мусора. Может последствия субботы?</p>
<p style="text-align: justify">Знаменитый дым из люков &#8212; результат работы химиката, который запах этой канализации убивает.</p>
<p style="text-align: justify">Хороший город. Красивый.</p>
<p style="text-align: justify">В гостинице решил не расходовать дефицитное хозяйственное мыло и сдать исподнее в местную прачечную.</p>
<p style="text-align: justify">Не поперло с самого начала. Набил специальный пакет &#171;для грязных шмоток&#187; грязными шмотками и оставил в номере у входа. Вернулся &#8212; он на месте. Ну раз гора не идет, надо самому сходить и объяснить что она не права.</p>
<div style="text-align: justify">Дошел до главной девочки.</div>
<div style="text-align: justify">&#8212;(Я) Куда тут шмотки отдать на постирку?</div>
<div style="text-align: justify">&#8212;(Она) Оставьте тут, но заполните талон, перечислив все содержимое пакета.</div>
<div style="text-align: justify">&#8212;(Я) Да я не помню что там&#8230; исподнее, носки итп&#8230;</div>
<div style="text-align: justify">&#8212;(Она) Достаньте и посчитайте.</div>
<div style="text-align: justify">&#8212;(Внутренний Голос) ДА!! Сядь тут на пол, аккуратно разложи все по стопочкам пусть пропрутся!!</div>
<div style="text-align: justify">&#8212;(Здравомыслие) Да ну нах! отдай как есть.</div>
<div style="text-align: justify">&#8212;(ВГ) Всем заткнуться, доставай носки, это тема будет! Я хочу видеть их рожи!</div>
<div style="text-align: justify">&#8212;(ВГ) Давай не писайся! достанешь &#8212; куплю мотоцикл!</div>
<div style="text-align: justify">&#8212;(Здравомыслие) Не купишь, жаба задушит.</div>
<div style="text-align: justify">&#8212;(Жаба) Нахрен все, Я должна это видеть!</div>
<div style="text-align: justify">&#8212;(Я) Вот вам. писать ничего не буду, продолбаете носок &#8212; не сташно.</div>
<div style="text-align: justify">&#8212;(ВГ) Трус! У тебя был шанс&#8230;</div>
<p style="text-align: justify">Ушел как по подушкам.</p>
<p style="text-align: justify">А халявного вай-фая тут очень мало, но больше чем в Лондоне.</p>
<p style="text-align: justify">Пока так.</p>
</div>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Эпическая сага &amp;#171;Калифорщина&amp;#187; on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1398',contentID: 'post-1398',suggestTags: '',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1398</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IOS Transparent Firewall</title>
		<link>http://www.anticisco.ru/blogs/?p=1387</link>
		<comments>http://www.anticisco.ru/blogs/?p=1387#comments</comments>
		<pubDate>Mon, 30 Apr 2012 13:07:58 +0000</pubDate>
		<dc:creator>fantas1st0</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Transparent]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1387</guid>
		<description><![CDATA[В продолжение темы IOS Firewall мне бы хотелось поговорить с Вами об еще одной технологии, которая называется Cisco IOS Transparent Firewall. Данная функция была впервые внедрена в маршрутизаторы Cisco в IOS 12.3(7)T. Она позволяет проводить фильтрацию трафика и осуществлять динамическую инспекцию приложений, когда маршрутизатор выступает в роли L2-моста. В прозрачном (transparent) режиме маршрутизатор не осуществляет [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение темы IOS Firewall мне бы хотелось поговорить с Вами об еще одной технологии, которая называется Cisco IOS Transparent Firewall.</p>
<p>Данная функция была впервые внедрена в маршрутизаторы Cisco в IOS 12.3(7)T. Она позволяет проводить фильтрацию трафика и осуществлять динамическую инспекцию приложений, когда маршрутизатор выступает в роли L2-моста.</p>
<p>В прозрачном (transparent) режиме маршрутизатор не осуществляет маршрутизацию, а просто изучает MAC-адреса на всех своих интерфейсах подобно коммутатору. Когда Вы конфигурируете прозрачный фаирвол на Cisco IOS, прежде всего необходимо определиться с типом бриджирования, которое будет осуществлять маршрутизаторах. Таких типов два: CRB и IRB.<span id="more-1387"></span> Что же это за звери такие? Поговорим об этом подробнее.</p>
<ol>
<li>CRB (Concurrent Routing and Bridging) режим включается командой bridge crb. Позволяет маршрутизатору коммутировать фреймы между интерфейсами, которые являются членами одной мостовой группы (bridge group). Интерфейсы, которые не являются членами никакой мостовой группы и на которые назначены IP-адреса могут принимать и перенаправлять IP-пакеты. Т.е. в этом режиме маршрутизатор выступает в роли моста для одного набора интерфейсов и в роли обычного L3-устройства для других интерфейсов.</li>
<li>IRB (Integrated Routing and Bridging) режим включается командой bridge irb. Позволяет сконфигурировать специальный интерфейс BVI (Bridge Virtual Interface) для каждой мостовой группы. Данный интерфейс представляет маршрутизатор как L3-устройство для определенной мостовой группы. Все устройства внутри группы, которые знают MAC-адрес BVI-интерфейса, могут отправлять маршрутизатору IP-пакеты и общаться с другими сетевыми устройствами данного L2-домена. Этот режим позволяет маршрутизатору производить коммутацию между своими интерфейсами и маршрутизировать пакеты для членов мостовой группы, которые знают о данной службе.</li>
</ol>
<p>В целом, для простоты понимания, Вы можете сравнить BVI с SVI (Switch Virtual Interface) на L3-коммутаторе. В дополнение ко всему, вместе с командой bridge irb Вам необходимо добавить команду <strong>bridge &lt;NUMBER&gt; route ip</strong>, где NUMBER – номер мостовой группы. В противном случае, BVI-интерфейс не будет маршрутизировать IP-пакеты.</p>
<p>Вы можете применять правила классического фаирволла для динамической инспекции приложении и списки доступа на интерфейсы. Например:</p>
<address>bridge irb</address>
<address>bridge-group 1 protocol ieee</address>
<address>bridge 1 route ip</address>
<address>!</address>
<address>ip inspect name FIRE tcp</address>
<address>ip inspect name FIRE udp</address>
<address>ip inspect name FIRE icmp</address>
<address>!</address>
<address>ip access-list extended ACL_OUTSIDE-IN</address>
<address> deny ip any any</address>
<address>!</address>
<address>interface FastEthernet 1/0</address>
<address> bridge-group 1</address>
<address> ip inspect FIRE out</address>
<address>interface FastEthernet 1/1</address>
<address> bridge-group 1</address>
<address> ip access-group ACL_OUTSIDE-IN in</address>
<p>В прозрачном режиме поддерживается инспекция только для TCP/UDP и ICMP. Все не IP-пакеты по-умолчанию разрешены (ARP, STP и т.д.). Если Вы хотите заблокировать не IP-трафик, необходимо применить список доступа к мостовому интерфейсу. Эти списки доступа основываются на значениях Ethertype. Например, следующий список доступа разрешает весь IP-трафик и ARP, но блокирует WOL Magic packet:</p>
<address>access-list 250 permit 0&#215;0800</address>
<address>access-list 250 permit 0&#215;0806</address>
<address>access-list 250 deny 0&#215;0842</address>
<address>access-list 250 permit 0&#215;0 0xFFFF</address>
<address>bridge-group 1 input-type-list 250</address>
<p><em>Прим.: </em><em>Ethertype</em><em> </em><em>– двух байтовое поле в </em><em>Ethernet</em><em>-заголовке. Располагается сразу после поля «</em><em>Source</em><em> </em><em>MAC</em><em>». Используется для того, чтобы показать какой протокол инкапсулирован в </em><em>Ethernet</em><em> фрейм.</em></p>
<p>Фаирволл в прозрачном режиме не инспектирует multicast Ethernet фреймы – они разрешены независимо от того, что сконфигурировано во входящих списках доступа. Однако широковещательные фреймы проходят проверку в списках доступа. Для DHCP-пакетов фаирволл предоставляет специальное средство обработки (т.к. DHCP является важной составляющей сетевой инфраструктуры). Для разрешения прохождения DHCP-сообщений через фаирволл (опять же, независимо от того, что сконфигурировано в списках доступа) используйте команду <strong>ip inspect l2-transparent dhcp-passthrough</strong>.</p>
<p>И на последок скажу пару слов об IP-адресах, которые назначаются на BVI-интерфейс. Этот адрес должен быть внутри той же сети, что и защищаемый сегмент. Здесь вполне можно провести аналогию с фаирволлом Cisco ASA, когда та работает в прозрачном режиме и имеет единственный IP-адрес для управления.</p>
<p><em>Прим.: трафик, сгенерированный самим маршрутизатором не проходит проверку в списках доступа, которые назначены на интерфейсы в мостовой группе. Для контроля трафика управления Вам необходимо создать отдельный список доступа и применить его на </em><em>BVI</em><em>-интерфейс.</em></p>
<p>&nbsp;</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'IOS Transparent Firewall on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1387',contentID: 'post-1387',suggestTags: 'Transparent',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1387</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zone Based Firewall, Application Inspection</title>
		<link>http://www.anticisco.ru/blogs/?p=1368</link>
		<comments>http://www.anticisco.ru/blogs/?p=1368#comments</comments>
		<pubDate>Fri, 20 Apr 2012 10:53:38 +0000</pubDate>
		<dc:creator>fantas1st0</dc:creator>
				<category><![CDATA[Безопасность cisco]]></category>
		<category><![CDATA[Маршрутизаторы и коммутаторы]]></category>
		<category><![CDATA[ZBFW]]></category>
		<category><![CDATA[ZFW]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1368</guid>
		<description><![CDATA[В прошлой статье мы с вами познакомились с понятием Zone Based Firewall и узнали как можно настроить инспекцию того или иного протокола. Сейчас мы постараемся углубить полученные знания и посмотрим на инспектирование трафика не только на L3-L4, но и залезем внутрь уровня приложений. Маршрутизаторы Cisco IOS умеют проводить инспекцию протоколов не только на 3ем и [...]]]></description>
			<content:encoded><![CDATA[<p>В прошлой статье мы с вами познакомились с понятием Zone Based Firewall и узнали как можно настроить инспекцию того или иного протокола. Сейчас мы постараемся углубить полученные знания и посмотрим на инспектирование трафика не только на L3-L4, но и залезем внутрь уровня приложений.</p>
<p>Маршрутизаторы Cisco IOS умеют проводить инспекцию протоколов не только на 3ем и 4ом уровнях модели OIS, но и на 7ом. Для чего это нужно? Например, вы захотите запретить определенные SMTP сообщения, которые открывают уязвимости на почтовом сервере. Или вы хотите быть уверенным, что HTTP соединения не используются для тунеллирования сервисов мгновенных сообщений (напр. сервис ICQ2GO). Решение задач, подобных тем, что описаны в этом абзаце выше, возможно только с помощью инспекции сообщений протоколов на уровне приложений.</p>
<p><em><span id="more-1368"></span>Прим.: реализация </em><em>L</em><em>7-инспекции на маршрутизаторах имеет гораздо больше ограничений, чем на </em><em>Cisco</em><em> </em><em>ASA</em><em></em></p>
<p>Программное обеспечение Cisco IOS поддерживает глубокую инспекцию следующих служб и сервисов:</p>
<ol>
<li>HTTP</li>
<li>SMTP/eSMTP</li>
<li>POP3/IMAP</li>
<li>Приложения типа peer-to-peer (eDonkey, Kazaa, Gnutella)</li>
<li>Различные IM-приложения</li>
<li>Некоторые другие</li>
</ol>
<p>Как же конфигурируется L7-инспекция? Для этого IOS использует специальные типы карт классов и политик – так называемые specific application карты: <strong>class</strong><strong>-</strong><strong>map</strong><strong> </strong><strong>type</strong><strong> </strong><strong>inspect</strong><strong> </strong><strong>http</strong>, <strong>policy</strong><strong>-</strong><strong>map</strong><strong> </strong><strong>type</strong><strong> </strong><strong>inspect</strong><strong> </strong><strong>http</strong> и подобные им для каждого поддерживаемого протокола. В этих картах определяются «узкие» параметры протокола, которые должны быть проверена. После определения того, что мы конкретно хотим отловить у протокола (например метод GET в HTTP), необходимо применить только что сконфигурированную карту политик как вложенную внутрь уже существующей карты 3го/4го уровней модели OSI. Например:</p>
<address>class-map type inspect CLASS_HTTP</address>
<address> match protocol http</address>
<address>class-map type inspect http CLASS_HTTP-L7</address>
<address> match req-resp protocol-violation</address>
<address>policy-map type inspect http POLICY_HTTP-L7</address>
<address> class type inspect http CLASS_HTTP-L7</address>
<address>  reset</address>
<address>policy-map type inspect POLICY_HTTP</address>
<address> class type inspect CLASS_HTTP</address>
<address>  inspect</address>
<address>service-policy http POLICY_HTTP-L7</address>
<p>в при веденном примере сначала выделяется HTTP-трафик (class-map CLASS_HTTP), дальше указывается что конкретно мы хотим выявить в указанном трафике (match req-resp protocol violation отлавливает все HTTP сообщения, запрос или ответ в которых нарушают RFC). К отловленному трафику (с нарушениями RFC) применяется действие “reset”.</p>
<p><em>Прим.: важно помнить, что для каждой карты типа </em><em>inspect</em><em> &lt;</em><em>protocol</em><em>&gt;  применимы сугубо индивидуальные команды (т.е. для </em><em>HTTP</em><em> </em><em>мы может отлавливать трафик по одним критериям, которых не будет в протоколе </em><em>SMTP</em><em> </em><em>и наоборот). Чтобы ответить на вопрос «что можно поймать в том или ином протоколе?» необходимо внимательно прочитать соответствующий </em><em>RFC</em><em>.</em></p>
<p>Отдельно мне бы хотелось выделить один тип объектов, который часто используется при написании конфигов для L7-инспекции – это регулярные выражения. С помощью них можно поймать, например, определенную веб-страничку или почтовый адрес получателя электронного сообщения. Синтаксис для описания параметров регулярных выражений следующий:</p>
<address>parameter-map type regex REG_FLANE</address>
<address> pattern [Ff][Ll][Aa][Nn][Ee]</address>
<address>class-map type inspect http CLASS_HTTP-FLANE</address>
<address> match request header host regex REG_FLANE</address>
<p>Данная конструкция выловит все HTTP-сообщения, у которых в заголовках запроса содержится слово “flane” в любых вариантах написания.</p>
<p><em>Прим.: более подробную информацию о регулярных выражениях вы можете найти на сайте cisco.com</em></p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Zone Based Firewall, Application Inspection on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1368',contentID: 'post-1368',suggestTags: 'ZBFW,ZFW',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1368</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zone Based Firewall</title>
		<link>http://www.anticisco.ru/blogs/?p=1360</link>
		<comments>http://www.anticisco.ru/blogs/?p=1360#comments</comments>
		<pubDate>Thu, 19 Apr 2012 09:07:13 +0000</pubDate>
		<dc:creator>fantas1st0</dc:creator>
				<category><![CDATA[Безопасность cisco]]></category>
		<category><![CDATA[Маршрутизаторы и коммутаторы]]></category>
		<category><![CDATA[ZBFW]]></category>
		<category><![CDATA[ZFW]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1360</guid>
		<description><![CDATA[Zone Based Firewall (здесь и далее ZFW) – новое направление на маршрутизаторах под управлением операционной системы Cisco IOS для конфигурирования правил доступа между сетями. До появления этой технологии трафик фильтровался с помощью списков доступа ACL и динамической инспекции трафика (CBAC). И ACL и правила CBAC’а применялись непосредственно на физические интерфейсы, что во многих случаях не [...]]]></description>
			<content:encoded><![CDATA[<p>Zone Based Firewall (здесь и далее ZFW) – новое направление на маршрутизаторах под управлением операционной системы Cisco IOS для конфигурирования правил доступа между сетями. До появления этой технологии трафик фильтровался с помощью списков доступа ACL и динамической инспекции трафика (CBAC). И ACL и правила CBAC’а применялись непосредственно на физические интерфейсы, что во многих случаях не способствует масштабируемости и гибкости решения.</p>
<p><span id="more-1360"></span></p>
<p>В ZFW появляется новое ключевое понятия – зона, которая состоит из набора различных интерфейсов, которые должны иметь одинаковую политику сетевой безопасности (или, иначе говоря, одинаковый уровень доверия). На рисунке, вы можете увидеть три зоны безопасности, назначенные на различные интерфейсы маршрутизатора:</p>
<p><a href="http://www.anticisco.ru/blogs/wp-content/uploads/2012/04/zfw.bmp"><img src="http://www.anticisco.ru/blogs/wp-content/uploads/2012/04/zfw.bmp" alt="" /></a></p>
<p>Разрешения для прохождения того или иного трафика делаются между зонами, не между интерфейсами. По умолчанию, трафик разрешен между интерфейсами одной зоны безопасности и запрещен между разными зонами. Трафик между интерфейсом, который относится к какой-либо зоне, и интерфейсом, который не относится ни к одной зоне, запрещен. В дополнение ко всему, вы не можете применять классические правила фаирволла (CBAC, ACL) к интерфейсу, который принадлежит какой-либо зоне безопасности.</p>
<p>Существует одна зона, которая есть на всех маршрутизаторах и создана по-умолчанию и известна как self-зона. К этой зоне относятся все IP-адреса маршрутизатора. Трафик между self-зоной и любой другой по-умолчанию разрешен. Однако, вы можете применить политику между self-зоной и любой другой чтобы контролировать трафик, который генерируется маршрутизатором. Если вы примените политику от любой зоны к self-зоне, то трафик от self-зоны в обратном направлении будет все равно разрешен (пока вы явно это не запретите).</p>
<p>Когда вы хотите применить политики к трафику, который проходит между зонами, необходимо помнить одно важное правило: политики применяются к зоновой паре (zone pair). При этом, пара зон {A,B} это не тоже самое, что {B,A}. Первая зона в паре называется зоной-источником (source zone), вторая зоной назначения (destination zone). Когда вы применяете политику фаирволла к зоновой паре, она применяется к трафику который «бежит» от зоны-источника к зоне назначения.</p>
<p>Для применения политик ограничения/разрешения трафика, ZFW использует новый язык конфигурации, называемый Cisco Policy Language (CPL). Синтаксис CPL был полностью позаимствован от широко-известного MQC (Modular QoS CLI). Ниже представлен краткий обзор шагов конфигурации ZFW:</p>
<ol>
<li>Определить зоны. Это делается с помощью команды <strong>zone</strong><strong> </strong><strong>security</strong><strong> &lt;</strong><strong>ZONE</strong><strong>_</strong><strong>NAME</strong><strong>&gt;</strong>. Для каждой зоны можно задать описание (description).</li>
<li>Определить зоновые пары. Это делается с помощью команды <strong>zone-pair security &lt;ZONEPAIR_NAME&gt; source &lt;ZONE_SOURCE&gt; destination &lt;ZONE_DESTINATION&gt;</strong></li>
<li>Определить карты классов (class-map), которые описывают трафик, к которому применяются политики фаирволла. В ZFW используется новый тип классовых карт <strong>class</strong><strong>-</strong><strong>map</strong><strong> </strong><strong>type</strong><strong> </strong><strong>inspect</strong>, который описывает область инспекции трафика.</li>
<li>Определить карты политик (policy-map). В ZFW введен новый тип таких карт <strong>policy</strong><strong>-</strong><strong>map</strong><strong> </strong><strong>type</strong><strong> </strong><strong>inspect</strong>. Вы применяете ранее определенные классовые карты к картам политик и назначаете действия, который должен сделать маршрутизатор с определенным выше трафиком (например пропустить или дропнуть).</li>
<li>(Опционально) определить расширенные параметры политики: например ограничение количества TCP/UDP сессий. Более подробно различные сценарии мы с вами рассмотрим в отдельных статьях.</li>
<li>Применить карты политик к зоновой паре. Делается это командой <strong>service</strong><strong>-</strong><strong>policy</strong><strong> </strong><strong>type</strong><strong> </strong><strong>inspect</strong><strong> &lt;</strong><strong>POLICY</strong><strong> </strong><strong>NAME</strong><strong>&gt;</strong> в режиме конфигурирования зоновой пары, которую мы определили на шаге 2 данного алгоритма.</li>
<li>Завести интерфейсы в зоны. Это последний шаг, который делается в режиме конфигурирования интерфейса командой <strong>zone</strong><strong>-</strong><strong>member</strong><strong> </strong><strong>security</strong><strong> &lt;</strong><strong>ZONE</strong><strong> </strong><strong>NAME</strong><strong>&gt;</strong></li>
</ol>
<h2>Определение классов трафика</h2>
<p>Классовые карты инспекции могут быть двух типов: match-all и match-any, точно также, как и обычные карты в MQC. В первом случае, все условия match, которые заданы внутри карты, должны быть выполнены; во втором случае должно совпасть хотя бы одно условие.</p>
<p>Для выделения трафика по направлению вы можете использовать команду <strong>match</strong><strong> </strong><strong>access</strong><strong>-</strong><strong>group</strong><strong> </strong><strong>name</strong><strong> &lt;</strong><strong>ACL</strong><strong> </strong><strong>NAME</strong><strong>&gt;</strong> (это единственный способ выделить трафик от конкретного источника к конкретному получателю).</p>
<p>В дополнение к спискам доступа, вы можете выделять протоколы, которые поддерживаются модулем инспекции маршрутизатора (inspection engine). Список поддерживаемых протоколов такой же как у технологии CBAC. Однако, в противовес классическим классовым картам, когда вы вводите команду <strong>match</strong><strong> </strong><strong>protocol</strong> (для просмотра всех протоколов, которые поддерживаются для команды match, можно использовать команду show ip port-map), вы не включаете процесс NBAR’а – скорее протокол для инспекции будет выбран когда карта политики будет применена к зоновой паре. Довольно часто комбинируют «отлов» трафика по спискам доступа и протоколам, например:</p>
<address>class-map type inspect match-all CLASS_HTTP-INSIDE</address>
<address> match access-group ACL_INSIDE</address>
<address> match protocol http</address>
<p>выше приведенная конструкция отловит HTTP-трафик от пользователей, который находятся в INSIDE-сети (согласно списку доступа).</p>
<p>Кроме того, вы можете использовать вложенные классовые карты – это может быть полезно, когда необходимо применить комплексную логику И/ИЛИ. Например: вы хотите выбрать набор протоколов (HTTP, DNS, ICMP) для определенной группы пользователей. Итоговый результат будет выглядеть следующим образом:</p>
<address>ip access-list extended ACL_INSIDE</address>
<address> permit ip 10.1.1.0 0.0.0.255 any</address>
<address>class-map type inspect match-any CLASS_IN-OUT-PROTOCOLS</address>
<address> match protocol http</address>
<address> match protocol dns</address>
<address> match protocol icmp</address>
<address>class-map type inspect match-all CLASS_IN-OUT</address>
<address> match access-group name ACL_INSIDE</address>
<address> match class-map CLASS_IN-OUT-PROTOCOLS</address>
<h2>Применение политик</h2>
<p>Существует три основных действия, которые применимы для инспектирующих карт политик: “inspect”, “drop” и “pass”. Первое действие (inspect) аналогично правилу CBAC-инспекции. Оно включает динамическую инспекцию для трафика, который бежит от зоны источника к зоне назначения и автоматически разрешает обратный трафик даже для сложны протоколов, таких как H323. Действие “drop” просто отбрасывает трафик, а “pass” пропускает не включая инспекцию протокола (аналогично строчке “permit” в списке доступа). Пример команды:</p>
<address>policy-map type inspect POLICY_IN-OUT</address>
<address> class type inspect CLASS_IN-OUT</address>
<address>  inspect</address>
<p><em>Прим.: если вы используете “</em><em>inspect</em><em>” в карте политик, то классовые карты должны содержать хотя бы одно “</em><em>match</em><em> </em><em>protocol</em><em>” условие для определения того, какой протокол необходимо инспектировать. В противном случае будут инспектироваться все поддерживаемые протоколы. Если вы используете действие типа “</em><em>pass</em><em>”, то необходимо убедиться, что обратный трафик также разрешен. Помимо выше сказанного, каждая карта политик имеет скрытый класс </em><em>class</em><em>-</em><em>default</em><em>, для которого сконфигурировано действие “</em><em>drop</em><em>” (аналогично строке </em><em>deny</em><em> </em><em>any</em><em> </em><em>any</em><em> </em><em>в любом списке доступа).</em></p>
<h2>Изменение портов для инспектирования протоколов</h2>
<p>Как было замечено раньше, ZFW поддерживает тот же набор протоколов, что и CBAC. Вы можете посмотреть стандартные порты того или иного протокола на котором он может инспектироваться командой <strong>show</strong><strong> </strong><strong>ip</strong><strong> </strong><strong>port</strong><strong>-</strong><strong>map</strong>. Если вам нужно изменить стандартный порт инспекции, используйте команду <strong>ip</strong><strong> </strong><strong>port</strong><strong>-</strong><strong>map</strong><strong> &lt;</strong><strong>protocol</strong><strong>&gt;</strong>. Если вам нужно изменить стандартный порт только для определенных адресов (скажем для некоторых WEB-серверов), используйте команду <strong>ip</strong><strong> </strong><strong>port</strong><strong>-</strong><strong>map</strong><strong> &lt;</strong><strong>protocol</strong><strong>&gt; </strong><strong>port</strong><strong> &lt;</strong><strong>port</strong><strong>&gt; </strong><strong>list</strong><strong> &lt;</strong><strong>ACL</strong><strong>&gt;</strong>. Например:</p>
<address>access-list 1 permit ip 10.1.1.0 0.0.0.255</address>
<address>ip port-map http tcp 8080 list 1</address>
<p>выше приведенные команды добавят инспектирование протокола HTTP по порту 8080 для адресов из диапазона 10.1.1.0/24.</p>
<h2>Self-зона маршрутизатора</h2>
<p>Политики, которые могут быть применены относительно self-зоны маршрутизатора имеют некоторые ограничения. Во-первых, динамическая инспекция для трафика, который сгенерирован самим маршрутизатором, ограничена протоколами TCP, UDP, ICMP и H323. Инспекция протоколов на уровне приложений (HTTP, TELNET и пр.) не поддерживается. Во-вторых, ограничение по количеству сессий и по полосе также не может быть сконфигурировано.</p>
<p>Рассмотрим пример: нам требуется разрешить только SSH-трафик на машрутизатор. Сделать это можно следующим образом:</p>
<address>ip access-list extended ACL_SSH-SELF</address>
<address> permit tcp any any eq 22</address>
<address>class-map type inspect CLASS_OUT-SELF</address>
<address> match access-group name ACL_SSH-SELF</address>
<address>policy-map type inspect POLICY_OUT-SELF</address>
<address> class type inspect CLASS_OUT-SELF</address>
<address>  pass</address>
<address>zone-pair security ZONEP_OUT-SELF source OUTSIDE destination self</address>
<address> service-policy type inspect POLICY_OUT-SELF</address>
<p><em>Прим.: после примененной выше конфигурации, весь трафик кроме </em><em>SSH</em><em> </em><em>будет отброшен. Если вы используете, например, протоколы маршрутизации </em><em>OSPF</em><em>, </em><em>EIGRP</em><em>, то они должны быть явно разрешены – т.к. инспекция этих протоколов не поддерживается.</em></p>
<address>ip access-list ACL_ROUTING</address>
<address> permit ospf any any</address>
<address> permit eigrp any any</address>
<address>class-map type inspect CLASS_ROUTING</address>
<address> match access-group name ACL_ROUTING</address>
<address>policy-map type inspect POLICY_OUT-SELF</address>
<address> class type inspect CLASS_ROUTING</address>
<address>  pass</address>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Zone Based Firewall on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1360',contentID: 'post-1360',suggestTags: 'ZBFW,ZFW',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1360</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DMVPN (Dynamic Multipoint VPN). Часть 2. Отказоустойчивая конфигурация.</title>
		<link>http://www.anticisco.ru/blogs/?p=1294</link>
		<comments>http://www.anticisco.ru/blogs/?p=1294#comments</comments>
		<pubDate>Tue, 17 Apr 2012 10:34:22 +0000</pubDate>
		<dc:creator>P@ve1</dc:creator>
				<category><![CDATA[Безопасность cisco]]></category>
		<category><![CDATA[DMVPN]]></category>
		<category><![CDATA[IPSec]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1294</guid>
		<description><![CDATA[В предыдущей части блога  DMVPN (Dynamic Multipoint VPN). Часть 1.   были рассмотрены основы технологии DMVPN и рассмотрен  базовый вариант настройки сервиса DMVPN без элементов отказоустойчивости.   Если вы с этой технологией совсем не знакомы,  рекомендую ознакомиться сначала с первой частью. Одно из главных преимуществ DMVPN – возможность построения отказоустойчивых виртуальных сетей на базе классического подхода [...]]]></description>
			<content:encoded><![CDATA[<p>В предыдущей части блога  <a href="http://www.anticisco.ru/blogs/?p=910">DMVPN (Dynamic Multipoint VPN). Часть 1.</a>   были рассмотрены основы технологии DMVPN и рассмотрен  базовый вариант настройки сервиса DMVPN без элементов отказоустойчивости.   Если вы с этой технологией совсем не знакомы,  рекомендую ознакомиться сначала с первой частью.</p>
<p>Одно из главных преимуществ DMVPN – возможность построения отказоустойчивых виртуальных сетей на базе классического подхода посредством использованием протоколов динамической маршрутизации. Шифрованное mGRE облако фактически представляет собой легко масштабируемый L3 транспорт, прозрачный для протоколов маршрутизации – в этом основное преимущество перед классическим IPsec.</p>
<p><span id="more-1294"></span></p>
<p>Рассмотрим наиболее сложную в плане отказоустойчивости схему, включающую всевозможные варианты:</p>
<ul>
<li>2 DMVPN hub-а в центральном офисе.</li>
<li>3 провайдера в центральном офисе.</li>
<li>1 из hub-ов подключен одновременно к двум провайдерам.</li>
<li>2 удаленных Spoke офиса.</li>
<li>1 из spoke-ов подключен одновременно к двум провайдерам.</li>
</ul>
<p>Лабораторный стенд будет иметь следующий вид:</p>
<p><a href="http://www.anticisco.ru/blogs/wp-content/uploads/2012/04/Точечный-рисунок22.jpg"><img src="http://www.anticisco.ru/blogs/wp-content/uploads/2012/04/Точечный-рисунок22.jpg" alt="" width="774" height="256" /></a></p>
<p>Итак, в данной схеме со стороны центрального офиса мы имеем 2  HUB маршрутизатора и 2 провайдера, оба из которых терминируются на первом маршрутизаторе, и один на втором.  Нашей целью является организовать свое mGRE облако поверх каждого провайдерского линка центрального офиса. Соответственно мы будем иметь 2 виртуальных туннельных mGRE интерфейса на  первом маршрутизаторе и 1 mGRE интерфейс на втором.  Итого 3 облака.  И на каждом Spoke маршрутизаторе будет терминироваться 3 туннельных интерфейса.  На Spoke_2 &#8212; первое облако будет работать через первого провайдера &#8212; остальные два через второго. Маршрутизатор LAN_CORE – эмулирует ядро локальной сети центрального офиса.</p>
<p>Основным вопросом в данной ситуации является: как заставить трафик интересующего туннельного mGRE интерфейса ходить всегда через соответствующего провайдера?  Ответом на этот вопрос является весьма простая технология <strong><em>Tunnel</em></strong><strong><em> </em></strong><strong><em>route</em></strong><strong><em> </em></strong><strong><em>selection</em></strong>, которая непосредственно в настройках туннельного интерфейса позволяет явным образом указать физический интерфейс, через который должен маршрутизироваться туннельный трафик: <strong>tunnel route-via </strong><em>interface-type</em><strong> </strong><em>interface-number</em><strong> </strong>{<strong>mandatory</strong> | <strong>preferred</strong>}.  Важно понимать, что данная опция работает только в том случае, если в таблице маршрутизации имеется соответствующий маршрут!</p>
<p>Вторым важным вопросом является:  как Spoke маршрутизатор сможет понять, к какому туннельному интерфейсу отнести приходящий GRE пакет?   Для этого существует технология <strong><em>tunnel</em></strong><strong><em> </em></strong><strong><em>key</em></strong>.  Данный механизм осуществляет маркировку GRE пакетов заданным значением tunnel key. Маркировка осуществляется  посредством записи  значения в добавляемые 4 байта к GRE заголовку.</p>
<p>Приступим к конфигурации наших маршрутизаторов.  Тестовая лаборатория собрана и отлажена в GNS3, платформа 7200 NPE-400, версия 15.0(1)M. Аналогично подобная конфигурация успешно опробована в боевой среде на платформах 7200 NPE-G2, ISR 1800/2800. В том числе с версиями 12.4(24)T  и более ранними.<br />
<strong></strong></p>
<p>&nbsp;</p>
<p><strong>1.) </strong><strong> Первоначальная конфигурация:</strong></p>
<p><strong>HUB 1:</strong><strong></strong><br />
interface FastEthernet0/0<br />
ip address 10.10.10.1 255.255.255.0<br />
!<br />
interface FastEthernet1/0<br />
ip address 1.1.1.2 255.255.255.0<br />
!<br />
interface FastEthernet2/0<br />
ip address 2.2.2.2 255.255.255.0<br />
!<br />
<span style="background-color: #ffff00">ip route 0.0.0.0 0.0.0.0 1.1.1.1<br />
ip route 0.0.0.0 0.0.0.0 2.2.2.1</span></p>
<p><strong>HUB </strong><strong>2</strong><strong>:</strong><br />
interface FastEthernet0/0<br />
ip address 10.10.10.2 255.255.255.0<br />
!<br />
interface FastEthernet2/0<br />
ip address 2.2.2.3 255.255.255.0<br />
!<br />
ip route 0.0.0.0 0.0.0.0 2.2.2.1</p>
<p><strong>INTERNET:</strong><br />
interface FastEthernet1/0<br />
ip address 1.1.1.1 255.255.255.0<br />
!<br />
interface FastEthernet2/0<br />
ip address 2.2.2.1 255.255.255.0<br />
!<br />
interface FastEthernet3/0<br />
ip address 3.3.3.1 255.255.255.0<br />
!<br />
interface FastEthernet4/0<br />
ip address 4.4.4.1 255.255.255.0<br />
!<br />
interface FastEthernet5/0<br />
ip address 5.5.5.1 255.255.255.0<br />
!</p>
<p><strong>SPOKE_1:</strong><br />
interface Loopback0<br />
ip address 10.2.2.2 255.255.255.0<br />
!<br />
interface FastEthernet3/0<br />
ip address 3.3.3.2 255.255.255.0<br />
!<br />
interface FastEthernet4/0<br />
ip address 4.4.4.2 255.255.255.0<br />
!<br />
<span style="background-color: #ffff00">ip route 0.0.0.0 0.0.0.0 3.3.3.1<br />
ip route 0.0.0.0 0.0.0.0 4.4.4.1</span></p>
<p><strong>SPOKE_2:</strong><br />
interface Loopback0<br />
ip address 10.3.3.3 255.255.255.0<br />
!<br />
interface FastEthernet0/0<br />
ip address 5.5.5.2 255.255.255.0<br />
duplex full<br />
!<br />
ip route 0.0.0.0 0.0.0.0 5.5.5.1</p>
<p><strong>LAN_CORE:</strong><br />
interface Loopback0<br />
ip address 10.1.1.1 255.255.255.0<br />
!<br />
interface FastEthernet0/0<br />
ip address 10.10.10.3 255.255.255.0<br />
!</p>
<p>Ключевым моментом данной части является настройка равноценных маршрутов (выделено желтым) до всех остальных маршрутизаторов, если на конфигурируемом маршрутизаторе терминируется 2 или более провайдеров. В данном случае мы используем маршруты по умолчанию – но это могут быть и конкретные маршруты до конечных узлов.  Без этого не будет работать функционал <strong><em>tunnel</em></strong><strong><em> </em></strong><strong><em>route</em></strong><strong><em>-</em></strong><strong><em>via</em></strong>.</p>
<p>&nbsp;</p>
<p><strong>2.) </strong><strong>Настраиваем</strong><strong> mGRE </strong><strong>транспорт</strong><strong>:</strong><br />
<strong> </strong><br />
<strong>HUB 1:</strong><br />
interface Tunnel1<br />
ip address 192.168.1.1 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map multicast dynamic<br />
<span style="background-color: #ffff00">ip nhrp network-id 1</span><br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet1/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 1</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet1/0 mandatory</span><br />
tunnel path-mtu-discovery<br />
!<br />
interface Tunnel2<br />
ip address 192.168.2.1 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map multicast dynamic<br />
<span style="background-color: #ffff00">ip nhrp network-id 2</span><br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet2/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 2</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet2/0 mandatory</span><br />
tunnel path-mtu-discovery</p>
<p><strong>HUB 2:</strong><br />
interface Tunnel3<br />
ip address 192.168.3.1 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map multicast dynamic<br />
<span style="background-color: #ffff00">ip nhrp network-id 3</span><br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet2/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 3</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet2/0 mandatory</span><br />
tunnel path-mtu-discovery</p>
<p><strong>SPOKE_1:</strong><br />
interface Tunnel1<br />
ip address 192.168.1.101 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map 192.168.1.1 1.1.1.2<br />
ip nhrp map multicast 1.1.1.2<br />
<span style="background-color: #ffff00">ip nhrp network-id 1</span><br />
ip nhrp nhs 192.168.1.1<br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet3/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 1</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet3/0 mandatory</span><br />
tunnel path-mtu-discovery<br />
!<br />
interface Tunnel2<br />
ip address 192.168.2.101 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map 192.168.2.1 2.2.2.2<br />
ip nhrp map multicast 2.2.2.2<br />
<span style="background-color: #ffff00">ip nhrp network-id 2</span><br />
ip nhrp nhs 192.168.2.1<br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet4/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 2</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet4/0 mandatory</span><br />
tunnel path-mtu-discovery<br />
!<br />
interface Tunnel3<br />
ip address 192.168.3.101 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map 192.168.3.1 2.2.2.3<br />
ip nhrp map multicast 2.2.2.3<br />
<span style="background-color: #ffff00">ip nhrp network-id 3</span><br />
ip nhrp nhs 192.168.3.1<br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet4/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 3</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet4/0 mandatory</span><br />
tunnel path-mtu-discovery</p>
<p><strong>SPOKE_</strong><strong>2</strong><strong>:</strong><br />
interface Tunnel1<br />
ip address 192.168.1.102 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map 192.168.1.1 1.1.1.2<br />
ip nhrp map multicast 1.1.1.2<br />
<span style="background-color: #ffff00">ip nhrp network-id 1</span><br />
ip nhrp nhs 192.168.1.1<br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet0/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 1</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet0/0 mandatory</span><br />
tunnel path-mtu-discovery<br />
!<br />
interface Tunnel2<br />
ip address 192.168.2.102 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map 192.168.2.1 2.2.2.2<br />
ip nhrp map multicast 2.2.2.2<br />
<span style="background-color: #ffff00">ip nhrp network-id 2</span><br />
ip nhrp nhs 192.168.2.1<br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet0/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 2</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet0/0 mandatory</span><br />
tunnel path-mtu-discovery<br />
!<br />
interface Tunnel3<br />
ip address 192.168.3.102 255.255.255.0<br />
no ip redirects<br />
ip mtu 1400<br />
ip nhrp map 192.168.3.1 2.2.2.3<br />
ip nhrp map multicast 2.2.2.3<br />
<span style="background-color: #ffff00">ip nhrp network-id 3</span><br />
ip nhrp nhs 192.168.3.1<br />
ip tcp adjust-mss 1360<br />
tunnel source FastEthernet0/0<br />
tunnel mode gre multipoint<br />
<span style="background-color: #ffff00">tunnel key 3</span><br />
<span style="background-color: #ffff00">tunnel route-via FastEthernet0/0 mandatory</span><br />
tunnel path-mtu-discovery</p>
<p>Наиболее важные моменты выделены желтым. Это:<br />
<strong>1.) </strong><strong><em>ip</em></strong><strong><em> </em></strong><strong><em>nhrp</em></strong><strong><em> </em></strong><strong><em>network</em></strong><strong><em>-</em></strong><strong><em>id</em></strong> &#8212; идентификатор nhrp процесса/базы – для каждого облака должен быть свой уникальный идентификатор.<br />
<strong><em>2.) </em></strong><strong><em>tunnel</em></strong><strong><em> </em></strong><strong><em>key</em></strong><strong><em> </em></strong><strong><em> &#8212; </em></strong>идентификатор туннельного интерфейса на маршрутизаторе, для выяснения соответствия туннельного интерфейса и приходящего GRE пакета.<br />
<strong><em>3.) </em></strong><strong><em>tunnel</em></strong><strong><em> </em></strong><strong><em>route</em></strong><strong><em>-</em></strong><strong><em>via</em></strong><strong><em> </em></strong><strong><em>FastEthernetX</em></strong><strong><em>/</em></strong><strong><em>X</em></strong><strong><em> </em></strong><strong><em>mandatory</em></strong> – явное указание маршрутизировать туннельный трафик через указанный интерфейс. Параметр mandatory указывает, что в случае падения интерфейса или отсутствия маршрута &#8212; трафик не пойдет никуда.</p>
<p>&nbsp;</p>
<p><strong>3.) </strong><strong>Настраиваем динамическую маршрутизацию:</strong><br />
<strong> </strong><br />
<strong>HUB </strong><strong>маршрутизаторы:</strong><strong></strong><br />
interface TunnelX // для всех туннелей<br />
bandwidth 1000<br />
<span style="background-color: #ffff00">no ip next-hop-self eigrp 1<br />
no ip split-horizon eigrp 1</span><br />
!<br />
router eigrp 1<br />
network 10.0.0.0<br />
network 192.168.0.0 0.0.255.255</p>
<p><strong>SPOKE </strong><strong>маршрутизаторы</strong><strong>:</strong><br />
interface TunnelX // для всех туннелей<br />
bandwidth 100<br />
<span style="background-color: #ffff00">no ip next-hop-self eigrp 1<br />
no ip split-horizon eigrp 1</span><br />
!<br />
router eigrp 1<br />
network 10.0.0.0<br />
network 192.168.0.0 0.0.255.255<br />
<span style="background-color: #ffff00">eigrp stub connected summary</span></p>
<p><strong>LAN_CORE:</strong><br />
router eigrp 1<br />
network 10.0.0.0</p>
<p>Важным моментом здесь являются специфические настройки туннельных интерфейсов (выделено желтым), обусловленные non-broadcast multi-access природой сети mGRE.<br />
Также крайне рекомендуется настраивать везде, где возможно, опцию stub zone на SPOKE маршрутизаторах. Это может ускорить процесс сходимости сети, а так же исключит возможность транзитного трафика через филиалы.</p>
<p>Стоит отметить, что в данном случае я растянул процесс маршрутизации EIGRP 1 до маршрутизатора LAN_CORE. Для реальной сети это не совсем правильная практика, и используется она исключительно в целях упрощения лабораторного стенда.</p>
<p>&nbsp;</p>
<p><strong>4.) </strong><strong>Проверяем, что у нас получилось:</strong><br />
<strong> </strong><br />
<strong>HUB_1#</strong>sh ip eigrp neighbors<br />
EIGRP-IPv4 Neighbors for AS(1)<br />
H Address Interface Hold Uptime SRTT RTO Q Seq<br />
(sec) (ms) Cnt Num<br />
<span style="background-color: #ffff00">5 192.168.2.102 Tu2 10 03:43:00 873 5000 0 5<br />
4 192.168.1.102 Tu1 12 03:43:00 819 4914 0 4<br />
3 192.168.1.101 Tu1 12 03:43:01 427 2562 0 4<br />
2 192.168.2.101 Tu2 10 03:43:01 326 1956 0 5</span><br />
1 10.10.10.3 Fa0/0 10 03:43:07 128 768 0 9<br />
0 10.10.10.2 Fa0/0 12 03:43:07 215 1290 0 14</p>
<p><strong>HUB_1#</strong>show ip nhrp<br />
192.168.1.101/32 via 192.168.1.101<br />
Tunnel1 created 03:45:17, expire 00:04:48<br />
Type: dynamic, Flags: unique registered<br />
NBMA address: 3.3.3.2<br />
192.168.1.102/32 via 192.168.1.102<br />
Tunnel1 created 03:45:17, expire 00:05:08<br />
Type: dynamic, Flags: unique registered<br />
NBMA address: 5.5.5.2<br />
192.168.2.101/32 via 192.168.2.101<br />
Tunnel2 created 03:45:17, expire 00:04:50<br />
Type: dynamic, Flags: unique registered<br />
NBMA address: 4.4.4.2<br />
192.168.2.102/32 via 192.168.2.102<br />
Tunnel2 created 03:45:17, expire 00:05:10<br />
Type: dynamic, Flags: unique registered<br />
NBMA address: 5.5.5.2</p>
<p><strong>HUB_1#</strong>sh ip route<br />
<span style="background-color: #ffff00">S* 0.0.0.0/0 [1/0] via 2.2.2.1<br />
[1/0] via 1.1.1.1</span><br />
1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks<br />
C 1.1.1.0/24 is directly connected, FastEthernet1/0<br />
L 1.1.1.2/32 is directly connected, FastEthernet1/0<br />
2.0.0.0/8 is variably subnetted, 2 subnets, 2 masks<br />
C 2.2.2.0/24 is directly connected, FastEthernet2/0<br />
L 2.2.2.2/32 is directly connected, FastEthernet2/0<br />
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks<br />
D 10.1.1.0/24 [90/156160] via 10.10.10.3, 03:43:18, FastEthernet0/0<br />
<span style="background-color: #ffff00">D 10.2.2.0/24 [90/3968000] via 192.168.2.101, 03:43:09, Tunnel2<br />
[90/3968000] via 192.168.1.101, 03:43:09, Tunnel1<br />
D 10.3.3.0/24 [90/3968000] via 192.168.2.102, 03:43:09, Tunnel2<br />
[90/3968000] via 192.168.1.102, 03:43:09, Tunnel1</span><br />
C 10.10.10.0/24 is directly connected, FastEthernet0/0<br />
L 10.10.10.1/32 is directly connected, FastEthernet0/0<br />
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks<br />
C 192.168.1.0/24 is directly connected, Tunnel1<br />
L 192.168.1.1/32 is directly connected, Tunnel1<br />
192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks<br />
C 192.168.2.0/24 is directly connected, Tunnel2<br />
L 192.168.2.1/32 is directly connected, Tunnel2<br />
D 192.168.3.0/24 [90/3842560] via 10.10.10.2, 03:43:10, FastEthernet0/0</p>
<p><strong>HUB_2</strong>#sh ip eigrp neighbors<br />
EIGRP-IPv4 Neighbors for AS(1)<br />
H Address Interface Hold Uptime SRTT RTO Q Seq<br />
(sec) (ms) Cnt Num<br />
<span style="background-color: #ffff00">3 192.168.3.101 Tu3 11 03:55:52 1612 5000 0 6<br />
2 192.168.3.102 Tu3 12 03:55:52 170 1020 0 6</span><br />
1 10.10.10.1 Fa0/0 11 03:56:04 227 1362 0 16<br />
0 10.10.10.3 Fa0/0 11 03:56:06 519 3114 0 9</p>
<p><strong>HUB_2#</strong>sh ip nhrp<br />
192.168.3.101/32 via 192.168.3.101<br />
Tunnel3 created 03:56:05, expire 00:05:08<br />
Type: dynamic, Flags: unique registered<br />
NBMA address: 4.4.4.2<br />
192.168.3.102/32 via 192.168.3.102<br />
Tunnel3 created 03:56:06, expire 00:05:27<br />
Type: dynamic, Flags: unique registered<br />
NBMA address: 5.5.5.2</p>
<p><strong>HUB_2</strong>#sh ip route<br />
S* 0.0.0.0/0 [1/0] via 2.2.2.1<br />
2.0.0.0/8 is variably subnetted, 2 subnets, 2 masks<br />
C 2.2.2.0/24 is directly connected, FastEthernet2/0<br />
L 2.2.2.3/32 is directly connected, FastEthernet2/0<br />
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks<br />
D 10.1.1.0/24 [90/156160] via 10.10.10.3, 03:56:22, FastEthernet0/0<br />
<span style="background-color: #ffff00">D 10.2.2.0/24 [90/3968000] via 192.168.3.101, 03:56:08, Tunnel3<br />
D 10.3.3.0/24 [90/3968000] via 192.168.3.102, 03:56:08, Tunnel3</span><br />
C 10.10.10.0/24 is directly connected, FastEthernet0/0<br />
L 10.10.10.2/32 is directly connected, FastEthernet0/0<br />
D 192.168.1.0/24 [90/3842560] via 10.10.10.1, 03:56:08, FastEthernet0/0<br />
D 192.168.2.0/24 [90/3842560] via 10.10.10.1, 03:56:08, FastEthernet0/0<br />
192.168.3.0/24 is variably subnetted, 2 subnets, 2 masks<br />
C 192.168.3.0/24 is directly connected, Tunnel3<br />
L 192.168.3.1/32 is directly connected, Tunnel3</p>
<p><strong>SPOKE_1#</strong>sh ip eigrp neighbors<br />
EIGRP-IPv4 Neighbors for AS(1)<br />
H Address Interface Hold Uptime SRTT RTO Q Seq<br />
(sec) (ms) Cnt Num<br />
<span style="background-color: #ffff00">2 192.168.1.1 Tu1 12 04:01:24 788 5000 0 19<br />
1 192.168.2.1 Tu2 12 04:01:24 836 5000 0 20<br />
0 192.168.3.1 Tu3 14 04:01:25 612 5000 0 15</span></p>
<p><strong>SPOKE_1#</strong>sh ip nhrp<br />
192.168.1.1/32 via 192.168.1.1<br />
Tunnel1 created 04:02:09, never expire<br />
Type: static, Flags: used<br />
NBMA address: 1.1.1.2<br />
192.168.2.1/32 via 192.168.2.1<br />
Tunnel2 created 04:02:08, never expire<br />
Type: static, Flags: used<br />
NBMA address: 2.2.2.2<br />
192.168.3.1/32 via 192.168.3.1<br />
Tunnel3 created 04:02:08, never expire<br />
Type: static, Flags: used<br />
NBMA address: 2.2.2.3</p>
<p><strong>SPOKE_1#</strong> show ip route eigrp<br />
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks<br />
<span style="background-color: #ffff00">D 10.1.1.0/24 [90/27010560] via 192.168.3.1, 04:03:18, Tunnel3<br />
[90/27010560] via 192.168.2.1, 04:03:18, Tunnel2<br />
[90/27010560] via 192.168.1.1, 04:03:18, Tunnel1<br />
D 10.3.3.0/24 [90/28288000] via 192.168.3.102, 04:03:13, Tunnel3<br />
[90/28288000] via 192.168.2.1, 04:03:13, Tunnel2<br />
[90/28288000] via 192.168.1.102, 04:03:13, Tunnel1<br />
D 10.10.10.0/24 [90/26882560] via 192.168.3.1, 04:03:18, Tunnel3<br />
[90/26882560] via 192.168.2.1, 04:03:18, Tunnel2<br />
[90/26882560] via 192.168.1.1, 04:03:18, Tunnel1</span></p>
<p><strong>SPOKE_2#</strong>show ip eigrp neighbors<br />
EIGRP-IPv4 Neighbors for AS(1)<br />
H Address Interface Hold Uptime SRTT RTO Q Seq<br />
(sec) (ms) Cnt Num<br />
<span style="background-color: #ffff00">2 192.168.1.1 Tu1 13 04:06:30 256 5000 0 17<br />
1 192.168.2.1 Tu2 11 04:06:30 292 5000 0 18<br />
0 192.168.3.1 Tu3 13 04:06:31 384 5000 0 16</span></p>
<p><strong>SPOKE_2#</strong>sh ip nhrp<br />
192.168.1.1/32 via 192.168.1.1<br />
Tunnel1 created 04:06:55, never expire<br />
Type: static, Flags: used<br />
NBMA address: 1.1.1.2<br />
192.168.2.1/32 via 192.168.2.1<br />
Tunnel2 created 04:06:54, never expire<br />
Type: static, Flags: used<br />
NBMA address: 2.2.2.2<br />
192.168.3.1/32 via 192.168.3.1<br />
Tunnel3 created 04:06:54, never expire<br />
Type: static, Flags: used<br />
NBMA address: 2.2.2.3</p>
<p><strong>SPOKE_2#</strong>sh ip route eigrp<br />
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks<br />
<span style="background-color: #ffff00">D 10.1.1.0/24 [90/27010560] via 192.168.3.1, 04:06:45, Tunnel3<br />
[90/27010560] via 192.168.2.1, 04:06:45, Tunnel2<br />
[90/27010560] via 192.168.1.1, 04:06:45, Tunnel1<br />
D 10.2.2.0/24 [90/28288000] via 192.168.3.101, 04:06:41, Tunnel3<br />
[90/28288000] via 192.168.2.1, 04:06:41, Tunnel2<br />
[90/28288000] via 192.168.1.101, 04:06:41, Tunnel1<br />
D 10.10.10.0/24 [90/26882560] via 192.168.3.1, 04:06:45, Tunnel3<br />
[90/26882560] via 192.168.2.1, 04:06:45, Tunnel2<br />
[90/26882560] via 192.168.1.1, 04:06:45, Tunnel1</span></p>
<p>Итак видно, что полная связность mGRE сети имеется, трафик балансируется по всем имеющимся туннелям.<br />
Проверяем работу сети посредством ICMP:</p>
<p><strong>LAN_CORE#</strong>ping 10.2.2.2 source loopback 0 repeat 50<br />
Type escape sequence to abort.<br />
Sending 50, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:<br />
Packet sent with a source address of 10.1.1.1<br />
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
Success rate is 100 percent (50/50), round-trip min/avg/max = 140/177/264 ms</p>
<p><strong>LAN_CORE</strong>#ping 10.3.3.3 source loopback 0 repeat 50<br />
Type escape sequence to abort.<br />
Sending 50, 100-byte ICMP Echos to 10.3.3.3, timeout is 2 seconds:<br />
Packet sent with a source address of 10.1.1.1<br />
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
Success rate is 100 percent (50/50), round-trip min/avg/max = 140/170/220 ms</p>
<p>Видно, что проходящий через HUB-ы трафик маршрутизируется успешно.<br />
Теперь протестируем Spoke to Spoke трафик:</p>
<p><strong>SPOKE_1#</strong>ping 10.3.3.3 source loopback 0 repeat 50</p>
<p>Type escape sequence to abort.<br />
Sending 50, 100-byte ICMP Echos to 10.3.3.3, timeout is 2 seconds:<br />
Packet sent with a source address of 10.2.2.2<br />
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
Success rate is 100 percent (50/50), round-trip min/avg/max = 168/233/380 ms</p>
<p><strong>SPOKE_1#sh ip nhrp</strong><br />
192.168.1.1/32 via 192.168.1.1<br />
Tunnel1 created 04:13:06, never expire<br />
Type: static, Flags: used<br />
NBMA address: 1.1.1.2<br />
<span style="background-color: #ffff00">192.168.1.102/32 via 192.168.1.102<br />
Tunnel1 created 00:00:18, expire 00:06:21<br />
Type: dynamic, Flags: router used<br />
NBMA address: 5.5.5.2</span><br />
192.168.2.1/32 via 192.168.2.1<br />
Tunnel2 created 04:13:06, never expire<br />
Type: static, Flags: used<br />
NBMA address: 2.2.2.2<br />
192.168.3.1/32 via 192.168.3.1<br />
Tunnel3 created 04:13:05, never expire<br />
Type: static, Flags: used<br />
NBMA address: 2.2.2.3<br />
SPOKE_1#</p>
<p>Также видим, что в результате теста появилась выделенная динамическая NHRP запись. Т.е. трафик между SPOKE маршрутизаторами прошел напрямую, минуя HUB маршрутизаторы.</p>
<p>&nbsp;</p>
<p><strong>5.) </strong><strong>Настраиваем шифрование полученного транспорта посредством </strong><strong>IPsec</strong><strong>:</strong><br />
<strong> </strong><br />
Теперь самое интересное – настройка IPSec.<br />
Ключевыми моментами здесь является:</p>
<ul>
<li>Для каждого туннельного интерфейса необходимо настроить отдельный IPsec profile.</li>
<li>Для каждого IPsec profile необходимо настроить отдельный crypto isakamp profile с явным указанием используемого физического интерфейса.</li>
<li>Для каждого crypto isakamp profile необходимо настроить отдельный crypto keyring с явным указанием используемого физического интерфейса.</li>
</ul>
<p><span style="text-decoration: underline">Без выше приведенных указаний схема работать не будет!</span> Даже если все туннели бегают через один и тот же физический интерфейс.</p>
<p><strong>HUB_1:</strong><br />
crypto keyring DMVPN-1<br />
local-address FastEthernet1/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
crypto keyring DMVPN-2<br />
local-address FastEthernet2/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
!<br />
crypto isakmp policy 10<br />
authentication pre-share<br />
group 2</p>
<p>crypto isakmp profile DMVPN-1<br />
keyring DMVPN-1<br />
match identity address 0.0.0.0<br />
local-address FastEthernet1/0<br />
crypto isakmp profile DMVPN-2<br />
keyring DMVPN-2<br />
match identity address 0.0.0.0<br />
local-address FastEthernet2/0<br />
!<br />
crypto ipsec transform-set ESP-DES-MD5-HMAC esp-des esp-md5-hmac<br />
!<br />
crypto ipsec profile DMVPN-1<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-1<br />
!<br />
crypto ipsec profile DMVPN-2<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-2<br />
!<br />
interface Tunnel1<br />
tunnel protection ipsec profile DMVPN-1<br />
!<br />
interface Tunnel2<br />
tunnel protection ipsec profile DMVPN-2</p>
<p><strong>HUB_2:</strong><br />
crypto keyring DMVPN-3<br />
local-address FastEthernet2/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
!<br />
crypto isakmp policy 10<br />
authentication pre-share<br />
group 2</p>
<p>crypto isakmp profile DMVPN-3<br />
keyring DMVPN-3<br />
match identity address 0.0.0.0<br />
local-address FastEthernet2/0<br />
!<br />
crypto ipsec transform-set ESP-DES-MD5-HMAC esp-des esp-md5-hmac<br />
!<br />
crypto ipsec profile DMVPN-3<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-3<br />
!<br />
interface Tunnel3<br />
tunnel protection ipsec profile DMVPN-3</p>
<p><strong>SPOKE_1:</strong><br />
crypto keyring DMVPN-1<br />
local-address FastEthernet3/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
crypto keyring DMVPN-2<br />
local-address FastEthernet4/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
crypto keyring DMVPN-3<br />
local-address FastEthernet4/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
!<br />
crypto isakmp policy 10<br />
authentication pre-share<br />
group 2</p>
<p>crypto isakmp profile DMVPN-1<br />
keyring DMVPN-1<br />
match identity address 0.0.0.0<br />
local-address FastEthernet3/0<br />
crypto isakmp profile DMVPN-2<br />
keyring DMVPN-2<br />
match identity address 0.0.0.0<br />
local-address FastEthernet4/0<br />
crypto isakmp profile DMVPN-3<br />
keyring DMVPN-3<br />
match identity address 0.0.0.0<br />
local-address FastEthernet4/0<br />
!<br />
crypto ipsec transform-set ESP-DES-MD5-HMAC esp-des esp-md5-hmac<br />
!<br />
crypto ipsec profile DMVPN-1<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-1<br />
!<br />
crypto ipsec profile DMVPN-2<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-2<br />
!<br />
crypto ipsec profile DMVPN-3<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-3<br />
!<br />
interface Tunnel1<br />
tunnel protection ipsec profile DMVPN-1<br />
!<br />
interface Tunnel2<br />
tunnel protection ipsec profile DMVPN-2<br />
!<br />
interface Tunnel3<br />
tunnel protection ipsec profile DMVPN-3</p>
<p><strong>SPOKE_2:</strong><br />
crypto keyring DMVPN-1<br />
local-address FastEthernet0/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
crypto keyring DMVPN-2<br />
local-address FastEthernet0/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
crypto keyring DMVPN-3<br />
local-address FastEthernet0/0<br />
pre-shared-key address 0.0.0.0 0.0.0.0 key secret<br />
!<br />
crypto isakmp policy 10<br />
authentication pre-share<br />
group 2</p>
<p>crypto isakmp profile DMVPN-1<br />
keyring DMVPN-1<br />
match identity address 0.0.0.0<br />
local-address FastEthernet0/0<br />
crypto isakmp profile DMVPN-2<br />
keyring DMVPN-2<br />
match identity address 0.0.0.0<br />
local-address FastEthernet0/0<br />
crypto isakmp profile DMVPN-3<br />
keyring DMVPN-3<br />
match identity address 0.0.0.0<br />
local-address FastEthernet0/0<br />
!<br />
crypto ipsec transform-set ESP-DES-MD5-HMAC esp-des esp-md5-hmac<br />
!<br />
crypto ipsec profile DMVPN-1<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-1<br />
!<br />
crypto ipsec profile DMVPN-2<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-2<br />
!<br />
crypto ipsec profile DMVPN-3<br />
set transform-set ESP-DES-MD5-HMAC<br />
set isakmp-profile DMVPN-3<br />
!<br />
interface Tunnel1<br />
tunnel protection ipsec profile DMVPN-1<br />
!<br />
interface Tunnel2<br />
tunnel protection ipsec profile DMVPN-2<br />
!<br />
interface Tunnel3<br />
tunnel protection ipsec profile DMVPN-3</p>
<p>Проверяем работоспособность</p>
<p>&nbsp;</p>
<p><strong>6.) </strong><strong>Проверяем, что получилось в конечном варианте:</strong></p>
<p><strong>SPOKE_1#</strong>show crypto isakmp sa<br />
IPv4 Crypto ISAKMP SA<br />
dst src state conn-id status<br />
2.2.2.2 4.4.4.2 QM_IDLE 1002 ACTIVE<br />
1.1.1.2 3.3.3.2 QM_IDLE 1001 ACTIVE<br />
2.2.2.3 4.4.4.2 QM_IDLE 1003 ACTIVE</p>
<p><strong>SPOKE_2#</strong>show crypto isakmp sa<br />
IPv4 Crypto ISAKMP SA<br />
dst src state conn-id status<br />
2.2.2.3 5.5.5.2 QM_IDLE 1001 ACTIVE<br />
1.1.1.2 5.5.5.2 QM_IDLE 1003 ACTIVE<br />
2.2.2.2 5.5.5.2 QM_IDLE 1002 ACTIVE</p>
<p><strong>LAN_CORE#</strong>ping 10.2.2.2 source loopback 0 repeat 50<br />
Type escape sequence to abort.<br />
Sending 50, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:<br />
Packet sent with a source address of 10.1.1.1<br />
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
Success rate is 100 percent (50/50), round-trip min/avg/max = 148/213/540 ms</p>
<p><strong>LAN_CORE#</strong>ping 10.3.3.3 source loopback 0 repeat 50<br />
Type escape sequence to abort.<br />
Sending 50, 100-byte ICMP Echos to 10.3.3.3, timeout is 2 seconds:<br />
Packet sent with a source address of 10.1.1.1<br />
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
Success rate is 100 percent (50/50), round-trip min/avg/max = 132/168/232 ms</p>
<p><strong>SPOKE_2</strong>#ping 10.2.2.2 source loopback 0 repeat 50<br />
Type escape sequence to abort.<br />
Sending 50, 100-byte ICMP Echos to 10.2.2.2, timeout is 2 seconds:<br />
Packet sent with a source address of 10.3.3.3<br />
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!<br />
Success rate is 100 percent (50/50), round-trip min/avg/max = 144/293/1176 ms</p>
<p><strong>HUB_1#</strong>show crypto ipsec sa</p>
<p><span style="background-color: #ffff00">interface: Tunnel1</span><br />
Crypto map tag: Tunnel1-head-0, local addr 1.1.1.2</p>
<p>protected vrf: (none)<br />
<span style="background-color: #ffff00">local ident (addr/mask/prot/port): (1.1.1.2/255.255.255.255/47/0)<br />
remote ident (addr/mask/prot/port): (3.3.3.2/255.255.255.255/47/0)</span><br />
current_peer 3.3.3.2 port 500<br />
PERMIT, flags={origin_is_acl,}<br />
<span style="background-color: #ffff00">#pkts encaps: 4016, #pkts encrypt: 4016, #pkts digest: 4016<br />
#pkts decaps: 3941, #pkts decrypt: 3941, #pkts verify: 3941</span><br />
#pkts compressed: 0, #pkts decompressed: 0<br />
#pkts not compressed: 0, #pkts compr. failed: 0<br />
#pkts not decompressed: 0, #pkts decompress failed: 0<br />
#send errors 0, #recv errors 0</p>
<p>local crypto endpt.: 1.1.1.2, remote crypto endpt.: 3.3.3.2<br />
path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet1/0<br />
current outbound spi: 0x6D6950C(114726156)<br />
PFS (Y/N): N, DH group: none</p>
<p>*******<br />
<span style="background-color: #ffff00">interface: Tunnel2</span><br />
Crypto map tag: Tunnel2-head-0, local addr 2.2.2.2</p>
<p>protected vrf: (none)<br />
<span style="background-color: #ffff00">local ident (addr/mask/prot/port): (2.2.2.2/255.255.255.255/47/0)<br />
remote ident (addr/mask/prot/port): (4.4.4.2/255.255.255.255/47/0)</span><br />
current_peer 4.4.4.2 port 500<br />
PERMIT, flags={origin_is_acl,}<br />
<span style="background-color: #ffff00">#pkts encaps: 3823, #pkts encrypt: 3823, #pkts digest: 3823<br />
#pkts decaps: 3830, #pkts decrypt: 3830, #pkts verify: 3830</span><br />
#pkts compressed: 0, #pkts decompressed: 0<br />
#pkts not compressed: 0, #pkts compr. failed: 0<br />
#pkts not decompressed: 0, #pkts decompress failed: 0<br />
#send errors 0, #recv errors 0</p>
<p>local crypto endpt.: 2.2.2.2, remote crypto endpt.: 4.4.4.2<br />
path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet2/0<br />
current outbound spi: 0xAC4640D5(2890285269)<br />
PFS (Y/N): N, DH group: none</p>
<p>********<br />
Из приведенных пингов и куска <strong><em>show</em></strong><strong><em> </em></strong><strong><em>crypto</em></strong><strong><em> </em></strong><strong><em>ipsec</em></strong><strong><em> </em></strong><strong><em>sa</em></strong> на первом HUB-е видно, что все работает как надо, пакеты успешно ходят через оба туннельных интерфейса, GRE транспорт в обоих случаях успешно шифруется. Задача наша выполнена.<br />
А теперь интересная деталь:</p>
<p><span style="background-color: #ffff00"><strong>HUB_1</strong>#show ip cef tunnel 1 detail<br />
IPv4 CEF is enabled and running</span><br />
VRF Default<br />
43 prefixes (43/0 fwd/non-fwd)<br />
Table id 0&#215;0<br />
Database epoch: 0 (43 entries at this epoch)</p>
<p>10.2.2.0/24, epoch 0, per-destination sharing<br />
nexthop 192.168.1.101 Tunnel1<br />
10.3.3.0/24, epoch 0, per-destination sharing<br />
nexthop 192.168.1.102 Tunnel1<br />
192.168.1.0/24, epoch 0, flags attached, connected, cover dependents, need deagg<br />
Covered dependent prefixes: 4<br />
need deagg: 2<br />
notify cover updated: 2<br />
attached to Tunnel1<br />
192.168.1.101/32, epoch 0, flags attached<br />
Adj source: IP midchain out of Tunnel1, addr 192.168.1.101 67DE0C20<br />
Dependent covered prefix type adjfib cover 192.168.1.0/24<br />
attached to Tunnel1<br />
192.168.1.102/32, epoch 0, flags attached<br />
Adj source: IP midchain out of Tunnel1, addr 192.168.1.102 68738D00<br />
Dependent covered prefix type adjfib cover 192.168.1.0/24<br />
attached to Tunnel1</p>
<p>Как видно, в последних версиях IOS туннельные интерфейсы работают в режиме Cisco Express Forwarding (CEF) в том числе в случае использования опции tunnel key.<br />
<strong>PS</strong><strong></strong><br />
Теперь отвечу на вопрос: почему я не рассмотрел вариант с 4 перекрещивающимися mGRE облаками для HUB-ов и SPOKE-ов, терминирующих по два провайдера (fullmesh) ? Мое мнение следующее: подобная схема конечно же имеет право на существование в воспаленном мозгу. Также, чисто теоретически, она должна работать на основе рассмотренной конфигурации (tunnel route via). Но в реальной жизни в здравом уме я бы определенно не стал этого делать. Так как ничего хорошего, кроме лишнего фактора непредсказуемости, нагрузки CPU и утилизации канала служебным трафиком &#8212; сложная и чрезмерно отказоустойчивая схема не принесет. ИМХО.</p>
<p align="center">***</p>
<p>Рекомендуемое чтиво:<br />
<a href="http://www.cisco.com/en/US/docs/solutions/Enterprise/WAN_and_MAN/DMVPDG.html">http://www.cisco.com/en/US/docs/solutions/Enterprise/WAN_and_MAN/DMVPDG.html</a><br />
<a href="http://www.cisco.com/en/US/docs/ios/12_4t/12_4t11/ht_trsel.html">http://www.cisco.com/en/US/docs/ios/12_4t/12_4t11/ht_trsel.html</a><br />
<a href="http://www.cisco.com/en/US/docs/ios/security/configuration/guide/sec_per_tunnel_qos.pdf">http://www.cisco.com/en/US/docs/ios/security/configuration/guide/sec_per_tunnel_qos.pdf</a></p>
<p>С уважением,<br />
Павел Попп aka P@ve1<br />
 <img src='http://www.anticisco.ru/blogs/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'DMVPN (Dynamic Multipoint VPN). Часть 2. Отказоустойчивая конфигурация. on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1294',contentID: 'post-1294',suggestTags: 'DMVPN,IPSec,routing,security,VPN',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1294</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Мультикаст. Связка PIM и MSDP</title>
		<link>http://www.anticisco.ru/blogs/?p=1277</link>
		<comments>http://www.anticisco.ru/blogs/?p=1277#comments</comments>
		<pubDate>Tue, 20 Mar 2012 08:49:45 +0000</pubDate>
		<dc:creator>Fedia</dc:creator>
				<category><![CDATA[Маршрутизаторы и коммутаторы]]></category>
		<category><![CDATA[MSDP]]></category>
		<category><![CDATA[multicast]]></category>
		<category><![CDATA[PIM]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1277</guid>
		<description><![CDATA[Введение: Данная статья написана не мной, а уважаемым Кириллом АКА DJ Kill. Была поставлена задача отдавать мультикаст поток со своей площадки в удаленный PIM домен. Для этого используется протокол &#171;мультикастового&#187; пиринга MSDP. Оказалось, что в данной задаче есть ряд неочевидных подводных камней, которые изложены ниже. Итог: локальный мультикаст принимается, удаленные запросы join через MSDP поступают [...]]]></description>
			<content:encoded><![CDATA[<p>Введение:<br />
Данная статья написана не мной, а уважаемым Кириллом АКА DJ Kill.<br />
Была поставлена задача отдавать мультикаст поток со своей площадки в удаленный PIM домен. Для этого используется протокол &#171;мультикастового&#187; пиринга MSDP. Оказалось, что в данной задаче есть ряд неочевидных подводных камней, которые изложены ниже.<br />
Итог: локальный мультикаст принимается, удаленные запросы join через MSDP поступают (на удаленной стороне рутер Juniper)<br />
Кому интересны подробности &#8212; велкам под кат<br />
<span id="more-1277"></span><br />
Далее &#8212; настройки с комментариями: </p>
<p>Конфигурация интерфейса, смотрящая в сторону источника:</p>
<p><code>interface GigabitEthernet0/1.112<br />
encapsulation dot1Q 112<br />
ip address 10.251.251.1 255.255.255.240<br />
no ip redirects<br />
no ip proxy-arp<br />
ip pim sparse-mode<br />
no snmp trap link-status<br />
end</code></p>
<p>Обращаю внимание на то, что для работы PIM адрес источника может быть не в одной сети с интерфейсом, смотрящим в его сторону, но для работы MSDP он должен знать reverse path к источнику в обычной табличке маршрутизации.</p>
<p>Интерфейс, смотрящий в &#171;чужую&#187; сеть:</p>
<p><code>interface GigabitEthernet0/1.111<br />
encapsulation dot1Q 111<br />
ip address 198.18.85.42 255.255.255.252<br />
no ip redirects<br />
no ip proxy-arp<br />
ip pim sparse-mode<br />
no snmp trap link-status<br />
end</code></p>
<p><strong>ВАЖНО:</strong> Принудительно делаем маршрутизатор точкой рандеву для PIM Sparse mode (Randevouz Point):</p>
<p><code>ip pim rp-address 10.251.251.1</code></p>
<p>Это обязательное условие для того, чтобы маршрутизатор принимал поток и готов был его передать в MSDP. Dence mode для PIM не нужен.</p>
<p>Поднимаем MSDP:</p>
<p><code>ip msdp peer 198.18.85.41</code></p>
<p>После этого можем видеть что появились следующие маршруты:</p>
<p><code>sh ip mroute<br />
IP Multicast Routing Table<br />
!<br />
(*, 226.100.10.1), 01:34:16/stopped, RP 10.251.251.1, flags: SP<br />
  Incoming interface: Null, RPF nbr 0.0.0.0<br />
  Outgoing interface list: Null<br />
!<br />
(10.251.251.10, 226.100.10.1), 01:33:14/00:03:29, flags: TA<br />
  Incoming interface: GigabitEthernet0/1.112, RPF nbr 0.0.0.0<br />
  Outgoing interface list:<br />
    GigabitEthernet0/1.111, Forward/Sparse, 00:16:59/00:02:30<br />
!<br />
(*, 224.0.1.40), 01:34:16/00:02:32, RP 10.251.251.1, flags: SJCL<br />
  Incoming interface: Null, RPF nbr 0.0.0.0<br />
  Outgoing interface list:<br />
    GigabitEthernet0/1.111, Forward/Sparse, 01:34:16/00:02:32</code></p>
<p>Видно что маршруты построены.<br />
Флаг A говорит о том, что нужный маршрут отдаётся в MSDP.</p>
<p>Далее можно посмотреть дебаг MSDP:</p>
<p><code>debug ip msdp detail</code></p>
<p>Где должно быть видно примерно следующее:<br />
<code><br />
[b]Mar 20 12:25:03 192.168.100.30 6148274: Mar 20 08:25:02.957: MSDP(0): (10.251.251.10/32, 226.100.10.1)[/b]<br />
Mar 20 12:25:03 192.168.100.30 6148275: Mar 20 08:25:02.957: MSDP(0): Sent entire mroute table, mroute_cache_index = 0, Qlen = 0<br />
Mar 20 12:25:03 192.168.100.30 6148276: Mar 20 08:25:02.957: MSDP(0): start_index = 0, sa_cache_index = 0, Qlen = 0<br />
Mar 20 12:25:03 192.168.100.30 6148277: Mar 20 08:25:02.957: MSDP(0): Sent entire sa-cache, sa_cache_index = 0, Qlen = 0<br />
Mar 20 12:25:15 192.168.100.30 6148286: Mar 20 08:25:14.941: MSDP(0): Received 3-byte TCP segment from 198.18.85.41<br />
Mar 20 12:25:15 192.168.100.30 6148287: Mar 20 08:25:14.941: MSDP(0): Append 3 bytes to 0-byte msg 1577 from 198.18.85.41, qs 1</code></p>
<p>То есть маршрут отдаётся.</p>
<p>В принципе, если с той стороны всё поднято, то мы увидим сразу приходящие от них join и трафик, уходящий в сторону удалённого маршрутизатора.</p>
<p>Далее к этому можно прикрутить ряд &#171;бантиков&#187;. Допустим, отфильтровать всё ненужное. Чтобы ничего лишнего не передавалось и не анонсилось. Допустим, если у Вас подняты протоколы маршрутизации, использующие мультикаст MSDP будет этот мультикаст анонсить.<br />
Делается это очень просто:</p>
<p><code>ip msdp sa-filter in 198.18.85.41 list 111<br />
ip msdp sa-filter out 198.18.85.41 list 111<br />
!<br />
access-list 111 permit ip 10.251.251.0 0.0.0.255 any<br />
access-list 111 deny   ip any host 224.0.2.2<br />
access-list 111 deny   ip any host 224.0.1.3<br />
access-list 111 deny   ip any host 224.0.1.24<br />
access-list 111 deny   ip any host 224.0.1.22<br />
access-list 111 deny   ip any host 224.0.1.2<br />
access-list 111 deny   ip any host 224.0.1.35<br />
access-list 111 deny   ip any host 224.0.1.60<br />
access-list 111 deny   ip any host 224.0.1.39<br />
access-list 111 deny   ip any host 224.0.1.40<br />
access-list 111 deny   ip any 239.0.0.0 0.255.255.255<br />
access-list 111 deny   ip 10.0.0.0 0.255.255.255 any<br />
access-list 111 deny   ip 127.0.0.0 0.255.255.255 any<br />
access-list 111 deny   ip 172.16.0.0 0.15.255.255 any<br />
access-list 111 deny   ip 192.168.0.0 0.0.255.255 any<br />
access-list 111 deny   ip any 232.0.0.0 0.255.255.255<br />
access-list 111 permit ip any any</code></p>
<p>Ну и для пущей паранои можно включить чтобы MSDP не просто отбрасывал маршруты от удалённого пира, но и писал их в &#171;лог&#187;.</p>
<p><code>ip msdp cache-rejected-sa 100</code></p>
<p>Вот, вроде, и всё. Всё работает.<br />
Нагрузка на 2851 при этом на 6 мегабитах трафика, летящих сквозь нее порядка 3% CPU.</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Мультикаст. Связка PIM и MSDP on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1277',contentID: 'post-1277',suggestTags: 'MSDP,multicast,PIM',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1277</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Развлекаемся с VSS</title>
		<link>http://www.anticisco.ru/blogs/?p=1270</link>
		<comments>http://www.anticisco.ru/blogs/?p=1270#comments</comments>
		<pubDate>Sat, 17 Mar 2012 19:11:08 +0000</pubDate>
		<dc:creator>Fedia</dc:creator>
				<category><![CDATA[Маршрутизаторы и коммутаторы]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[VSS]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1270</guid>
		<description><![CDATA[Введение: cisco на своих «больших» коммутаторах 65 серии не так давно внедрила довольно удобную штуку VSS (14400). Такой аналог стека на 3750-х. Правда, связь между шасси осуществляется при помощи старенького etherchannel. И есть мнение, что 20Гбит/сек мало для высоконагруженного ядра. Конечно, циска внедрила механизм минимизации нагрузки на этот линк между шасси, стараясь не допустить «лишнего [...]]]></description>
			<content:encoded><![CDATA[<p>Введение: cisco на своих «больших» коммутаторах 65 серии не так давно внедрила довольно удобную штуку  VSS (14400). Такой аналог стека на 3750-х. Правда, связь между шасси осуществляется при помощи старенького etherchannel. И есть мнение, что 20Гбит/сек мало для высоконагруженного ядра. Конечно, циска внедрила механизм минимизации нагрузки на этот линк между шасси, стараясь не допустить «лишнего хопа»  по VSL (Virtual Switch Link).</p>
<p>Данная технология здорово упрощает логическую топологию сети, уменьшает количество точек настройки да и вообще – хорошо продается <img src='http://www.anticisco.ru/blogs/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
В данной заметке я хочу поделиться с вами результатами нескольких экспериментов, проведенных над VSS в рамках отладки одной ошибки. Сразу оговорюсь: ошибка была незначительная, но требовала «разобрать» VSS. Мы с Siv решили заодно потестить, что происходит в случае разных сбоев.  Итак:<br />
<span id="more-1270"></span><br />
При сборке стека VSS необходимо учитывать несколько основных моментов:<br />
<strong>1. Одинаковые версии софта (IOS)</strong><br />
Начиная с IOS12.2(33)<br />
<strong>2. Поддерживаемые модули</strong><br />
Начиная с 67xx (и свежее – 68хх, 69хх). Набивка шасси не обязательно должна быть одинаковая.<br />
<strong>3. Супервайзоры и Feature card</strong><br />
VS-S720-10G-3C (VS-S720-10G-3CXL)<br />
VS-Sup2T (XL)<br />
DFC3C (DFC3CXL) и свежее (DFC4C).</p>
<p><strong>4. минимум по 2 10Г модуля для связи супервизоров</strong> (они есть встроенные в указанные супервайзоры)<br />
Можно и больше интерфейсов 10Г, задействовав дополнительные из линейных карт.<br />
Я намеренно подробно не касаюсь вещей, описанных в гидах, например, здесь:<br />
<a href="http://www.cisco.com/en/US/docs/switches/lan/catalyst6500/ios/12.2SX/configuration/guide/vss.html" title="guide">http://www.cisco.com/en/US/docs/switches/lan/catalyst6500/ios/12.2SX/configuration/guide/vss.html</a></p>
<p>Будем считать, что вы собрали VSS по гидам и все заработало. Но вы точно не знаете (а проверять стремно), что будет, если что-то сломается. Вот и пробежимся по этим «если». Но для затравки напомню, какие основные шаги требуются при настройке.</p>
<p>При первоначальной настройке необходимо задать, какой из 65хх будет основным, а какой &#8212; запасным.<br />
<code>SW(config)# switch virtual domain #<br />
SW(config-vs-domain)# switch {1|2}<br />
</code></p>
<p>После этого необходимо настроить на разных 65хх пару 10Г портов, связанных в etherchannel.<br />
<strong>Важно:</strong> номера этих port-channel на разных коммутаторах должны быть РАЗНЫЕ! Иначе после объединения конфига будет ошибка. Объединение происходит при <strong>ПЕРВОНАЧАЛЬНОМ</strong> переходе к VSS.</p>
<p><code>SW# switch convert mode virtual</code></p>
<p>После этого конфигурация сохраняется в NVRAM и обе железки перезагружаются<br />
Примечание: если надо вернуться обратно, то используем команду</p>
<p><code>SW# switch convert mode stand-alone</code></p>
<p>После этой команды весь конфиг, касающийся VSS удаляется, текущая конфигурация сохраняется в NVRAM и железка перезагружается уже с обычном режиме. </p>
<p>Теперь немного помучаем собранный VSS</p>
<p>Консоль, подключенная в запасной коммутатор, когда VSS уже собран, позволяет зайти в непривилегированный режим, но не позволяет ввести других команд, в частности enable. Это гарантированно не дает изменить настройку через вторичный коммутатор.</p>
<p><code>MSK-HQ-SC01-sdby&gt;<br />
Standby console disabled<br />
</code></p>
<p>При разрыве одной связи между супервайзорами только основной коммутатор ругается, но VSS остается жив без перерыва связи.<br />
При разрыве всех связей из VSL ругаются оба коммутатора, при этом резервный тоже становится активным (даже приглашение меняется). </p>
<p><code>MSK-HQ-SC01-sdby&gt;<br />
Feb 28 17:12:38.717: %VSLP-SW2_SPSTBY-3-VSLP_LMP_FAIL_REASON: Te2/5/4: Link down<br />
Feb 28 17:12:38.717: %VSLP-SW2_SPSTBY-2-VSL_DOWN:   Last VSL interface Te2/5/4 went down<br />
Feb 28 17:12:38.721: %VSLP-SW2_SPSTBY-2-VSL_DOWN:   All VSL links went down while switch is in Standby role<br />
Feb 28 17:12:38.721: %DUAL_ACTIVE-SW2_SPSTBY-1-VSL_DOWN: VSL is down - switchover, or possible dual-active situation has occurred<br />
Feb 28 17:12:38.721: %PFREDUN-SW2_SPSTBY-6-ACTIVE: Initializing as Virtual Switch ACTIVE processor<br />
Feb 28 17:12:39.377: %SYS-SW2_SPSTBY-3-LOGGER_FLUSHED: System was paused for 00:00:00 to ensure console debugging output.<br />
Feb 28 17:12:40.549: %C6KPWR-SP-4-PSOK: power supply 1 turned on.<br />
Feb 28 17:12:40.549: %C6KPWR-SP-4-PSOK: power supply 2 turned on.<br />
Feb 28 17:12:40.917: %OIR-SW2_SP-6-INSCARD: Card inserted in slot 3, interfaces are now online<br />
Feb 28 17:12:40.917: %OIR-SW2_SP-6-INSCARD: Card inserted in slot 4, interfaces are now online<br />
Feb 28 17:12:40.993: %OIR-SW2_SP-6-INSCARD: Card inserted in slot 5, interfaces are now online<br />
MSK-HQ-SC01&gt;en<br />
Password:<br />
MSK-HQ-SC01#sh run<br />
Building configuration...</code></p>
<p><strong>Важно:</strong> в нашем случае изначально был отключен механизм проверки split brain. Если такой механизм подключить, то разрыв etherchannel (VSL) не приводит к ситуации, когда оба коммутатора считают себя основными со всеми вытекающими неприятными последствиями.<br />
При этом резервный коммутатор знает все конфигурации (и running и startup), помнит про все модули и порты на основном. Единственные отличия &#8212; в настройке принадлежности к VSS &#8212; кто первичный, а кто &#8212; вторичный коммутатор. Поэтому в частности размер файлов конфигурации не одинаковый на двух коммутаторах.<br />
(кусочки настройки VSS)</p>
<p><code>platform hardware vsl pfc mode pfc3c<br />
!<br />
interface Port-channel77<br />
 no switchport<br />
 no ip address<br />
 switch virtual link 1<br />
 mls qos trust cos<br />
 no mls qos channel-consistency<br />
!<br />
interface Port-channel78<br />
 no switchport<br />
 no ip address<br />
 switch virtual link 2<br />
 mls qos trust cos<br />
 no mls qos channel-consistency<br />
!<br />
module provision switch 1<br />
 slot 1 slot-type 147 port-type 61 number 48  virtual-slot 17<br />
 slot 3 slot-type 156 port-type 31 number 24  virtual-slot 19<br />
 slot 5 slot-type 254 port-type 31 number 2 port-type 61 number 1 port-type 60 number 2  virtual-slot 21<br />
 slot 7 slot-type 284 port-type 60 number 16  virtual-slot 23<br />
 slot 9 slot-type 227 port-type 60 number 8  virtual-slot 25<br />
 !<br />
module provision switch 2<br />
 slot 3 slot-type 156 port-type 31 number 24  virtual-slot 35<br />
 slot 4 slot-type 147 port-type 61 number 48  virtual-slot 36<br />
 slot 5 slot-type 254 port-type 31 number 2 port-type 61 number 1 port-type 60 number 2  virtual-slot 37<br />
!<br />
switch virtual domain 77<br />
 switch mode virtual<br />
 switch 1 priority 200<br />
 switch 2 priority 150<br />
 mac-address use-virtual<br />
!<br />
MSK-HQ-SC01# sh switch virtual role  det<br />
!<br />
Switch  Switch Status  Preempt    Priority  Role     Session ID<br />
        Number         Oper(Conf) Oper(Conf)         Local  Remote<br />
------------------------------------------------------------------<br />
LOCAL    2     UP      FALSE(N )   100(100)  ACTIVE   0      0<br />
!<br />
MSK-HQ-SC01#show switch virtual red<br />
                  My Switch Id = 2<br />
                Peer Switch Id = 1<br />
        Last switchover reason = active unit removed<br />
    Configured Redundancy Mode = sso<br />
     Operating Redundancy Mode = sso<br />
!<br />
Switch 2 Slot 5 Processor Information :<br />
-----------------------------------------------<br />
        Current Software state = ACTIVE<br />
       Uptime in current state = 5 minutes<br />
                 Image Version = Cisco IOS Software, s72033_rp Software (s72033_rp-ADVENTERPRISEK9_WAN-M), Version 12.2(33)SXI5, RELEASE SOFTWARE (fc2)<br />
Technical Support: http://www.cisco.com/techsupport<br />
Copyright (c) 1986-2010 by Cisco Systems, Inc.<br />
Compiled Sat 23-Oct-10 01:29 by prod_rel_team<br />
                          BOOT = sup-bootdisk:s72033-adventerprisek9_wan-mz.122-33.SXI5.bin,1;<br />
        Configuration register = 0x2102<br />
                  Fabric State = ACTIVE<br />
           Control Plane State = ACTIVE<br />
!<br />
Peer information is not available because<br />
it is in 'DISABLED' state</code></p>
<p>Если при разобранном VSS подключить обратно линки, то по прошествии примерно 20 секунд, оба видят установление связи и запасной (вторичный) пытается уйти в перезагрузку.</p>
<p><code>Feb 28 17:20:32.212: %VSLP-SW2_SP-5-RRP_MSG: Role change from Active to Standby and hence need to reload</code></p>
<p>Если на запасном был какой-то несохраненный конфиг, созданный во время разорванного VSS, то перезагрузка сразу не происходит, о чем пишется в консоль. На выбор предлагается:<br />
- сохраниться и перезагрузить<br />
- либо принудительно набрать команду из специального режима:<br />
<code>(recovery-mode)#</code></p>
<p>возможно выбрать перезагрузку соседа (peer)</p>
<p><code>Feb 28 17:20:32.212: %VSLP-SW2_SP-5-RRP_UNSAVED_CONFIG: Ignoring system reload since there are unsaved configurations.<br />
Please save the relevant configurations<br />
Feb 28 17:20:32.212: %VSLP-SW2_SP-5-RRP_MSG: Use 'redundancy reload shelf' to bring this switch to its preferred STANDBY role<br />
Feb 28 17:20:32.236: %DUAL_ACTIVE-SW2_SP-1-RECOVERY: Dual-active condition detected: Starting recovery-mode, all non-VSL and non-excluded interfaces have been shut down<br />
!<br />
MSK-HQ-SC01(recovery-mode)#redundancy ?<br />
Redundancy exec commands:<br />
  config-sync       Redundancy config sync commands<br />
  force-switchover  Force a switchover<br />
  reload            Redundancy Facility (RF) reload<br />
!<br />
MSK-HQ-SC01(recovery-mode)#redundancy reload ?<br />
  peer   Reload peer unit<br />
  shelf  Reload this entire shelf<br />
!<br />
MSK-HQ-SC01(recovery-mode)#redundancy reload shelf ?<br />
    shelf id</p>
<p>!<br />
MSK-HQ-SC01(recovery-mode)#redundancy reload shelf<br />
Warning:The standby is not up,continuing may lead to reload of the switch<br />
!<br />
System configuration has been modified. Save? [yes/no]: no<br />
Reload this shelf [confirm]<br />
Feb 28 17:22:17.046: %SYS-SW2_SP-3-LOGGER_FLUSHING: System pausing to ensure console debugging output.<br />
!<br />
Feb 28 17:22:17.046: %RF-SW2_SP-5-RF_RELOAD: Shelf reload. Reason: Admin reload CLI<br />
Feb 28 17:22:17.046: %OIR-SW2_SP-6-CONSOLE: Changing console ownership to switch processor</code></p>
<p>Если же настройки не менялись, то перезагрузка происходит автоматом.<br />
После перезагрузки основной коммутатор насаждает свой startup-config запасному, никакого merge (слияния) не происходит. В отличие от начального конфигурирования, когда при переводе в режим VSS оба конфига сливаются в один общий файл.</p>
<p>В-общем, шаг влево, шаг вправо – расстрел. В смысле, ошибиться практически невозможно, циска все за нас порешала и предусмотрела, так что смело можете собирать ваши виртуальные коммутаторы, лишь бы аппаратно и программно все карточки и модули поддерживали этот режим. Сломать что-либо крайне сложно <img src='http://www.anticisco.ru/blogs/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Развлекаемся с VSS on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1270',contentID: 'post-1270',suggestTags: 'troubleshooting,VSS',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1270</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Про эффективность и сон</title>
		<link>http://www.anticisco.ru/blogs/?p=1252</link>
		<comments>http://www.anticisco.ru/blogs/?p=1252#comments</comments>
		<pubDate>Wed, 14 Mar 2012 21:31:31 +0000</pubDate>
		<dc:creator>solo</dc:creator>
				<category><![CDATA[Без рубрики]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1252</guid>
		<description><![CDATA[Кому как, а мне лично не хватает отведенных 24 часов в сутки. Надо и с ребенком поиграть, и жене внимание уделить, и вендоров удовлетворить, и с дистрибьютором договориться, и продать, и настроить, и статьи, БЛИН, пописать наконец.  А тут еще и организЬм подкидывает свинью &#8212; ему видите ли спать надо. Это была бы половина беды, [...]]]></description>
			<content:encoded><![CDATA[<div>Кому как, а мне лично не хватает отведенных 24 часов в сутки. Надо и с ребенком поиграть, и жене внимание уделить, и вендоров удовлетворить, и с дистрибьютором договориться, и продать, и настроить, и статьи, БЛИН, пописать наконец.</div>
<div> А тут еще и организЬм подкидывает свинью &#8212; ему видите ли спать надо.</div>
<div><span id="more-1252"></span></div>
<p><div>Это была бы половина беды, он еще и норовит не выспаться за вполне себе приличное время (для меня это 7 часов)  Встаю весь разбитый, голова соображает плохо. А если голова не соображает работать не получается.</div>
<p><div>По этой же причине мы с парнями практически не пьем.</div>
<div>Жадность, всё она, ага.</div>
<p><div> Хорошо, если есть чем полезным заняться в области физического труда: шкафчик там купить-собрать, лампочку другу поменять, или переезд кому учинить.</div>
<p><div>Ничто так не лечит голову как физический труд. Администрация рекомендует.</div>
<p><div>Так они (шкафы и друзья с переездами) не каждый день.  Да и вообще, не этим мы себе на икорку зарабатываем.</div>
<p><div>Формулирую задачу: просыпаться бодрым и работоспособным. Даже когда поспал мало.</div>
<p><div>&lt;<em>ахтунг&gt;</em></div>
<div>Я понимаю, что сон ничем не заменишь, а организм не обманешь, нет.</div>
<div>Я не рекламирую идею &#171;мало спать&#187;, нет.</div>
<div>Я сторонник хочешь спать &#8212; спи, так полезней и эффективней.</div>
<div>Основная идея: &#171;В нерабочем состоянии ты бесполезен&#187;.</div>
<div>&lt;/ахтунг&gt;</div>
<p><div>Читал давно про сон, что есть он, мол, быстрый, есть медленный и если будильник придется на один, то вскочишь как Агурец, иначе же будешь как четотамбула.</div>
<p><div>Врачи рекомендуют эксперементировать с будильником, переставлять его плюс-минус 20-30 минут и найти своё время комфортного подъема. Совет дельный для тех, кто по режиму живет. Для меня же, который не знает во сколько сегодня ляжет спать он в рейтинге полезностей сразу за пассатижами в бане.</div>
<div>Но в целом модель рабочая, по себе видел в стародавние времена.</div>
<p><div>Так, к чему Я это все, а ну да:</div>
<div>Лазил по рукопожатному магазину apple store и нашел прикольную программульку-будильник EasyWakeup.</div>
<div>Заряжаем её на 8 утра, а она разбудит тебя между половиной восьмого и восемью в самое удачное, с её точки зрения время.</div>
<p><div>Ловкий софт отслеживает грохот вертящегося по перине меня, составляет график фаз сна (тут важна статистическа составляющая) и, руководствуясь революционным чутьём, заигрывает мелодию подъёма в самое подходящее время.</div>
<p><div>Недостатки:</div>
<div>Телефон надо класть рядом с собой в кроватку.</div>
<div>В фоновом режиме оно не работает.</div>
<div>Поправки на детей (которые приползают под утро) и на незапланированный ночной секс не делает.</div>
<p>
Две недели безжалостных экспериментов показали. Для меня работает. Смело рекомендую.</p>
<div>
<p>Ну и еще это&#8230; количество приседаний на балконе таки надо плавно довести до трех, знающие люди говорят что способствует.</p>
<p><div>Пока так.</div>
<div>Писано над Ла-Маншем.</div>
<div><a href="http://www.anticisco.ru/blogs/wp-content/uploads/2012/03/Evernote-20120313-140727.jpg"><img class="aligncenter size-medium wp-image-1253" src="http://www.anticisco.ru/blogs/wp-content/uploads/2012/03/Evernote-20120313-140727-225x300.jpg" alt="" width="225" height="300" /></a></div>
<div>
<div>
<p><div>И, как пишет наш текущий Гарант(R): фото айпад.</div>
<p><div>PS:  С удовольствием почитаю в комментах/ на форуме Ваши способы повышения эффективности.</div>
</div>
</div>
</div>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Про эффективность и сон on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1252',contentID: 'post-1252',suggestTags: '',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1252</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Автоматизация с expect-lite</title>
		<link>http://www.anticisco.ru/blogs/?p=1225</link>
		<comments>http://www.anticisco.ru/blogs/?p=1225#comments</comments>
		<pubDate>Fri, 02 Mar 2012 02:21:03 +0000</pubDate>
		<dc:creator>dmbaturin</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[expect]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1225</guid>
		<description><![CDATA[К сожалению, большая часть сетевого оборудования не имеет никакого API для удаленного управления, а если имеет, то зачастую написание клиента ради отправки нескольких команд совершенно не оправдывает затраченных усилий. К счастью, уже давно существует инструмент для автоматизации таких задач под названием expect. А еще существует более удобная обертка к нему под названием expect-lite, которую мы [...]]]></description>
			<content:encoded><![CDATA[<p>К сожалению, большая часть сетевого оборудования не имеет никакого API для удаленного управления, а если имеет, то зачастую написание клиента ради отправки нескольких команд совершенно не оправдывает затраченных усилий.
<p>К счастью, уже давно существует инструмент для автоматизации таких задач под названием expect. А еще существует более удобная обертка к нему под названием expect-lite, которую мы сегодня и рассмотрим. Для примера мы напишем скрипт, который будет будет заводить порты коммутатора в нужный нам VLAN.</p>
<p><span id="more-1225"></span></p>
<h3>Добываем софт</h3>
<ol>
<li>Ставим expect. Системно-зависимо, для UNIX есть в репозитариях/портах, для винды есть сборка с cygwin на сайте из пункта 2.</li>
<li>Качаем expect-lite с <a href="http://expect-lite.sourceforge.net">сайта авторов</a>, распаковываем, кладем файл expect-lite в нужное нам место.</li>
</ol>
<h3>Основы</h3>
<p>По сути, expect умеет отправлять строки, принимать что-то обратно и выполнять действия на основании принятого. Отправляемые строки начинаются с символом «&gt;&gt;», ожидаемые строки или содержащиеся в них выражения с «&lt;». Если ожидаемая строка не приходит, скрипт завершается. Если использовать «&lt;&lt;» вместо «&lt;», expect будет ожидать точного совпадения полученной строки с указанной. Все, что начинается с «#» считается комментарием и игнорируется.</p>
<p>Скрипту можно передавать параметры в виде аргументов expect-lite вида «var1=value1 var2=value2 &#8230;» и потом ссылаться на них в скрипте через $var1 и так далее.</p>
<h3>Приступаем</h3>
<h4>Логинимся на железку</h4>
<p>Создадим файл типа portsetup.els и напишем в него следующее:<br />
<code>
<pre>
&gt;&gt;telnet $host
&lt;Username
&gt;&gt;$user
&lt;Password
&gt;&gt;$password
&lt;&gt;
&gt;&gt;enable
&lt;Password
&gt;&gt;$enablePassword
&lt;#
</pre>
<p></code></p>
<p>Будем считать, что коммутатор живет по адресу 10.91.19.2, и на нем есть юзер cisco с паролем cisco. Попробуем выполнить:</p>
<p><code>
<pre>./expect-lite host=10.91.19.2 user=cisco password=cisco enablePassword=cisco ./portsetup.els</pre>
<p></code></p>
<p>Смотрим на результат:</p>
<p><code>
<pre>
Const: host = 10.91.19.2
Const: user = cisco
Const: password = cisco
Const: enablePassword = cisco
Warning: Remote Host=none, using Localhost
spawn bash
INFO: CONST FOUND: host = 10.91.19.2

[dmbaturin@arcueid:~/bin/expect-lite]$ telnet 10.91.19.2
Trying 10.91.19.2...
Connected to 10.91.19.2.
Escape character is '^]'.

User Access Verification

Username: INFO: CONST FOUND: user = cisco
cisco
Password: INFO: CONST FOUND: password = cisco

switch&gt;enable
Password: INFO: CONST FOUND: enablePassword = cisco

switch#exit
Connection closed by foreign host.
[dmbaturin@arcueid:~/bin/expect-lite]$ 

##Overall Result: PASS
</pre>
<p></code></p>
<p>Скрипт успешно пообщался с железкой на тему аутентификации. Можно сразу заметить важную особенность: expect игнорирует все полученные строки, кроме явно указанных к ожиданию.</p>
<h4>Приступаем к действиям</h4>
<p>И тут мы сразу сталкиваемся с проблемой выбора. Порт может быть trunk или access, не писать же два разных скрипта для них. Для этой цели в expect-lite есть условия. Выглядят они следующим образом:</p>
<pre>? условие ? действие если условие верно :: действие если условие неверно</pre>
<p>Команды можно группировать с помощью квадратных скобок. С группами команд с обеих частях условия у expect-lite какие-то проблемы, поэтому лучше использовать два условия.</p>
<p><code>
<pre>
# Clear existing config
&gt;&gt;default interface $intf
&lt;(config)

# Enter interface config
&gt;&gt;nterface $intf
&lt;(config-if)

# Access mode
? $mode == access ? [
                        &gt;&gt;switchport mode access
                        &lt;(config-if)
                        &gt;&gt;switchport access vlan $vlan
                        &lt;(config-if)
                    ]   

# Trunk mode
? $mode == trunk ? [
                         &gt;&gt;switchport mode trunk
                         &lt;(config-if)
                         &gt;&gt;switchport trunk allowed vlan $vlan
                         &lt;(config-if)
                    ]
</pre>
<p></code></p>
<p>Добавим к этому корректный выход:</p>
<p><code>
<pre>
&gt;&gt;exit
&lt;(config)
&gt;&gt;exit
&lt;#
&gt;&gt;exit

# Команда *TERM завершает работу скрипта
*TERM
</pre>
<p></code></p>
<h4>Собираем все вместе</h4>
<p><code>
<pre>
*NOWARN
*NODEBUG
*NOINFO
*NOEXP_INFO

# Login to the switch
&gt;&gt;telnet $host
&lt;Username
&gt;&gt;$user
&lt;Password
&gt;&gt;$password
&lt;&gt;

# Enter privileged mode
&gt;&gt;enable
&lt;Password
&gt;&gt;$enablePassword
&lt;#

# Enter configuration mode
&gt;&gt;configure terminal
&lt;(config)

# Clear interface config
&gt;&gt;default interface $intf
&lt;(config)

# Enter interface config
&gt;&gt;interface $intf
&lt;(config-if)

# Configure access mode
? $mode == access ? [
		        &gt;&gt;switchport mode access
                        &lt;(config-if)
			&gt;&gt;switchport access vlan $vlan
			&lt;(config-if)
		    ]

# Configure trunk mode
? $mode == trunk ? [
			 &gt;&gt;switchport mode trunk
			 &lt;(config-if)
			 &gt;&gt;switchport trunk allowed vlan $vlan
			 &lt;(config-if)
         	   ]

# Exit properly
&gt;&gt;exit
&lt;(config)
&gt;&gt;exit
&lt;#
&gt;&gt;exit

# Terminate the script
*TERM
</pre>
<p></code></p>
<p>Четыре команды в начале скрипта уменьшают количество выводимых отладочных сообщений до минимума.</p>
<p>Пробуем запустить:</p>
<p><code></p>
<pre>
./expect-lite host=10.91.19.2 user=cisco password=cisco enablePassword=cisco mode=access vlan=10 intf="fa 0/19" ./portsetup.els
Const: host = 10.91.19.2
Const: user = cisco
Const: password = cisco
Const: enablePassword = cisco
Const: mode = access
Const: vlan = 10
Const: intf = fa 0/19
Warning: Remote Host=none, using Localhost
spawn bash

expect-lite directive: *NOWARN 

expect-lite directive: *NODEBUG 

expect-lite directive: *NOINFO 

expect-lite directive: *NOEXP_INFO 

[dmbaturin@arcueid:~/bin/expect-lite]$ telnet 10.91.19.2
Trying 10.91.19.2...
Connected to 10.91.19.2.
Escape character is '^]'.

User Access Verification

Username: cisco
Password: 

switch&gt;enable
Password:
switch#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
switch(config)#default interface fa 0/19
Interface FastEthernet0/19 set to default configuration
switch(config)#interface fa 0/19
switch(config-if)#switchport mode access
switch(config-if)#switchport access vlan 10
switch(config-if)#exit
switch(config)#exit
switch#
expect-lite directive: *TERM
</pre>
<p></code></p>
<p>Для большинства целей должно хватить. А для дальнейшего ознакомления на сайте автора есть подробная документация.</p>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Автоматизация с expect-lite on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1225',contentID: 'post-1225',suggestTags: 'expect',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1225</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Настройка multi-area OSPF на маршрутизаторах Huawei.</title>
		<link>http://www.anticisco.ru/blogs/?p=1186</link>
		<comments>http://www.anticisco.ru/blogs/?p=1186#comments</comments>
		<pubDate>Tue, 24 Jan 2012 09:24:47 +0000</pubDate>
		<dc:creator>kostyan6812</dc:creator>
				<category><![CDATA[Holywar]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[ospf]]></category>

		<guid isPermaLink="false">http://www.anticisco.ru/blogs/?p=1186</guid>
		<description><![CDATA[C выходом китайского вендара Huawei на рынок энтерпрайз становиться актуальной задача по интеграции их устройств с существующей сетевой инфраструктурой, построенной на решениях Cisco. В статье будет показана настройка протокола OSPF на маршрутизаторах Huawei с ОС VRP3/VRP5 и их добавление к домену маршрутизации OSPF, реализованном на роутерах Cisco. Топология сети примерно следующая: RTA и RTC – роутеры [...]]]></description>
			<content:encoded><![CDATA[<p>C выходом китайского вендара Huawei на рынок энтерпрайз становиться актуальной задача по интеграции их устройств с существующей сетевой инфраструктурой, построенной на решениях Cisco.<br />
В статье будет показана настройка протокола OSPF на маршрутизаторах Huawei с ОС <strong>VRP3/VRP5</strong> и их добавление к домену маршрутизации OSPF, реализованном на роутерах Cisco.<br />
<span id="more-1186"></span></p>
<p>Топология сети примерно следующая:<br />
<a href="http://www.anticisco.ru/blogs/wp-content/uploads/2012/01/tp.jpg"><img class="aligncenter size-medium wp-image-1187" src="http://www.anticisco.ru/blogs/wp-content/uploads/2012/01/tp-300x112.jpg" alt="" width="300" height="112" /></a>RTA и RTC – роутеры Cisco. Минимальный конфиг у них такой:</p>
<table>
<tbody>
<tr>
<td style="text-align: center"><strong>RTA</strong></td>
<td style="text-align: center"><strong>RTB</strong></td>
</tr>
<tr>
<td valign="top">
<pre>interface FastEthernet0/0
ip address 10.1.1.2 255.255.255.252
duplex auto
speed auto

interface FastEthernet0/1
no ip address
duplex auto
speed auto

interface FastEthernet0/1.10
encapsulation dot1Q 10
ip address 192.168.0.1 255.255.255.0

interface FastEthernet0/1.20
 encapsulation dot1Q 20
 ip address 192.168.1.1 255.255.255.0

interface FastEthernet0/1.30
 encapsulation dot1Q 30
 ip address 192.168.2.1 255.255.255.0

interface FastEthernet0/1.40
 encapsulation dot1Q 40
 ip address 192.168.3.1 255.255.255.0

router ospf 1
 log-adjacency-changes
 passive-interface default
 no passive-interface FastEthernet0/0
 network 10.1.1.2 0.0.0.0 area 0
 network 192.168.0.0 0.0.3.255 area 0</pre>
</td>
<td valign="top">
<pre>interface FastEthernet0/0
no ip address
duplex auto
speed auto

interface FastEthernet0/0.100
encapsulation dot1Q 100
ip address 192.168.10.1 255.255.255.0

interface FastEthernet0/0.200
encapsulation dot1Q 200
ip address 192.168.11.1 255.255.255.0

interface FastEthernet0/1
ip address 172.1.1.2 255.255.255.252
duplex auto
speed auto

router ospf 1
 log-adjacency-changes
 passive-interface default
 no passive-interface FastEthernet0/1
 network 172.1.1.2 0.0.0.0 area 1
 network 192.168.10.0 0.0.0.255 area 1
 network 192.168.11.0 0.0.0.255 area 1</pre>
</td>
</tr>
</tbody>
</table>
<p>RTB – роутер Huawei, вот его то и будем настраивать. Для начала на роутере Huawei нужно настроить сетевые интерфейсы и присвоить им IP адреса. Делаем это так:</p>
<pre style="padding-left: 30px">&lt;RTB&gt;system-view
[RTB]interface Ethernet 0/0/0
[RTB-Ethernet0/0/0]ip address 10.1.1.1 30
[RTB-Ethernet0/0/0]q
[RTB]interface Ethernet 0/0/1
[RTB-Ethernet0/0/1]ip address 172.1.1.1 30
[RTB-Ethernet0/0/1]q
[RTB]interface Ethernet 0/1/0
[RTB-Ethernet0/1/0]ip address 192.168.20.1 24
[RTB-Ethernet0/1/0]q
[RTB]interface Ethernet 0/1/1
[RTB-Ethernet0/1/1]ip address 192.168.21.1 24</pre>
<p>Активировать интерфейсы не надо, в отличие от роутеров Cisco они по умолчанию в активном состоянии.<br />
Чтобы каждый роутер имел уникальный идентификатор в LSDB, нужно его задать:</p>
<pre style="padding-left: 30px">[RTB]router id 127.1.1.2</pre>
<p>Вообще-то, эта команда опциональная. Если ее не ввести, то маршрутизатор сам определит идентификатор на основе большего IP адреса своего loopback интерфейса, ну а если и лупбек не настроен, то будет использован больший IP адрес физического интерфейса.<br />
Теперь переходим к поднятию ospf на роутере Huawei:</p>
<pre style="padding-left: 30px">[RTB]ospf</pre>
<p>На самом деле, нужно указать еще и id процесса ospf на роутере, если этого не сделать, то по умолчанию process-id будет 1.<br />
Чтобы настроить area и включить сетевые сегменты в нее, нужно сделать следующее:</p>
<pre style="padding-left: 30px">[RTB-ospf-1]area 0 &lt;&lt;определяем арию и переходим в режим ее настройки
[RTB-ospf-1-area-0.0.0.0]network 10.1.1.1 0.0.0.0 &lt;&lt;помещаем сеть в арию 0
[RTB-ospf-1-area-0.0.0.0]network 192.168.20.0 0.0.0.255
[RTB-ospf-1-area-0.0.0.0]area 1
[RTB-ospf-1-area-0.0.0.1]network 172.1.1.1 0.0.0.0
[RTB-ospf-1-area-0.0.0.1]network 192.168.21.0 0.0.0.255</pre>
<p>Описание сетевого сегмента состоит из двух частей, это идентификатор сети и шаблонная маска (wildcard mask).<br />
Небольшой тюнинг поможет запретить отправку и прием OSPF сообщений через интерфейсы, где нет OSPF маршрутизаторов:</p>
<pre style="padding-left: 30px">[RTB-ospf-1]silent-interface Ethernet0/1/0
[RTB-ospf-1]silent-interface Ethernet0/1/1</pre>
<p>Вот вроде все. Теперь можно проверить отношения смежности между роутером Huawei и устройствами Cisco. Для этого делаем следующее:</p>
<pre style="padding-left: 30px">[RTB] display ospf peer
                OSPF Process 1 with Router ID 127.1.1.2
                               Neighbors
  Area 0.0.0.0 interface 10.1.1.1(Ethernet0/0/0)'s neighbor(s)
  RouterID: 192.168.3.1     Address: 10.1.1.2        &lt;Opaque-capable&gt;
        State: Full  Mode: Nbr is Master  Priority: 1
        DR: 10.1.1.2  BDR: 10.1.1.1
        Dead timer expires in 33s
        Neighbor has been up for 00:06:39
 
Area 0.0.0.1 interface 172.1.1.1(Ethernet0/0/1)'s neighbor(s)
  RouterID: 192.168.11.1    Address: 172.1.1.2       &lt;Opaque-capable&gt;
        State: Full  Mode: Nbr is Master  Priority: 1
        DR: 172.1.1.1  BDR: 172.1.1.2
        Dead timer expires in 37s
        Neighbor has been up for 00:02:06</pre>
<p>Ну что, видим, что отношение смежности установлено. А что же в таблице маршрутизации? Ее вывод можно посмотреть вот так:</p>
<pre style="padding-left: 30px">[RTB]display ip routing-table
Routing Table: public net
Destination/Mask   Protocol Pre  Cost        Nexthop         Interface
---вывод пропущен---
192.168.0.1/32     OSPF     10   2           10.1.1.2        Ethernet0/0/0
192.168.1.1/32     OSPF     10   2           10.1.1.2        Ethernet0/0/0
192.168.2.1/32     OSPF     10   2           10.1.1.2        Ethernet0/0/0
192.168.3.1/32     OSPF     10   2           10.1.1.2        Ethernet0/0/0
192.168.10.1/32    OSPF     10   2           172.1.1.2       Ethernet0/0/1
192.168.11.1/32    OSPF     10   2           172.1.1.2       Ethernet0/0/1</pre>
<p>И в заключение. Проверим коннективити с использованием команды ping от IP адреса 192.168.21.1 на маршрутизаторе Huawei на адрес 192.168.0.1 маршрутизатора Cisco:</p>
<pre style="padding-left: 30px">[RTB]ping -a 192.168.21.1 192.168.0.1
  PING 192.168.0.1: 56  data bytes, press CTRL_C to break
    Reply from 192.168.0.1: bytes=56 Sequence=1 ttl=255 time=2 ms
    Reply from 192.168.0.1: bytes=56 Sequence=2 ttl=255 time=1 ms
    Reply from 192.168.0.1: bytes=56 Sequence=3 ttl=255 time=2 ms
    Reply from 192.168.0.1: bytes=56 Sequence=4 ttl=255 time=2 ms
    Reply from 192.168.0.1: bytes=56 Sequence=5 ttl=255 time=2 ms

  --- 192.168.0.1 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 1/1/2 ms
</pre>
<div class="evernoteSiteMemory"><a href="javascript:" onclick="Evernote.doClip({title: 'Настройка multi-area OSPF на маршрутизаторах Huawei. on antiCisco blogs',url: 'http://www.anticisco.ru/blogs/?p=1186',contentID: 'post-1186',suggestTags: 'Huawei,ospf',providerName: 'antiCisco blogs',styling: 'text' });return false" class="evernoteSiteMemoryLink"><img src="http://static.evernote.com/article-clipper.png" class="evernoteSiteMemoryButton" />
				</a>				<div class="evernoteSiteMemoryClear">&nbsp;</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://www.anticisco.ru/blogs/?feed=rss2&#038;p=1186</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

