<?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; сети</title>
	<atom:link href="http://test.kg/tag/networking/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.3.1</generator>
		<item>
		<title>Простой пример с flowtools</title>
		<link>http://test.kg/simple-flowtools/</link>
		<comments>http://test.kg/simple-flowtools/#comments</comments>
		<pubDate>Wed, 13 May 2009 07:22:32 +0000</pubDate>
		<dc:creator>Админ</dc:creator>
				<category><![CDATA[СисАдминство]]></category>
		<category><![CDATA[сети]]></category>

		<guid isPermaLink="false">http://www.net.kg/?p=336</guid>
		<description><![CDATA[Понадобилось собирать и обрабатывать netflow-статистику с циски на машине с FreeBSD. Задачи довольно простые &#8212; иметь возможность анализа сетевого трафика внутри корпоративной сети, например, с целью выявления адресов, генерирующих аномальный трафик, а также выявление других проблем, влияющих на пропускную способность каналов. Каналы связи в моём случае &#8212; это VLAN L2 с подключениями по ADSL, на [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилось собирать и обрабатывать netflow-статистику с циски на машине с FreeBSD. Задачи довольно простые &#8212; иметь возможность анализа сетевого трафика внутри корпоративной сети, например, с целью выявления адресов, генерирующих аномальный трафик, а также выявление других проблем, влияющих на пропускную способность каналов.<br />
<span id="more-336"></span><br />
Каналы связи в моём случае &#8212; это VLAN L2 с подключениями по ADSL, на скоростях 64 и 256 Кбит/с, с вероятностью расширения до 512 Кбит/с, т.е. трафика будет немного.</p>
<p>В качестве сборщика выбран пакет <a href="http://www.splintered.net/sw/flow-tools">flow-tools</a>, последней на данный момент версии &#8212; 0.68, который был установлен из портов: &#171;/usr/ports/net-mgmt/flow-tools&#187;.<br />
В качестве хранилища взят <a href="http://www.mysql.org/">MySQL</a> версии 5.1.34.</p>
<p>Установка указанных пакетов не вызвала никаких проблем и описывать её я не буду )</p>
<p>На первом этапе надо наладить сбор данных и их экспорт в таблицу MySQL.</p>
<p>Мои знания о netflow вообще и о flow-tools в частности весьма поверхностны, так что просьба не пинать за не самые лучшие решения, а помочь советом в случае чего )</p>
<h4>Запуск сборщика данных</h4>
<p>Запускаем коллектор, который будет получать данные от циски и сохранять их в файлах:</p>
<pre>/usr/local/bin/flow-capture
 -n48
 -N0
 -w /data/flow
 -E1G
 0/10.0.1.13/2055</pre>
<p>Опишу использованные мной параметры:</p>
<ul>
<li>-n48 &#8212; количество ротаций файлов за сутки, 48 раз &#8212; это каждые полчаса;
<li>-N0 &#8212; формат имён файлов со статистикой, 0 &#8212; просто файл в указанной папке;
<li>-w /data/flow &#8212; папка для хранения файлов;
<li>-E1G &#8212; размер файла, по достижении которого, файл со статистикой ротейтится &#8212; 1ГБ, если размер файла не достигает указанного, то файл ротейтится согласно параметра -n48;
<li>10.0.1.5/10.0.1.13/2055 &#8212; принимать данные, отправленные на адрес 10.0.1.5/принимать данные только от экпортёра 10.0.1.13/порт для ожидания данных;
</ul>
<p>Сборщик будет висеть на указанных айпишнике и порту, принимать данные от указанного адреса и складывать их во временный файл в папке /data/flow, например с таким именем:</p>
<pre>tmp-v05.2009-05-11.183644+0600</pre>
<p>Через промежуток времени, согласно параметра -n48, а в нашем случае это полчаса, временный файл будет переименован в окончательный, например вот такой:</p>
<pre>ft-v05.2009-05-11.183644+0600</pre>
<p>И затем будет создан новый временный файл:</p>
<pre>tmp-v05.2009-05-11.190609+0600</pre>
<p>Пишем скриптик для запуска коллектора и помещаем его в &#171;/usr/local/etc/rc.d&#187;, в простом случае он может быть вот такой:</p>
<pre>#!/bin/sh

