<?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>we are sorry, we are open &#187; cisco</title>
	<atom:link href="http://test.kg/tag/cisco/feed/" rel="self" type="application/rss+xml" />
	<link>http://test.kg</link>
	<description></description>
	<lastBuildDate>Tue, 01 Nov 2011 12:49:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Нетегированный VLAN в транковом порту свича Cisco</title>
		<link>http://test.kg/cisco_native_vlan/</link>
		<comments>http://test.kg/cisco_native_vlan/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 12:43:44 +0000</pubDate>
		<dc:creator>Админ</dc:creator>
				<category><![CDATA[СисАдминство]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[vlan]]></category>

		<guid isPermaLink="false">http://test.kg/?p=804</guid>
		<description><![CDATA[В свич Cisco 3750 включен клиент, порт на свиче настроен в аксес-режиме, т.е. передаёт нетегированные пакеты. Возникла необходимость добавить клиенту ещё один VLAN, но при этом первый оставить нетегированным. Решается это при помощи &#171;родных&#187; VLAN-ов (native vlan), который и будет передаваться нетегированным при том, что порт будет в режиме транка. Вот простой пример, в котором [...]]]></description>
			<content:encoded><![CDATA[<p>В свич Cisco 3750 включен клиент, порт на свиче настроен в аксес-режиме, т.е. передаёт нетегированные пакеты. Возникла необходимость добавить клиенту ещё один VLAN, но при этом первый оставить нетегированным. Решается это при помощи &laquo;родных&raquo; VLAN-ов (native vlan), который и будет передаваться нетегированным при том, что порт будет в режиме транка. Вот простой пример, в котором VLAN 500 объявлен родным и передаётся нетегированным, а 100-й передаётся тегированным:<br />
<code>interface FastEthernet0/1<br />
 description Test<br />
 switchport trunk encapsulation dot1q<br />
 switchport trunk native vlan 500<br />
 switchport trunk allowed vlan 100,500<br />
 switchport mode trunk<br />
</code><br />
Обратите внимание, что родной VLAN тоже надо указывать в списке разрешённых в транке.</p>
<p>При переключении порта в транк связь прерывается секунд на 5-10, но при этом клиенту для продолжения работы с нетегированными пакетами перенастраивать ничего не нужно (понятно, что для использования второго VLAN-а перенастройка необходима).</p>
<p>Посмотреть эти настройки можно командами &laquo;show int f0/1 switchport&raquo; и &laquo;show int f0/1 trunk&raquo;. Кстати, в выводе первой команды можно увидеть строчку, в которой говорится, что на родном VLAN-е включено тегирование:<br />
<code>cs#sh int f0/1 switchport<br />
...<br />
Administrative Native VLAN tagging: enabled<br />
...</code></p>
<p>Однако, работает всё нормально и в Интернете люди склонны считать, что это просто глюк и ссылаются на вывод другой команды:<br />
<code>cs#sh vlan dot1q tag native<br />
dot1q native vlan tagging is disabled</code></p>
<p>Если на другой стороне тоже свич Cisco, то там также нужно указать родной влан, транк и т.п. Однако, если на той стороне будет стоять, например, компьютер с FreeBSD, то родной VLAN настраивается и работает как обычный, нетегированный линк, например:<br />
<code>ifconfig xl0 10.0.1.2 netmask 255.255.255.0</code><br />
Ну и интерфейс для тегированного VLAN-а настраивается как обычно в таких случаях, например:<br />
<code>ifconfig vlan100 create vlan 100 vlandev xl0<br />
ifconfig vlan100 192.168.1.2 netmask 255.255.255.0</code></p>
<p>Указание родного VLAN-а для создания подинтерфейса на роутере Cisco я не проверял, но вроде должно быть как-то так:<br />
<code>cs(config)# int f0/1.500<br />
cs(config-subif)# encapsulation dot1q 500 <strong>native</strong><br />
cs(config-subif)# ip address 10.0.1.2 255.255.255.0</code></p>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/cisco_native_vlan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка файрвола Cisco PIX Firewall 520 для трансляции соединений между сетями</title>
		<link>http://test.kg/cisco-pix-address-translation/</link>
		<comments>http://test.kg/cisco-pix-address-translation/#comments</comments>
		<pubDate>Mon, 19 Dec 2005 07:14:19 +0000</pubDate>
		<dc:creator>Админ</dc:creator>
				<category><![CDATA[СисАдминство]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[сети]]></category>

		<guid isPermaLink="false">http://www.net.kg/?p=148</guid>
		<description><![CDATA[Обычно, для тех кто впервые начинает настройку файрвола, принципы работы трансляции соединений становятся одним из наиболее сложных для понимания моментов, поэтому в данной статье основной упор сделан на описании этих принципов на примере одной типовой схемы. Краткие сведения о Cisco PIX Firewall 520 520-я серия файрволов компании Cisco устарела довольно давно &#8211; производитель более не [...]]]></description>
			<content:encoded><![CDATA[<p>Обычно, для тех кто впервые начинает настройку файрвола, принципы работы трансляции соединений становятся одним из наиболее сложных для понимания моментов, поэтому в данной статье основной упор сделан на описании этих принципов на примере одной типовой схемы.<br />
<span id="more-148"></span></p>
<h4>Краткие сведения о Cisco PIX Firewall 520</h4>
<p>520-я серия файрволов компании Cisco устарела довольно давно &#8211; производитель более не поставляет их с июля 2001, не выпускает обновлений программного обеспечения с июня 2004, а поддержка аппаратной части закончится в июне 2006 года. Но несмотря на это файрвол всё ещё остаётся достаточно интересным устройством особенно с учётом нынешней его стоимости.</p>
<p>С виду данный файрвол представляет собой несколько модернизированный ПК &#8211; корпус, материнская плата, блок питания, 3.5&#8243; привод для гибких дисков с виду такие же как у обычного ПК. Жёсткого диска у этого устройства, к счастью, нет, а в качестве долговременной памяти используется флеш-память, которая размещена на отдельной PCI-плате расширения вместе с другими схемами, реализующими специфичные функции, такие как консольный порт и интерфейс перекрытия сбоев (Failover), который позволяет дублировать основной файрвол резервным в случае выхода его из строя.</p>
<p>Для интереса приведу основные технические характеристики устройства, используемого в описанном случае &#8211; 768 MB RAM, CPU Pentium III 848 MHz, Flash 16MB, 4 сетевых адаптера 10/100.</p>
<p>Операционная система, по словам Cisco, специально разработана для данных задач, что позволяет устройству обрабатывать намного больший поток данных нежели обычные операционные системы для ПК.</p>
<p>Интерфейс командной строки весьма схож с интерфейсом маршрутизаторов Cisco, но имеет некоторые недостатки, впрочем не настолько существенные чтобы их отдельно описывать.</p>
<p>Версия операционной системы в конкретном случае &#8211; 6.3(4).</p>
<h4>Схема сети</h4>
<p>Простая типовая схема, которая довольно часто используется в небольших сетях.</p>
<p style="text-align:center"><img src="/wp-content/uploads/2008/11/pix-s.png" alt="" title="pix-s" width="600" height="271" class="aligncenter size-full wp-image-149" /></p>
<p>Файрвол одним интерфейсом подключен к Интернет провайдеру.<br />
Ко второму интерфейсу подключен сервер, за которым находится локальная сеть.<br />
На третий интерфейc отдельно вынесен веб-сервер. Это сделано из соображений безопасности, т.к. веб-сервер потенциально более уязвим нежели другие наши службы и поэтому должен быть отделён от остальной сети, чтобы в случае его взлома уменьшить опасность для других компьютеров нашей сети. Кроме взлома сервера нарушить работу сети может и большое количество запросов к нему, в этом плане отделение веб-сервера позволит локализовать подобную проблему.<br />
Зачастую для обозначения отдельного сегмента сети, предназначенного для размещения общедоступных сервисов, применяется термин DMZ (ДМЗ – демилитаризованная зона). Это название используется и в документации к файрволу. В нашем же случае использовано название «www», которое является более простым и наглядным для описываемой схемы.</p>
<p>На внешнем интерфейсе (outside) файрвола имеется один реальный IP-адрес, например 1.2.3.246:255.255.255.252, полученный от провайдера. Адрес со стороны провайдера на нашем соединении &#8211; 1.2.3.245, для нас он будет маршрутом по-умолчанию.</p>
<p>На внутреннем интерфейсе (inside) с адресом из приватной подсети 192.168.255.1:255.255.255.252. К нему подключен сервер с адресом 192.168.255.2:255.255.255.252. На второй интерфейс сервера подключена локальная сеть с адресами из сети 10.0.1.0:255.255.255.0.<br />
Доменное имя, используемое в нашей сети, определим как «my.domain.tld».</p>
<p>На третий интерфейс (www) с адресом 192.168.255.5:255.255.255.252, подключен веб-сервер, имеющий адрес 192.168.255.6:255.255.255.252.</p>
<h4>Настройка файрвола</h4>
<p>После того как схема сети рассмотрена можно перейти непосредственно к настройке файрвола. Подробно будут описаны только моменты, непосредственно касающиеся нашей схемы.</p>
<h4>Общие настройки</h4>
<p>Первоначальная настройка должна производиться через консольный порт. Затем можно будет управлять файрволом удалённо по протоколу ssh.</p>
<p>Полагаю, что нет необходимости подробно объяснять использование базовых команд, таких как переход в привилегированный режим (enable), просмотр конфигурации (show run), переход в режим конфигурирования (configure terminal), смена имени хоста (hostname) и домена (domain name), установка паролей (passwd и enable password) и т.п. Приведу лишь простой пример:</p>
<pre>pix>
pix> enable
Password: *******
pix# configure terminal
pix(config)# hostname pix-gtw
pix-gtw(config)# domain-name my.domain.tld
pix-gtw(config)# clock timezone KGT +6
pix-gtw(config)# clock set 11:59:00 09 dec 2005
pix-gtw(config)# [Ctrl - Z]
pix-gtw# write mem
pix-gtw# quit</pre>
<p>При смене имени или домена, например командой &laquo;domain-name my.domain.tld&raquo;, появится следующее предупреждение:</p>
<pre>"%Key pair with hostname my.domain.tld will be invalid".</pre>
<p>Дело в том, что имя и домен используется при генерировании RSA-ключей, которые необходимы для цифровых сертификатов и подписей, в том числе для подключение по ssh. В этом случае следует перегенерировать и сохранить новые ключи, возможно потребуется сначала удалить старые ключи:</p>
<pre>pix-gtw(config)# ca zeroize rsa
pix-gtw(config)# ca generate rsa key 512
pix-gtw(config)# ca save all</pre>
<p>Если этого не сделать, то вы не сможете в следующий раз подключиться удалённо, только через консольный порт.</p>
<p>Ключи хранятся в специальной области флеш-памяти, посмотреть их можно командой &laquo;show ca mypubkey rsa&raquo;.</p>
<p>Сохранить текущую конфигурацию в долговременную память можно командой &laquo;write mem&raquo;.<br />
Записать конфигурацию на сервере по tftp-протоколу можно командой:</p>
<pre>write net 192.168.255.2:pix-gtw</pre>
<p>где 192.168.255.2 &#8211; адрес tftp-сервера, а pix-gtw – имя файла.</p>
<h4>Сетевые интерфейсы</h4>
<p>Интерфейсы имеют аппаратные идентификаторы (hardware_id), например ethernet0. Для каждого интерфейса задаётся его скорость и административное состояние:</p>
<pre>interface ethernet0 auto
interface ethernet1 auto
interface ethernet2 auto
interface ethernet3 auto shutdown</pre>
<p>В данном случае все интерфейсы в режиме автоопределения скорости, при этом последний отключен за ненадобностью.</p>
<p>Кроме аппаратного идентификатора интерфейсы имеют и имя, которое мы вольны задать сами. Вот пример задания имён интерфейсов:</p>
<pre>nameif ethernet0 outside security0
nameif ethernet1 inside security100
nameif ethernet2 www security20
nameif ethernet3 not_used security25</pre>
<p>Последний параметр &#8211; уровень безопасности (security level) нуждается в пояснении. Число от 0 до 100 задаёт уровень безопасности данного интерфейса относительно других интерфейсов &#8211; чем выше число, тем безопаснее считается сеть. Это число абстрактно, т.е. само по себе не является показателем безопасности сети. Этот параметр используется системой для определения возможности и способа обмена данными между интерфейсами &#8211; для доступа из более безопасной сети в менее безопасную должны использоваться команды nat и global, а для доступа из менее безопасной сети в более безопасную &#8211; static и access-list.<br />
Интерфейсы же с одинаковыми уровнями безопасности вообще не могут работать друг с другом.</p>
<p>Указываем IP-адреса на интерфейсах:</p>
<pre>ip address outside 1.2.3.246 255.255.255.252
ip address inside 192.168.255.1 255.255.255.252
ip address www 192.168.255.5 255.255.255.252</pre>
<p>К сожалению на один интерфейс можно назначить только один адрес.</p>
<p>К интерфейсу можно привязать списки доступа (access-list) для входящего и исходящего направлений, например список доступа 101 для входящего потока на интерфейсе outside:</p>
<pre>access-group 101 in interface outside</pre>
<p>Сам список создаётся примерно как и на маршрутизаторах Cisco, например:</p>
<pre>access-list 101 permit tcp host 4.5.6.100 any eq 22
access-list 101 deny tcp any any eq 22
access-list 101 permit ip any any</pre>
<p>Данный пример намеренно упрощён для того, чтобы подчеркнуть его неполноту.</p>
<p>Следует помнить о том, что в списках доступа подразумевается ещё и последнее, неявное правило, которое запрещает весь остальной трафик, для которого не описано подходящего правила.</p>
<h4>Статическая маршрутизация</h4>
<p>Командой route можно добавить статический маршрут. Формат команды прост:</p>
<pre>route имя_интерфейса сеть маска шлюз [метрика]</pre>
<p>Нам нужно добавить по-меньшей мере маршрут по-умолчанию, в нашем случае указывающий на адрес 1.2.3.245, и доступный через интерфейс outside:</p>
<pre>route outside 0.0.0.0 0.0.0.0 1.2.3.245</pre>
<h4>Протокол ICMP</h4>
<p>Протокол ICMP необходим для нормальной работы сети на базе стека протоколов TCP/IP, но некоторые типы сообщений данного протокола могут быть использованы злоумышленниками для сбора сведений о сети или для нарушения её нормальной работы. Поэтому для внешнего интерфейса файрвола следует разрешить только самые необходимые типы сообщений ICMP, в данном случае, это сообщения о недоступности хоста или сети (unreachable) и сообщения об окончании времени жизни пакета (time-exceeded).<br />
В следующем примере разрешаем весь ICMP на интерфейсе outside для одной сети и одного хоста,  затем два типа сообщений на внешнем интерфейсе и весь ICMP на интерфейсах inside и www:</p>
<pre>icmp permit 3.4.5.0 255.255.255.0 outside
icmp permit host 4.5.6.100 outside
icmp permit any unreachable outside
icmp permit any time-exceeded outside
icmp permit any inside
icmp permit any www</pre>
<h4>Доступ к файрволу по ssh</h4>
<p>Если файрвол уже соответствующим образом настроен, то к нему можно подключиться по ssh с именем пользователя pix, например:</p>
<pre>ssh pix@192.168.255.1</pre>
<p>Доступ к файрволу нужно ограничить минимально необходимым количеством хостов. Сделать это можно командой ssh:</p>
<pre>ssh 4.5.6.100 255.255.255.255 outside
ssh 192.168.255.2 255.255.255.255 inside</pre>
<p>Маска и интерфейс являются необязательными параметрами.</p>
<p>Кроме этого доступ к ssh-порту должен быть открыт и в соответствующих списках доступа.</p>
<h4>Сохранение логов на сервере</h4>
<p>Для удобства использования и хранения системных сообщений файрвола лучше передать их на syslog-сервер. К примеру передаём логи на хост 192.168.255.2 с идентификатором LOCAL7 (по нумерации файрвола &#8211; 23), с уровнем warnings и выше (critical, alerts, emergencies), а также с идентификатором устройства &laquo;pix-gtw&raquo;:</p>
<pre>logging on
logging trap warnings
logging facility 23
logging device-id string pix-gtw
logging host inside 192.168.255.2</pre>
<p>На указанном хосте должен быть доступен по сети syslog-демон, а в конфигурации демона должна быть запись для логов с нашим идентификатором, указывающая на существующий файл:</p>
<pre>local7.*	/var/log/pix.log</pre>
<p>Эти логи будут очень полезны при настройке и отладке конфигурации файрвола.<br />
Не забудьте настроить архивацию этих логов, чтобы они не занимали слишком много места.</p>
<h4>NAT и PAT</h4>
<p>Трансляции предназначены для того, что дать возможность локальным хостам обращаться к хостами во внешнем мире. Кроме этого трансляции скрывают адреса локальных хостов, что положительно сказывается на безопасности.</p>
<p>В Cisco PIX используются два вида трансляций Network Address Translation (NAT) и Port Address Translation (PAT), которые, в свою очередь, могут быть статическими или динамическими.</p>
<p>NAT позволяет транслировать каждый локальный адрес в соответствующий ему глобальный один к одному. При статическом NAT-е это соответствие задаётся жёстко. При динамическом NAT-е используются свободные адреса из заданного диапазона  глобальных адресов (пула). Количество локальных адресов, которые должны транслироваться, должно равняться количеству глобальных адресов.<br />
Данные о соответствии локальных и глобальных адресов хранятся в таблице трансляций. Идентификация трафика производится по соответствию локального и глобального адресов.</p>
<p>PAT позволяет транслировать локальные адреса в один глобальный, случайным образом назначая  для каждого соединения новый порт на глобальном интерфейсе. Идентификация трафика производится по соответствию адресов и портов. Статический PAT позволяет задать постоянное  соответствие локальных и глобальных адресов и портов.</p>
<p>Механизм работы трансляций достаточно прост – в пакете, полученном от локального хоста, адрес отправителя меняется на глобальный, а в случае использования динамического PAT, также меняется (на случайный) номер порта отправителя. В таком виде пакет и отправляется получателю во внешней сети, который отсылает ответный пакет на указанные адрес и номер порта отправителя. Получив пакет из внешней сети файрвол ищет в таблице трансляций соответствующую запись и, если таковая имеется, модифицирует полученный пакет заменяя глобальный адрес получателя локальным и, в случае динамического PAT, также и номер порта получателя, после этого пакет отсылается локальному хосту.</p>
<p>Практически все прикладные программы могут работать через NAT без каких-либо затруднений, т.к. производится только замена локального адреса, в случае же применения PAT не будут работать некоторые приложения, которые например используют разные порты для входящего и исходящего трафика.</p>
<p>Один из особых вариантов NAT &#8211; исключение из NAT (NAT Exemption). Исключение из NAT настраивается командой &laquo;nat 0 access-list&raquo; и отключает трансляцию для адресов, указанных в списке доступа, т.е. обмен идёт без какой-либо трансляции вообще.</p>
<h4>Зависимость трансляций от уровней безопасности интерфейсов</h4>
<p>Как уже говорилось выше, способ настройки трансляции зависит от уровня безопасности интерфейсов &#8211; для настройки доступа из более безопасной сети в менее безопасную нужно использовать команду nat, а для доступа из менее безопасной сети в более безопасную &#8211; static.</p>
<p>Для просмотра уровней безопасности можно воспользоваться командой &laquo;show nameif&raquo;, которая также покажет и имена интерфейсов:</p>
<pre>nameif ethernet0 outside security0
nameif ethernet1 inside security100
nameif ethernet2 www security20
nameif ethernet3 not_used security25</pre>
<p>Применительно к нашей конфигурации сети можно составить простую табличку:</p>
<table bgcolor="#464646" border="0" cellspacing="2" cellpadding="2">
<tr bgcolor="#c0c0c0">
<td>Откуда</td>
<td>Куда</td>
<td>Команда</td>
</tr>
<tr bgcolor="#ffffff">
<td>inside</td>
<td>outside</td>
<td>nat</td>
</tr>
<tr bgcolor="#ffffff">
<td>inside</td>
<td>www</td>
<td>nat</td>
</tr>
<tr bgcolor="#ffffff">
<td>www</td>
<td>outside</td>
<td>nat</td>
</tr>
<tr bgcolor="#ffffff">
<td>www</td>
<td>inside</td>
<td>static</td>
</tr>
<tr bgcolor="#ffffff">
<td>outside</td>
<td>inside</td>
<td>static</td>
</tr>
<tr bgcolor="#ffffff">
<td>outside</td>
<td>www</td>
<td>static</td>
</tr>
</table>
<h4>Таблица трансляций (xlate)</h4>
<p>Для трансляции соединений файрвол создаёт таблицу соответствий, которая в терминологии Cisco PIX 520 называется xlate или translation slots. Мы можем посмотреть уже существующие записи в таблице командой &laquo;show xlate&raquo;, а очистить всю таблицу &#8211; командой &laquo;clear xlate&raquo;. Кстати, последнюю операцию рекомендуется делать после изменений правил трансляции, но учтите, что это приведёт к разрыву уже установленных соединений если они созданы с использованием какой-либо трансляции.<br />
Для удаления только определённых записей можно указать глобальный или локальный адрес и, если это PAT, то и соответствующий порт:</p>
<pre>clear xlate global 1.2.3.246
clear xlate local 192.168.255.6 lport 80</pre>
<p>При отсутствии обмена записи в таблице трансляций удаляются по истечении таймаута, который задаётся командой &laquo;timeout xlate&raquo; и по-умолчанию равен трём часам. Записи для протокола UDP удаляются через 30 секунд после закрытия соединения, независимо от заданного значения таймаута.</p>
<h4>Обращения с сервера во внешний мир</h4>
<p>Для настройки обращений сервера во внешний мир используются команды global и nat.</p>
<p>Команда global создаёт пул глобальных адресов, т.е. реальных адресов на внешнем интерфейсе, которые использоваться определённой трансляцией. В нашем случае пул состоит только лишь из одного адреса, который непосредственно указан на внешнем интерфейсе файрвола, поэтому мы можем использовать ключевое слово interface вместо собственно IP-адреса.<br />
Следующей командой мы создаём глобальный пул с номером 1 на внешнем интерфейсе, использующий адрес этого интерфейса, т.е. все обращения из этого пула будут уходить во внешний мир с нашего глобального адреса 1.2.3.246:</p>
<pre>global (outside) 1 interface</pre>
<p>Команда nat позволяет нам указать локальные адреса, которые должны транслироваться, и задаёт соответствие с пулом глобальных адресов, описанным командой global. Следующей командой мы задаём, что обращения с хоста 192.168.255.2, подключенного на интерфейсе inside, будут транслироваться через глобальный пул номер 1:</p>
<pre>nat (inside) 1 192.168.255.2 255.255.255.255</pre>
<p>Соответствие глобальных и локальных пулов определяется по номеру (NAT ID), который указывается в этих командах.</p>
<p>Всё, можно проверять доступность внешнего мира с сервера.<br />
При изменение правил трансляции не забывайте выполнять команду &laquo;clear xlate&raquo;.</p>
<h4>Обращения из внешнего мира к серверу</h4>
<p>На нашем сервере есть несколько служб, которые должны быть доступны из-вне, в нашем случае это DNS, SSH, SMTP, FTP.</p>
<p>Для настройки трансляции с интерфейса outside на интерфейс inside используется команда static.<br />
Команда static позволяет задать статическую трансляцию, указав точное соответствие локального адреса и глобального адреса и порта. В качестве порта можно указать его номер или имя. Соответствие номеров и имён портов описано в документации. В конфигурации файрвола все номера портов заменяются их именами, если таковые известны.<br />
Кроме самой команды static необходимые разрешительные правила должны быть указаны в соответствующих списках доступа (access-list).</p>
<p>Синтаксис команды static, используемый в данном случае, достаточно прост:</p>
<pre>static (локальный_интерфейс, глобальный_интерфейс) протокол глобальный_адрес локальный_адрес</pre>
<p>Так же как в описанном ранее случае использования команды global мы можем в качестве глобального адреса указать ключевое слово interface.</p>
<p>Следующей командой мы задаём статическую трансляцию с глобального интерфейса outside на локальный интерфейс inside для протокола tcp с 25-го порта глобального интерфейса на 25-й порт хоста 192.168.255.2:</p>
<pre>static (inside,outside) tcp interface 25 192.168.255.2 25</pre>
<p>Применительно к SMTP протоколу нужно упомянуть, что файрвол, из соображений безопасности, изменяет строку приветствия нашего SMTP-сервера, заменяя почти всё звёздочками. Например<br />
из строки:</p>
<pre>220 mail.domain.tld ESMTP Sendmail 8.13.0/8.13.0; Mon, 5 Dec 2005 18:01:32 +0600 (KGT)</pre>
<p>получается что-то вроде этого:</p>
<pre>220 ********************************0******0********** ***200**** *0***0 *0*00 *****</pre>
<p>По аналогии с предыдущей командой выполняем следующие:</p>
<pre>static (inside,outside) tcp interface 20 192.168.255.2 20
static (inside,outside) tcp interface 21 192.168.255.2 21
static (inside,outside) udp interface 53 192.168.255.2 53</pre>
<p>Для настройки подключения к серверу по протоколу ssh придётся использовать отличный от стандартного порт, т.к. 22-й занят самим файрволом. Следующей командой мы задаём соответствие свободного порта на внешнем интерфейсе файрвола (например 222) и стандартного ssh-порта сервера:</p>
<pre>static (inside,outside) tcp interface 222 192.168.255.2 22</pre>
<p>Теперь при подключении к серверу из-вне нужно будет указать номер порта. Например для клиента из пакета openssh команда будет выглядеть вот так:</p>
<pre>ssh -p 222 malik@1.2.3.246</pre>
<p>В то время как подключение к самому файрволу будет производиться как обычно:</p>
<pre>ssh pix@1.2.3.246</pre>
<p>Ну и конечно в списке доступа на внешнем интерфейсе, должны быть соответствующие разрешительные правила для обращений на порты, для которых мы настроили статическую трансляцию:</p>
<pre>access-list 101 permit tcp any host 1.2.3.246 eq 20
access-list 101 permit tcp any host 1.2.3.246 eq 21
access-list 101 permit tcp any host 1.2.3.246 eq 25
access-list 101 permit udp any host 1.2.3.246 eq 53
access-list 101 permit tcp host 4.5.6.100 host 1.2.3.246 eq 222</pre>
<h4>Доступ к веб-сайту из внешнего мира</h4>
<p>Вот этой командой мы задаём статическую трансляцию с интерфейса outside на интерфейс www для протокола tcp с 80-го порта внешнего интерфейса на 80-й порт хоста 192.168.255.6:</p>
<pre>static (www,outside) tcp interface 80 192.168.255.6 80</pre>
<p>В список доступа на внешнем интерфейсе добавляем разрешительное правило для 80-го порта:</p>
<pre>access-list 101 permit tcp any host 1.2.3.246 eq 80</pre>
<p>Инициировать исходящие соединения с веб-сервера мы не позволяем в целях повышения безопасности веб-сервера. Поэтому более никаких трансляций на внешнем интерфейсе для<br />
этого сервера мы не задаём.</p>
<h4>Доступ из локальной сети к веб-серверу</h4>
<p>Если из локальной сети доступ к веб-сайту будет осуществляться также как и из внешнего мира, т.е. только по протоколу http и на тот же глобальный адрес (1.2.3.246), то и достаточно будет статической транляции http-порта, но теперь нам нужно будет указать не ключевое слово interface, а именно IP-адрес, под котором мы бы хотели видеть веб-сервер:</p>
<pre>static (www,inside) tcp 1.2.3.246 80 192.168.255.6 80</pre>
<p>Если же мы хотим чтобы веб-сервер был напрямую доступен с хостов локальной сети и от нашего сервера и обращения к нему вообще не транслировались, то надо использовать конструкцию &laquo;nat 0 access-list&raquo; и соответствующий список доступа:</p>
<pre>nat (inside) 0 access-list 110
access-list 110 permit ip 10.0.1.0 255.255.255.0 host 192.168.255.6
access-list 110 permit ip host 192.168.255.2 host 192.168.255.6</pre>
<p>Конечно же файрвол должен иметь маршрут для адресов локальной сети:</p>
<pre>route inside 10.0.1.0 255.255.255.0 192.168.255.2</pre>
<p>Этот маршрут на файрволе необходим и для взаимодействия веб-сервера с локальной сетью, т.к. файрвол является для веб-сервера маршрутизатором по-умолчанию.</p>
<h4>Дополнительные примеры трансляций</h4>
<p>Возможно кого-то заинтересуют несколько примеров трансляций, не имеющих прямого отношения к нашей схеме. Соответственно и адреса в примерах не имеют отношения к описанной схеме.</p>
<h4>Первый пример</h4>
<p>У нас есть несколько глобальных адресов и мы хотим чтобы обращения из внешнего мира на какой-либо их порт транслировались на определённые локальные адреса:</p>
<pre>static (inside,outside) tcp 1.2.4.1 80 192.168.0.1 80
static (inside,outside) tcp 1.2.4.2 80 192.168.0.2 80</pre>
<h4>Второй пример</h4>
<p>У нас есть несколько глобальных адресов и мы хотим чтобы все обращения от некоторых локальных хостов уходили во внешний мир со строго определённых глобальных адресов – настраиваем два разных глобальных пула и соответствующие им NAT-ы:</p>
<pre>global (outside) 1 1.2.4.1
global (outside) 2 1.2.4.2
nat (inside) 1 192.168.0.1 255.255.255.255
nat (inside) 2 192.168.0.2 255.255.255.255</pre>
<p>Т.е. обращения с хоста 192.168.0.1 уйдут во внешний мир с адреса 1.2.4.1, а обращения с хоста 192.168.0.2 уйдут с адреса 1.2.4.2.</p>
<p>А если при этом мы хотим, чтобы ещё и обращения из-вне на определённые глобальные адреса транслировались на соответствующие локальные, то нам надо сделать и обратную трансляцию:</p>
<pre>static (inside,outside) 1.2.4.1 192.168.0.1
static (inside,outside) 1.2.4.2 192.168.0.2</pre>
<p>В итоге у нас получается двунаправленная трансляция с соответствием глобальных и локальных адресов.</p>
<h4>Документация</h4>
<p>Вся документация, использованная для настройки файрвола и написания данной статьи, была взята с сайта компании Cisco (http://www.cisco.com/):<br />
1. &laquo;Cisco PIX Firewall and VPN Configuration Guide&raquo;;<br />
2. &laquo;Cisco PIX Firewall Command Reference&raquo;;<br />
3. &laquo;Using NAT and PAT Statements on the Cisco Secure PIX Firewall&raquo;.</p>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/cisco-pix-address-translation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подключение циски по PPPoE, плюс NAT на одном интерфейсе</title>
		<link>http://test.kg/cisco-pppoe-client/</link>
		<comments>http://test.kg/cisco-pppoe-client/#comments</comments>
		<pubDate>Sat, 11 Oct 2003 11:31:23 +0000</pubDate>
		<dc:creator>Zed</dc:creator>
				<category><![CDATA[СисАдминство]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[сети]]></category>

		<guid isPermaLink="false">http://zed.web.kg/cisco-pppoe-client/</guid>
		<description><![CDATA[Для теста использовалось следующее оборудование: циска 2610 c IOS версии 12.2(8)T: IOS (tm) C2600 Software (C2600-IS-M), Version 12.2(8)T, RELEASE SOFTWARE (fc2) System image file is "flash:c2600-is-mz.122-8.T.bin" ADSL-модем Corecess Romance в режиме бриджа; свитч 3com; ну и компьютер конечно. PPPoE сервер также был на циске, но думаю это значения иметь не должно. Для подключение по PPPoE [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Для теста использовалось следующее оборудование:</p>
<ul>
<li>циска 2610 c IOS версии 12.2(8)T:
<pre>IOS (tm) C2600 Software (C2600-IS-M), Version 12.2(8)T,  RELEASE SOFTWARE
(fc2)
System image file is "flash:c2600-is-mz.122-8.T.bin"</pre>
<li>ADSL-модем Corecess Romance в режиме бриджа;
<li>свитч 3com;
<li>ну и компьютер конечно.
</ul>
<p><span id="more-50"></span></p>
<p align="justify">PPPoE сервер также был на циске, но думаю это значения иметь не должно.</p>
<p align="justify">Для подключение по PPPoE мы должны иметь имя и пароль, выданные нашим провайдером, например имя &#8211; oe1919, пароль &#8211; Pa$$worD99.</p>
<p align="justify">К сожалению указанная модель циски имеет только один Ethernet-интерфейс, поэтому пришлось вешать на нём и PPPoE-клиента, и NAT. Думаю что в случае с циской с двумя Ethernet-интерфейсами настройка сложнее не будет.</p>
<h4>Схема подключения</h4>
<p align="justify">Схема сети проста &#8211; циска, компьютер и модем включены в один свитч. Модем, настроен в режим бриджа, т.е. тупо отправляет пакетики с одного интерфейса на другой и наоборот.<br />
<br />Конечно было бы правильнее включить модем в отдельный интерфейс циски, а всю локальную сеть на другой, но второго Ethernet-интерфейса у нас нет.</p>
<p align="justify">[-- добавлено 20040613 &gt;&gt;&gt;<br />
<br />А вот если свитч поддерживает ВЛАНы, то можно попробовать отделить ethernet интерфейсы циски и модема в один ВЛАН, а остальную сеть во вторую, при этом циска должна обязательно входить в оба ВЛАНа. У меня не было под рукой умного свитча так что эту схему я не проверял, но думаю всё должно получиться.<br />
<br />&lt;&lt;&#038;lt добавлено 20040613 --]</p>
<h4>Настройка циски</h4>
<p align="justify">Ниже приводится конфиг циски в части, касающейся PPPoE:</p>
<pre>
!
vpdn enable
!
vpdn-group 1
 request-dialin
  protocol pppoe
!
!
interface Ethernet0/0
 ip address 10.0.0.1 255.255.255.0
 ip nat inside
 no ip mroute-cache
 no keepalive
 pppoe enable
! использовать интерфейс dialer1 в качестве шаблона:
 pppoe-client dial-pool-number 1
 no cdp enable
!
interface Dialer1
 ip address negotiated
 ip mtu 1492
 ip nat outside
 encapsulation ppp
 no ip mroute-cache
 dialer pool 1
 dialer-group 1
 no cdp enable
 ppp authentication pap callin
 ppp pap sent-username oe1919 password Pa$$worD99
!
ip nat inside source list 10 interface Dialer1 overload
!
ip route 0.0.0.0 0.0.0.0 Dialer1
!
access-list 10 permit 10.0.0.0 0.0.0.255
!
dialer-list 1 protocol ip permit
!
!
</pre>
<p align="justify">Думаю комментарии здесь не нужны.</p>
<p align="justify">На сайте циски можно посмотреть пример для циски с двумя интерфейсами:<br /><a href="http://www.cisco.com/en/US/tech/tk175/tk15/technologies_configuration_example09186a0080126dc0.shtml"> http://www.cisco.com/en/US/tech/tk175/tk15/technologies_configuration_example09186a0080126dc0.shtml</a></p>
<p align="justify">Есть один момент, на сайте циски в конфиге интерфейса Dialer1 указана вот такая строка &laquo;ppp authentication pap&raquo;.<br />
<br />У меня же заработало только с вот такой строкой &#8211; &laquo;ppp authentication pap callin&raquo;.<br />
<br />Параметр callin означает &laquo;Authenticate remote on incoming call only&raquo;, т.е. что-то вроде &laquo;запрашивать аутентификацию удалённо только на входящие вызовы&raquo;, если я правильно перевёл указанную фразу.</p>
<p align="justify">Если есть необходимость и желание, то можно поиграть параметрами dialer в интерфейсе Dialer1, например &laquo;dialer idle-timeout&raquo; позволяет указать время простоя перед отключением от PPPoE сервера, думаю что для этого на обеих сторонах соединения не должен быть включен keepalive, либо параметр &laquo;dialer persistent&raquo; &#8211; соединяться даже если нет необходимости, т.е. постоянно быть на связи.</p>
<h4>Проверка состояния, сброс сессии</h4>
<p align="justify">Посмотреть состояние соединения можно командой &laquo;show vpdn&raquo;:</p>
<pre>
test_cs#sh vpdn

PPPoE Tunnel and Session Information Total tunnels 1 sessions 1

PPPoE Tunnel Information

VPDN group: 1
Session count: 1

PPPoE Session Information
SID       RemMAC          LocMAC       Intf     VASt  OIntf         VLAN/
                                                                    VP/VC
53306  0001.4232.eed3  0005.5e82.0880  Vi1      UP    Et0/0
</pre>
<p align="justify">Смотрим какие подключения у нас есть:</p>
<pre>
test_cs#who
    Line       User       Host(s)              Idle       Location
*  0 con 0                idle                 00:00:00

  Interface      User        Mode                     Idle     Peer Address
  Vi1                     Virtual PPP (PPPoE ) 00:00:00
</pre>
<p align="justify">А командой &laquo;sh int d1&#8243; можно посмотреть адрес выданный нам сервером.</p>
<p align="justify">Сбросить сессию можно командой &laquo;clear vpdn tunnel pppoe&raquo;.</p>
<p align="justify">Конечно это не все команды, которые могут пригодиться при работе с PPPoE.</p>
<h4>Компьютер</h4>
<p align="justify">На интерфейс компьютера назначаем адрес из сегмента 10.0.0.0/24, и указываем в качестве шлюза по-умолчанию адрес циски на Ethernet-е (10.0.0.1). Проверяем &#8211; всё работает &#8211; даже &laquo;пинги пингуются и тресроуты трейсятся&raquo; <img src='http://test.kg/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h4>Простое подключение циски с одним Ethernet-ом, без NAT-а</h1>
<p align="justify">Если нам не нужен NAT, а мы хотим просто подключить по PPPoE только саму циску, то конфиг немного упрощается:</p>
<pre>
!
vpdn enable
!
vpdn-group 1
 request-dialin
  protocol pppoe
!
!
interface Ethernet0/0
 no ip address
 no ip mroute-cache
 no keepalive
 half-duplex
 pppoe enable
 pppoe-client dial-pool-number 1
 no cdp enable
!
interface Dialer1
 ip address negotiated
 ip mtu 1492
 encapsulation ppp
 no ip mroute-cache
 dialer pool 1
 dialer-group 1
 no cdp enable
 ppp authentication pap callin
 ppp pap sent-username oe1919 password Pa$$worD99
!
!
ip route 0.0.0.0 0.0.0.0 Dialer1
!
dialer-list 1 protocol ip permit
!
</pre>
<p>Малик.<br />
20031011.</p>
<p><b>Дополнение от 20060713.</b></p>
<p align="justify">При настройке циски с двумя ethernet-интерфейсами столкнулся с проблемой &#8211; у клиентов из ЛАН открывались только некоторые сайты, а в случае с ФТП &#8211; только список файлов. Например при подключении telnet-ом на 80-й порт сайта mail.ru с компьютера из локальной сети страничка не отдавалась (таймаут), то же самое с самой циски работало нормально. Подозрение на непроходимость больших пакетов не подтвердилось &#8211; пинги с размером пакетов в 1400 байт проходили нормально.<br />
<br />На сайте компании Циско было найдено описание проблемы:<br />
<a href="http://www.cisco.com/en/US/tech/tk175/tk15/technologies_tech_note09186a0080093bc7.shtml">Troubleshooting MTU Size in PPPoE Dialin Connectivity</a>.</p>
<p align="justify">Вкратце проблема из-за несоответствия MTU на компьютерах клиентов и серверов (1500) и на PPPoE-соединении роутера (1492), это приводит к тому, что пакеты от сервера размером больше 1492 байт дропаются, а при отфильтровывании ICMP-сообщений сервер не узнает об убиении его пакетов.</p>
<p align="justify">Проблема решилась добавлением одной строки в конфигурацию внутреннего интерфейса нашей циски:</p>
<pre>!
interface FastEthernet0/0
 description LAN
 ip nat inside
 <b>ip tcp adjust-mss 1452</b>
! именно 1452, а не 1492
!
</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/cisco-pppoe-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