CMD="/usr/local/bin/flow-capture
 -n48
 -N0
 -w /data/flow
 -E5G
 10.0.1.5/10.0.1.13/2055"

PID="/var/run/flow-capture.pid.2055"

case "$1" in
 start)
  echo "Start flow-capture"
  $CMD
 ;;
 stop)
  echo "Stop flow-capture"
  kill -TERM `cat $PID`
 ;;
 *)
  echo " Usage: `basename $0` { start | stop }"
  exit 1
 ;;
esac

exit 0</pre>
<p>Ну и конечно надо разрешить в нашем файрволе входящие пакеты с адреса экспортёра на адрес коллектора по протоколу udp и на порт 2055.</p>
<h4>Настройка экспорта данных с циски</h4>
<p>Настраиваем циску для экспорта данных с нужного нам интерфейса:</p>
<pre>cs#conf t
cs(config)#ip flow-export version 5
cs(config)#ip flow-export destination 10.0.1.5 2055
cs(config)#int bvi1
cs(config-if)#ip flow egress
cs(config-if)#ip flow ingress
cs(config-if)#^Z</pre>
<p>Посмотреть что получилось на циске можно вот так:</p>
<pre>cs#show ip flow interface
BVI1
  ip flow ingress
  ip flow egress
cs#show ip flow export
Flow export v5 is enabled for main cache
  Export source and destination details :
  VRF ID : Default
    Destination(1)  10.0.1.5 (2055)
  Version 5 flow records
  4084394 flows exported in 150001 udp datagrams
  0 flows failed due to lack of export packet
  0 export packets were sent up to process level
  0 export packets were dropped due to no fib
  0 export packets were dropped due to adjacency issues
  0 export packets were dropped due to fragmentation failures
  0 export packets were dropped due to encapsulation fixup failures</pre>
<h4>Экспорт данных из файла в текстовый вид</h4>
<p>Для проверки наличия нужных нам данных в файлах, которые нам создал коллектор, можно экпортировать их в текстовый формат:</p>
<pre>flow-export -f2 -mDPKTS,DOCTETS,SRCADDR,DSTADDR < raw_file</pre>
<p>Ключ -f2 задаёт формат вывода - ASCII с полями, разделёнными запятой. Поля, которые вы хотите увидеть задаются параметром -m, список всех полей есть в мане к flow-export. При указании полей, насколько я понял, нужно перечислять их в порядке следования в списке в мане, например, указать поле DPKTS после поля DSTADD нельзя - это приведёт к ошибке:</p>
<pre># flow-export -f2 -mDOCTETS,SRCADDR,DSTADDR,DPKTS < raw_file
flow-export: Out of order field: DPKTS
flow-export: ftxfield_parse(): failed</pre>
<p>Список полей для экспорта можно задать и при помощи масок, что будет короче в написании, но  сложнее в восприятии )</p>
<h4>Подготовка MySQL для сохранения данных</h4>
<p>Понятно, что прежде чем записывать данные в MySQL, нужно создать пользователя, базу данных и таблицу с нужными нам полями.<br />
Описывать создание пользователя и базы я не буду в виду тривиальности задачи )<br />
Остановлюсь на создании таблицы, в моём случае это было примерно так:</p>
<pre>create table export (
 unix_secs int(11) unsigned null,
 exaddr varchar(16) null,
 dpkts int(10) unsigned null,
 doctets int(10) unsigned null,
 first int(11) unsigned null,
 last int(11) unsigned null,
 srcaddr varchar(16) null,
 dstaddr varchar(16) null,
 srcport smallint(5) unsigned null,
 dstport smallint(5) unsigned null,
 prot tinyint(3) unsigned null,
 key (srcaddr)
);</pre>
<p>Возможно, из-за отсутствия опыта работы с netflow, я мог собрать ненужные мне поля, а какие-то интересные, наоборот, пропустить. Это можно легко поправить в рабочем порядке )</p>
<h4>Экспорт данных из файла в MySQL</h4>
<p>Теперь, когда СУБД готова к приёму наших данных, можно их экспортировать:</p>
<pre>/usr/local/bin/flow-export -f3
 -mUNIX_SECS,EXADDR,DPKTS,DOCTETS,FIRST,
 LAST,SRCADDR,DSTADDR,SRCPORT,DSTPORT,PROT
 -u "flow:DBPassword:localhost:/tmp/mysql.sock:flow:export" < raw_file</pre>
<p>Параметр -f3 задаёт формат экспорта - MySQL, параметр -u задаёт данные для доступа к базе данных - "пользователь:пароль:хост:порт:база:таблица".</p>
<p>Так же не забываем о необходимости соблюдения соответствия очерёдности полей, экпортируемых из файлов, с очерёдности полей, созданных в таблице.</p>
<p>Периодичность запуска этой процедуры определите сами с учётом своих нужд. В моём случае довольно и одного раза в час.</p>
<p>Также, в зависимости от ваших потребностей и возможностей, решайте экспортировать ли все данные в одну таблицу или в разные таблицы, например по дате. В последнем случае, конечно, одной указанной выше командой не обойтись - нужно, как минимум, ещё и создавать таблицы по мере необходимости.<br />
Так же нужно подумать об удалении уже обработанных файлов с netflow-данными, чтобы не занимали место на диске почём зря )</p>
<p>Я решил, что мне удобнее хранить данные посуточно в отдельных таблицах с названиями типа "export_0512". Для это я написал небольшой скрипт на perl, который проверяет наличие таблицы для данного дня, при необходимости создаёт её и экспортирует в неё данные указанной выше командой, а также удаляет таблицу за этот день, но прошлого месяца.</p>
<h4>Выборки из MySQL</h4>
<p>Как извлекать нужные данные из БД учить не буду, т.к. и сам не очень хорошо в этом разбираюсь. Приведу лишь несколько запросов, которые я использую.</p>
<p>Найти десятку самых активных хостов из сети "10.255.0" по количеству исходящих байт:</p>
<pre>select srcaddr,sum(doctets) as traf_out from export_0511
 WHERE srcaddr like '10.255.0.%' group by srcaddr order by traf_out desc limit 10;</pre>
<p>Найти десятку портов получателей с самым большим исходящим трафиком для указанного айпишника:</p>
<pre>select srcaddr,sum(doctets) as traf_int,dstport,prot from export_0512
 WHERE srcaddr like '10.255.0.3' group by dstport  order by traf_int desc limit 10;</pre>
<p>Найти десятку удалённых хостов, на которые был наибольший исходящий трафик с указанного айпишника:</p>
<pre>select srcaddr,dstaddr,sum(doctets) as traf_int from export_0511
 WHERE srcaddr like '10.255.0.3' group by dstaddr  order by traf_int desc limit 10;</pre>
<h4>Заключение</h4>
<p>Данный пример позволяет только лишь быстро запустить сбор данных и сделать какие-либо запросы из базы данных. Различные проверки ошибок, удобства и т.п. каждый реализует сам в меру своих требований и фантазии )<br />
Кому-то, наверняка, потребуется и веб-интерфейс для запросов в базу, но лично для меня и данного случая такой необходимости пока нет.</p>
<p>Буду благодарен за конструктивную критику и советы )</p>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/simple-flowtools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Падения Squid-а под Линуксом</title>
		<link>http://test.kg/squid_signal_25/</link>
		<comments>http://test.kg/squid_signal_25/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 11:41:16 +0000</pubDate>
		<dc:creator>Zed</dc:creator>
				<category><![CDATA[СисАдминство]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[сети]]></category>

		<guid isPermaLink="false">http://www.net.kg/?p=68</guid>
		<description><![CDATA[Постоянно падал Squid на сервер под Линуксом, в логах только вот это: Jun 20 17:18:18 mail squid[6690]: Squid Parent: child process 6711 exited due to signal 25 Как оказалось проблема была из-за какой-то ошибки файловой системы, fsck помог: fsck /dev/sda4 За столько лет работы под ФриБСД ни разу с такой хренью не сталкивался )]]></description>
			<content:encoded><![CDATA[<p>Постоянно падал Squid на сервер под Линуксом, в логах только вот это:<br />
Jun 20 17:18:18 mail squid[6690]: Squid Parent: child process 6711 exited due to signal 25</p>
<p>Как оказалось проблема была из-за какой-то ошибки файловой системы, fsck помог:<br />
fsck /dev/sda4</p>
<p>За столько лет работы под ФриБСД ни разу с такой хренью не сталкивался )</p>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/squid_signal_25/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проверка бдительности )</title>
		<link>http://test.kg/vigilance_chec/</link>
		<comments>http://test.kg/vigilance_chec/#comments</comments>
		<pubDate>Tue, 26 Dec 2006 11:30:01 +0000</pubDate>
		<dc:creator>Админ</dc:creator>
				<category><![CDATA[СисАдминство]]></category>
		<category><![CDATA[сети]]></category>

		<guid isPermaLink="false">http://www.net.kg/?p=304</guid>
		<description><![CDATA[Разослал всему офису письмо со своего адреса с просьбой прислать мне свои данные для доступа к БД. Фишка в том, что, хотя адрес отправителя был мой, но адрес для ответа был левый на gmail.com &#8212; нажимаешь &#171;Ответить&#187;, а в адресе получателя стоит левый емейл ) Получил 9 ответов с паролями на указанный ящик с gmail.com. [...]]]></description>
			<content:encoded><![CDATA[<p>Разослал всему офису письмо со своего адреса с просьбой прислать мне свои данные для доступа к БД.<br />
Фишка в том, что, хотя адрес отправителя был мой, но адрес для ответа был левый на gmail.com &#8212; нажимаешь &#171;Ответить&#187;, а в адресе получателя стоит левый емейл )<br />
Получил 9 ответов с паролями на указанный ящик с gmail.com. Слава Богу, что хоть кто-то переспросил, чтобы убедиться, что письмо от меня. Правда на левый емейл так никто внимания не обратил )<br />
И это сотрудники IT конторы, непосредственно связанной с Интернетом и имеющие доступ к конфиденциальной информации.</p>
<p>Грустно&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/vigilance_chec/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 устарела довольно давно &#8212; производитель более не [...]]]></description>
			<content:encoded><![CDATA[<p>Обычно, для тех кто впервые начинает настройку файрвола, принципы работы трансляции соединений становятся одним из наиболее сложных для понимания моментов, поэтому в данной статье основной упор сделан на описании этих принципов на примере одной типовой схемы.<br />
<span id="more-148"></span></p>
<h4>Краткие сведения о Cisco PIX Firewall 520</h4>
<p>520-я серия файрволов компании Cisco устарела довольно давно &#8212; производитель более не поставляет их с июля 2001, не выпускает обновлений программного обеспечения с июня 2004, а поддержка аппаратной части закончится в июне 2006 года. Но несмотря на это файрвол всё ещё остаётся достаточно интересным устройством особенно с учётом нынешней его стоимости.</p>
<p>С виду данный файрвол представляет собой несколько модернизированный ПК &#8212; корпус, материнская плата, блок питания, 3.5&#8243; привод для гибких дисков с виду такие же как у обычного ПК. Жёсткого диска у этого устройства, к счастью, нет, а в качестве долговременной памяти используется флеш-память, которая размещена на отдельной PCI-плате расширения вместе с другими схемами, реализующими специфичные функции, такие как консольный порт и интерфейс перекрытия сбоев (Failover), который позволяет дублировать основной файрвол резервным в случае выхода его из строя.</p>
<p>Для интереса приведу основные технические характеристики устройства, используемого в описанном случае &#8212; 768 MB RAM, CPU Pentium III 848 MHz, Flash 16MB, 4 сетевых адаптера 10/100.</p>
<p>Операционная система, по словам Cisco, специально разработана для данных задач, что позволяет устройству обрабатывать намного больший поток данных нежели обычные операционные системы для ПК.</p>
<p>Интерфейс командной строки весьма схож с интерфейсом маршрутизаторов Cisco, но имеет некоторые недостатки, впрочем не настолько существенные чтобы их отдельно описывать.</p>
<p>Версия операционной системы в конкретном случае &#8212; 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, полученный от провайдера. Адрес со стороны провайдера на нашем соединении &#8212; 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>При смене имени или домена, например командой &#171;domain-name my.domain.tld&#187;, появится следующее предупреждение:</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>Ключи хранятся в специальной области флеш-памяти, посмотреть их можно командой &#171;show ca mypubkey rsa&#187;.</p>
<p>Сохранить текущую конфигурацию в долговременную память можно командой &#171;write mem&#187;.<br />
Записать конфигурацию на сервере по tftp-протоколу можно командой:</p>
<pre>write net 192.168.255.2:pix-gtw</pre>
<p>где 192.168.255.2 &#8212; адрес 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>Последний параметр &#8212; уровень безопасности (security level) нуждается в пояснении. Число от 0 до 100 задаёт уровень безопасности данного интерфейса относительно других интерфейсов &#8212; чем выше число, тем безопаснее считается сеть. Это число абстрактно, т.е. само по себе не является показателем безопасности сети. Этот параметр используется системой для определения возможности и способа обмена данными между интерфейсами &#8212; для доступа из более безопасной сети в менее безопасную должны использоваться команды nat и global, а для доступа из менее безопасной сети в более безопасную &#8212; 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 (по нумерации файрвола &#8212; 23), с уровнем warnings и выше (critical, alerts, emergencies), а также с идентификатором устройства &#171;pix-gtw&#187;:</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 &#8212; исключение из NAT (NAT Exemption). Исключение из NAT настраивается командой &#171;nat 0 access-list&#187; и отключает трансляцию для адресов, указанных в списке доступа, т.е. обмен идёт без какой-либо трансляции вообще.</p>
<h4>Зависимость трансляций от уровней безопасности интерфейсов</h4>
<p>Как уже говорилось выше, способ настройки трансляции зависит от уровня безопасности интерфейсов &#8212; для настройки доступа из более безопасной сети в менее безопасную нужно использовать команду nat, а для доступа из менее безопасной сети в более безопасную &#8212; static.</p>
<p>Для просмотра уровней безопасности можно воспользоваться командой &#171;show nameif&#187;, которая также покажет и имена интерфейсов:</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. Мы можем посмотреть уже существующие записи в таблице командой &#171;show xlate&#187;, а очистить всю таблицу &#8212; командой &#171;clear xlate&#187;. Кстати, последнюю операцию рекомендуется делать после изменений правил трансляции, но учтите, что это приведёт к разрыву уже установленных соединений если они созданы с использованием какой-либо трансляции.<br />
Для удаления только определённых записей можно указать глобальный или локальный адрес и, если это PAT, то и соответствующий порт:</p>
<pre>clear xlate global 1.2.3.246
clear xlate local 192.168.255.6 lport 80</pre>
<p>При отсутствии обмена записи в таблице трансляций удаляются по истечении таймаута, который задаётся командой &#171;timeout xlate&#187; и по-умолчанию равен трём часам. Записи для протокола 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 />
При изменение правил трансляции не забывайте выполнять команду &#171;clear xlate&#187;.</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>Если же мы хотим чтобы веб-сервер был напрямую доступен с хостов локальной сети и от нашего сервера и обращения к нему вообще не транслировались, то надо использовать конструкцию &#171;nat 0 access-list&#187; и соответствующий список доступа:</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. &#171;Cisco PIX Firewall and VPN Configuration Guide&#187;;<br />
2. &#171;Cisco PIX Firewall Command Reference&#187;;<br />
3. &#171;Using NAT and PAT Statements on the Cisco Secure PIX Firewall&#187;.</p>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/cisco-pix-address-translation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Кеширование вывода ASP-скриптов</title>
		<link>http://test.kg/asp-caching/</link>
		<comments>http://test.kg/asp-caching/#comments</comments>
		<pubDate>Sat, 01 Jan 2005 11:48:54 +0000</pubDate>
		<dc:creator>Zed</dc:creator>
				<category><![CDATA[СисАдминство]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[сети]]></category>

		<guid isPermaLink="false">http://zed.web.kg/asp-caching/</guid>
		<description><![CDATA[Для снижения нагрузки на сервер приложений и сервер базы данных включен кеширующий прокси-сервер &#8212; все обращения идут к нему как к веб-серверу. В качестве прокси использован Squid в режиме http-акселератора. Настройки Squid-а позволяют указать время кеширования, в течение которого запросы не будут передаваться на сервер приложений, а результаты работы скриптов будут отдаваться из кеша так [...]]]></description>
			<content:encoded><![CDATA[<p>Для снижения нагрузки на сервер приложений и сервер базы данных включен кеширующий прокси-сервер &#8212; все обращения идут к нему как к веб-серверу. </p>
<p>В качестве прокси использован Squid в режиме http-акселератора. Настройки Squid-а позволяют указать время кеширования, в течение которого запросы не будут передаваться на сервер приложений, а результаты работы скриптов будут отдаваться из кеша так же как и статичные страницы и картинки. </p>
<p>Проблема оказалась в том, что ASP-скрипты не желали кешироваться, и, несмотря ни на какие настройки Squid-а удалялись из кеша сразу после поступления. Таким образом задача по снижению нагрузки на серверы приложений и БД не выполнялась. </p>
<p>Дело было в директиве CacheControl со значением Private, которое выдаётся по-умолчанию, и мне не удалось повлиять на него настройками Squid-а. Изменить значение этой директивы удалось только при помощи дополнительной строчки в ASP-скриптах:</p>
<pre><% Response.CacheControl="Public" %></pre>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/asp-caching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IP forwarding в Windows 2000/XP</title>
		<link>http://test.kg/win-ip-forw/</link>
		<comments>http://test.kg/win-ip-forw/#comments</comments>
		<pubDate>Thu, 01 Jan 2004 11:39:18 +0000</pubDate>
		<dc:creator>Zed</dc:creator>
				<category><![CDATA[СисАдминство]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[сети]]></category>

		<guid isPermaLink="false">http://zed.web.kg/win-ip-forw/</guid>
		<description><![CDATA[Этот самый форвардинг позволяет проходить пакетам сквозь машину, с одного сетевого интерфейса на на другой. Ещё проще говоря, форвардинг нужен чтобы машины с реальными адресами изнутри сети могли выходить во внешний мир. По-умолчанию форвардинг выключен, чтобы исправить это положение нужно изменить значение одного ключика в реестре. Вот документ с сайта компании Microsoft, он написан про [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Этот самый форвардинг позволяет проходить пакетам сквозь машину, с одного сетевого интерфейса на на другой. Ещё проще говоря, форвардинг нужен чтобы машины с реальными адресами изнутри сети могли выходить во внешний мир.<br />
<span id="more-51"></span></p>
<p>По-умолчанию форвардинг выключен, чтобы исправить это положение нужно изменить значение одного ключика в реестре. Вот документ с сайта компании Microsoft, он написан про Windows 2000, но подходит и для XP:</p>
<pre>
How to Enable TCP/IP Forwarding in Windows 2000 (Q230082)

--------------------------------------------------------------------------------
The information in this article applies to:

Microsoft Windows 2000 , Advanced Server
Microsoft Windows 2000 , Server
Microsoft Windows 2000 , Professional
Microsoft Windows 2000 , Datacenter Server  

--------------------------------------------------------------------------------
IMPORTANT : This article contains information about editing the registry.
Before you edit the registry, make sure you understand how to restore it if a
problem occurs. For information about how to do this, view the "Restoring the
Registry" Help topic in Regedit.exe or the "Restoring a Registry Key" Help
topic in Regedt32.exe.  

SUMMARY
Transmission Control Protocol/Internet Protocol (TCP/IP) forwarding is disabled
by default in Windows 2000. This article describes how to enable TCP/IP
forwarding on a Windows 2000-based computer.  

MORE INFORMATION
WARNING : Using Registry Editor incorrectly can cause serious problems that may
require you to reinstall your operating system. Microsoft cannot guarantee
that problems resulting from the incorrect use of Registry Editor can be
solved. Use Registry Editor at your own risk.  

For information about how to edit the registry, view the "Changing Keys and
Values" Help topic in Registry Editor (Regedit.exe) or the "Add and Delete
Information in the Registry" and "Edit Registry Data" Help topics in
Regedt32.exe. Note that you should back up the registry before you edit it. If
you are running Windows NT or Windows 2000, you should also update your
Emergency Repair Disk (ERD).  

To enable TCP/IP forwarding:  

Use Registry Editor (Regedt32.exe) to view the following registry key:  

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
Set the following registry value:  

Value Name: IPEnableRouter
Value type: REG_DWORD
Value Data: 1  

NOTE : A value of 1 enables TCP/IP forwarding for all network connections
installed and used by this computer.
For additional information about TCP/IP forwarding, click the article numbers
below to view the articles in the Microsoft Knowledge Base:
Q140859 TCP/IP Routing Basics for Windows NT
Q169415 Routing and Remote Access Release Notes Readme.doc File
Q169548 Using Proxy Server with Routing and Remote Access
--------------------------------------------------------------------------------
</pre>
<p>Вот собственно и всё.</p>
<p>Малик /20040101/</p>
]]></content:encoded>
			<wfw:commentRss>http://test.kg/win-ip-forw/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 мы должны иметь имя и пароль, выданные нашим провайдером, например имя &#8212; oe1919, пароль &#8212; Pa$$worD99.</p>
<p align="justify">К сожалению указанная модель циски имеет только один Ethernet-интерфейс, поэтому пришлось вешать на нём и PPPoE-клиента, и NAT. Думаю что в случае с циской с двумя Ethernet-интерфейсами настройка сложнее не будет.</p>
<h4>Схема подключения</h4>
<p align="justify">Схема сети проста &#8212; циска, компьютер и модем включены в один свитч. Модем, настроен в режим бриджа, т.е. тупо отправляет пакетики с одного интерфейса на другой и наоборот.<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 указана вот такая строка &#171;ppp authentication pap&#187;.<br />
<br />У меня же заработало только с вот такой строкой &#8212; &#171;ppp authentication pap callin&#187;.<br />
<br />Параметр callin означает &#171;Authenticate remote on incoming call only&#187;, т.е. что-то вроде &#171;запрашивать аутентификацию удалённо только на входящие вызовы&#187;, если я правильно перевёл указанную фразу.</p>
<p align="justify">Если есть необходимость и желание, то можно поиграть параметрами dialer в интерфейсе Dialer1, например &#171;dialer idle-timeout&#187; позволяет указать время простоя перед отключением от PPPoE сервера, думаю что для этого на обеих сторонах соединения не должен быть включен keepalive, либо параметр &#171;dialer persistent&#187; &#8212; соединяться даже если нет необходимости, т.е. постоянно быть на связи.</p>
<h4>Проверка состояния, сброс сессии</h4>
<p align="justify">Посмотреть состояние соединения можно командой &#171;show vpdn&#187;:</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">А командой &#171;sh int d1&#8243; можно посмотреть адрес выданный нам сервером.</p>
<p align="justify">Сбросить сессию можно командой &#171;clear vpdn tunnel pppoe&#187;.</p>
<p align="justify">Конечно это не все команды, которые могут пригодиться при работе с PPPoE.</p>
<h4>Компьютер</h4>
<p align="justify">На интерфейс компьютера назначаем адрес из сегмента 10.0.0.0/24, и указываем в качестве шлюза по-умолчанию адрес циски на Ethernet-е (10.0.0.1). Проверяем &#8212; всё работает &#8212; даже &#171;пинги пингуются и тресроуты трейсятся&#187; <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-интерфейсами столкнулся с проблемой &#8212; у клиентов из ЛАН открывались только некоторые сайты, а в случае с ФТП &#8212; только список файлов. Например при подключении telnet-ом на 80-й порт сайта mail.ru с компьютера из локальной сети страничка не отдавалась (таймаут), то же самое с самой циски работало нормально. Подозрение на непроходимость больших пакетов не подтвердилось &#8212; пинги с размером пакетов в 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>

