<?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>З.П.И. &#187; vpn</title>
	<atom:link href="http://wiki.dodex.org/tag/vpn/feed/" rel="self" type="application/rss+xml" />
	<link>http://wiki.dodex.org</link>
	<description>Что-то новое пришедшее в голову или интересное, найденное в интернете</description>
	<lastBuildDate>Tue, 08 Nov 2011 10:16:57 +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>VPN-сервер (pptpd/xl2tpd+mysql+radius) на CentOS 6</title>
		<link>http://wiki.dodex.org/2011/10/31/vpn-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-pptpdxl2tpdmysqlradius-%d0%bd%d0%b0-centos-6/</link>
		<comments>http://wiki.dodex.org/2011/10/31/vpn-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-pptpdxl2tpdmysqlradius-%d0%bd%d0%b0-centos-6/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 17:35:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[freeradius]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=814</guid>
		<description><![CDATA[Здесь я постараюсь описать процесс установки и настройки VPN-сервера на CentOS6 с пользователями в MySQL и авторизацией через radius по chap для xl2tpd и для шифрованного соединения по ms-chap-v2 и mppe для pptpd. Дано Виртуальная машина на KVM со свежеустановленной CentOS6 x86_64 minimal. Задача 1. Установить и настроить в связке pptpd/xl2tpd, freeradius2, radiusclient-ng и mysql. [...]]]></description>
			<content:encoded><![CDATA[<p>Здесь я постараюсь описать процесс установки и настройки VPN-сервера на CentOS6 с пользователями в MySQL и авторизацией через radius по chap для xl2tpd и для шифрованного соединения по ms-chap-v2 и mppe для pptpd.</p>
<h4>Дано</h4>
<p>Виртуальная машина на KVM со свежеустановленной CentOS6 x86_64 minimal.</p>
<h4>Задача</h4>
<p>1. Установить и настроить в связке pptpd/xl2tpd, freeradius2, radiusclient-ng и mysql.<br />
2. Создать 2-х клиентов для подключения к настроенному VPN-серверу, с выходом в нет четез NAT. Один клиент с динамическим получением адреса, второй с постоянным IP.<br />
3. Перенести pool адресов для раздачи динамическим клиентам из pptpd в radius. <span id="more-814"></span></p>
<h4>Решение</h4>
<p>Первым делом необходимо установить все необходимые пакеты. radiusclient-ng, pptpd и xl2tpd нет в стандартных репозиториях, поэтому для radiusclient-ng и xl2tpd мы подключим EPEL-репозиторий, а pptpd-пакет скачаем напрямую.</p>
<blockquote><p><code># rpm -Uhv http://fedora-epel.mirror.lstn.net/6/x86_64/epel-release-6-5.noarch.rpm<br />
# yum install freeradius freeradius-mysql xl2tpd radiusclient-ng radiusclient-ng-utils freeradius-utils mysql mysql-devel mysql-server<br />
# rpm -Uhv http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.el6.x86_64.rpm</code></p></blockquote>
<p>далее настроим mysql и зададим пароль:</p>
<blockquote><p><code># mysql_secure_installation</code></p></blockquote>
<p>Собственно, перейдем к настройке pptpd. Приводим файлы настройки к следующему виду:</p>
<blockquote><p><code># cat /etc/pptpd.conf<br />
option /etc/ppp/options.pptpd<br />
logwtmp<br />
localip 192.168.80.1<br />
remoteip 192.168.80.5-35</code></p></blockquote>
<blockquote><p><code># cat /etc/ppp/options.pptpd<br />
name pptpd<br />
refuse-pap<br />
refuse-chap<br />
refuse-mschap<br />
require-mschap-v2<br />
require-mppe-128<br />
proxyarp<br />
ms-dns 8.8.8.8<br />
ms-dns 8.8.4.4<br />
lock<br />
nobsdcomp<br />
novj<br />
novjccomp<br />
nologfd<br />
lcp-echo-failure 30<br />
lcp-echo-interval 5<br />
ipcp-accept-local<br />
ipcp-accept-remote<br />
plugin radius.so<br />
plugin radattr.so</code></p></blockquote>
<p>если решили использовать не pptpd , а xl2tpd, то файлы будут иметь следующий вид:</p>
<blockquote><p><code># cat /etc/xl2tpd/xl2tpd.conf<br />
[global]<br />
port = 1701<br />
auth file = /etc/xl2tpd/l2tp-secrets<br />
access control = no<br />
rand source = dev<br />
[lns default]<br />
exclusive = no<br />
ip range = 192.168.80.5-192.168.81.35<br />
local ip = 192.168.80.1<br />
require chap = yes<br />
refuse pap = yes<br />
require authentication = yes<br />
name = VPNserver<br />
ppp debug = yes<br />
pppoptfile = /etc/ppp/options.xl2tpd<br />
length bit = yes<br />
flow bit = yes </code></p></blockquote>
<blockquote><p><code># cat /etc/ppp/options.xl2tpd<br />
ipcp-accept-local<br />
ipcp-accept-remote<br />
lcp-echo-failure 30<br />
lcp-echo-interval 5<br />
ms-dns 8.8.8.8<br />
ms-dns 8.8.4.4<br />
noccp<br />
nodeflate<br />
auth<br />
crtscts<br />
idle 1800<br />
mtu 1410<br />
mru 1410<br />
defaultroute<br />
debug<br />
proxyarp<br />
connect-delay 5000<br />
lock<br />
plugin radius.so<br />
plugin radattr.so</code></p></blockquote>
<p>с pptpd/xl2tpd закончено, переходим к настройке radiusclient-ng:<br />
Первая проблема с которой мы столкнулись, это нежелание pptpd работать с radiusclient-ng из-за путей куда он установлен, поэтому создаем софт-линк следующим образом</p>
<blockquote><p><code># ln -s /etc/radiusclient-ng /etc/radiusclient</code></p></blockquote>
<p>и закоментируем в файле /etc/radiusclient-ng/radiusclient.conf строчку</p>
<blockquote><p><code>#bindaddr *</code></p></blockquote>
<p>иначе ругается на неизвестный параметр.<br />
редактируем /etc/radiusclient-ng/servers , добавляем локальный radius-сервер, к которому будет обращаться клиент</p>
<blockquote><p><code>localhost YouRsUpErpAAs</code></p></blockquote>
<p>Вторая проблема, с которой нам пришлось столкнуться, это отсутствие в пакете radiusclient-ng атрибутов от mircosoft, после гугления, необходимые артибуты были найдены. Копируем имеющиеся файлы с атрибутами из /usr/share/radiusclient-ng/ в /etc/radiusclient-ng/</p>
<blockquote><p><code>cp /usr/share/radiusclient-ng/diction* /etc/radiusclient-ng/</code></p></blockquote>
<p>в /etc/radiusclient-ng/ создаем файл dictionary.microsoft со следующим содержимым:</p>
<blockquote><p>&nbsp;</p>
<p><code> </code></p>
<pre>VENDOR          Microsoft       311     Microsoft

ATTRIBUTE       MS-CHAP-Response        1       string  Microsoft
ATTRIBUTE       MS-CHAP-Error           2       string  Microsoft
ATTRIBUTE       MS-CHAP-CPW-1           3       string  Microsoft
ATTRIBUTE       MS-CHAP-CPW-2           4       string  Microsoft
ATTRIBUTE       MS-CHAP-LM-Enc-PW       5       string  Microsoft
ATTRIBUTE       MS-CHAP-NT-Enc-PW       6       string  Microsoft
ATTRIBUTE       MS-MPPE-Encryption-Policy 7     string  Microsoft
ATTRIBUTE       MS-MPPE-Encryption-Type 8       string  Microsoft
ATTRIBUTE       MS-MPPE-Encryption-Types  8     string  Microsoft
ATTRIBUTE       MS-RAS-Vendor           9       integer Microsoft
ATTRIBUTE       MS-CHAP-Domain          10      string  Microsoft
ATTRIBUTE       MS-CHAP-Challenge       11      string  Microsoft
ATTRIBUTE       MS-CHAP-MPPE-Keys       12      string  Microsoft
ATTRIBUTE       MS-BAP-Usage            13      integer Microsoft
ATTRIBUTE       MS-Link-Utilization-Threshold 14 integer        Microsoft
ATTRIBUTE       MS-Link-Drop-Time-Limit 15      integer Microsoft
ATTRIBUTE       MS-MPPE-Send-Key        16      string  Microsoft
ATTRIBUTE       MS-MPPE-Recv-Key        17      string  Microsoft
ATTRIBUTE       MS-RAS-Version          18      string  Microsoft
ATTRIBUTE       MS-Old-ARAP-Password    19      string  Microsoft
ATTRIBUTE       MS-New-ARAP-Password    20      string  Microsoft
ATTRIBUTE       MS-ARAP-PW-Change-Reason 21     integer Microsoft
ATTRIBUTE       MS-Filter               22      string  Microsoft
ATTRIBUTE       MS-Acct-Auth-Type       23      integer Microsoft
ATTRIBUTE       MS-Acct-EAP-Type        24      integer Microsoft
ATTRIBUTE       MS-CHAP2-Response       25      string  Microsoft
ATTRIBUTE       MS-CHAP2-Success        26      string  Microsoft
ATTRIBUTE       MS-CHAP2-CPW            27      string  Microsoft
ATTRIBUTE       MS-Primary-DNS-Server   28      ipaddr  Microsoft
ATTRIBUTE       MS-Secondary-DNS-Server 29      ipaddr  Microsoft
ATTRIBUTE       MS-Primary-NBNS-Server  30      ipaddr  Microsoft
ATTRIBUTE       MS-Secondary-NBNS-Server 31     ipaddr  Microsoft
VALUE           MS-BAP-Usage            Not-Allowed     0
VALUE           MS-BAP-Usage            Allowed         1
VALUE           MS-BAP-Usage            Required        2
VALUE   MS-ARAP-PW-Change-Reason        Just-Change-Password            1
VALUE   MS-ARAP-PW-Change-Reason        Expired-Password                2
VALUE   MS-ARAP-PW-Change-Reason        Admin-Requires-Password-Change  3
VALUE   MS-ARAP-PW-Change-Reason        Password-Too-Short              4
VALUE           MS-Acct-Auth-Type       PAP             1
VALUE           MS-Acct-Auth-Type       CHAP            2
VALUE           MS-Acct-Auth-Type       MS-CHAP-1       3
VALUE           MS-Acct-Auth-Type       MS-CHAP-2       4
VALUE           MS-Acct-Auth-Type       EAP             5
VALUE           MS-Acct-EAP-Type        MD5             4
VALUE           MS-Acct-EAP-Type        OTP             5
VALUE           MS-Acct-EAP-Type        Generic-Token-Card      6
VALUE           MS-Acct-EAP-Type        TLS             13</pre>
<p>&nbsp;</p></blockquote>
<p>редактируем файл /etc/radiusclient-ng/radiusclient.conf на предмет</p>
<blockquote><p><code>dictionary /etc/radiusclient-ng/dictionary</code></p></blockquote>
<p>редактируем файл /etc/radiusclient-ng/dictionary , добавляя в конец</p>
<blockquote><p><code>INCLUDE /etc/radiusclient-ng/dictionary.microsoft<br />
INCLUDE /etc/radiusclient-ng/dictionary.merit</code></p></blockquote>
<p>с клиентом тоже закончили, переходим к настройке mysql:<br />
пакет freeradius-mysql содержит необходимые файлы для импорта их в mysql, находятся они в /etc/raddb/sql/mysql/<br />
подредактируем файл admin.sql , что бы задать пароль отличный от стандартного</p>
<blockquote><p><code>vim admin.sql<br />
:%s/radpass/radpass235/g<br />
:wq</code></p></blockquote>
<p>подключаемся к mysql, создаем DB, импортируем таблицы и создаем пользователей</p>
<blockquote><p><code>mysql -p<br />
mysql&gt; create database radius;<br />
mysql&gt; \. admin.sql<br />
mysql&gt; use radius;<br />
mysql&gt; \. schema.sql</code></p></blockquote>
<p>далее создаем пользователей и их настройки</p>
<blockquote><p><code>mysql&gt; INSERT INTO radusergroup (username,groupname) values ('user1','static-ip-vpn');<br />
mysql&gt; INSERT INTO radusergroup (username,groupname) values ('user2','dinamic-ip-vpn');</code></p></blockquote>
<p>должно получится следующее</p>
<blockquote><p><code>mysql&gt; select * from radusergroup;</code></p>
<p><code> </code></p>
<pre>+----------+----------------+----------+
| username |   groupname    | priority |
+----------+----------------+----------+
| user1    | static-ip-vpn  | 1        |
| user2    | dinamic-ip-vpn | 1        |
+----------+----------------+----------+</pre>
<p>&nbsp;</p></blockquote>
<blockquote><p><code>mysql&gt; INSERT INTO radcheck (username,attribute,op,value) values ('user1','User-Password','==','pass1');<br />
mysql&gt; INSERT INTO radcheck (username,attribute,op,value) values ('user2','User-Password','==','pass2');</code></p></blockquote>
<blockquote><p><code>mysql&gt; select * from radcheck;</code></p>
<p><code> </code></p>
<pre>+----+----------+---------------+----+-------+
| id | username | attribute     | op | value |
+----+----------+---------------+----+-------+
|  1 | user1    | User-Password | == | pass1 |
|  2 | user2    | User-Password | == | pass2 |
+----+----------+---------------+----+-------+</pre>
<p>&nbsp;</p></blockquote>
<p>заполняем таблицу radgroupreply</p>
<blockquote><p><code>mysql&gt; INSERT INTO radgroupreply (groupname, attribute, op, value) values ('dinamic-ip-vpn','Service-Type',':=','Framed-User');</code></p></blockquote>
<p>и так далее, чтоб получить следующее</p>
<blockquote><p><code>mysql&gt; select * from radgroupreply;</code></p>
<p><code> </code></p>
<pre>+----+----------------+--------------------+----+---------------------+
| id | groupname      | attribute          | op | value               |
+----+----------------+--------------------+----+---------------------+
|  1 | dinamic-ip-vpn | Service-Type       | := | Framed-User         |
|  2 | dinamic-ip-vpn | Framed-Protocol    | := | PPP                 |
|  3 | dinamic-ip-vpn | Framed-Compression | := | Van-Jacobsen-TCP-IP |
|  4 | static-ip-vpn  | Framed-Compression | := | Van-Jacobsen-TCP-IP |
|  5 | static-ip-vpn  | Framed-Protocol    | := | PPP                 |
|  6 | static-ip-vpn  | Service-Type       | := | Framed-User         |
+----+----------------+--------------------+----+---------------------+</pre>
<p>&nbsp;</p></blockquote>
<p>заполняем таблицу radreply чтобы задать постоянный ip для первого клиента user1</p>
<blockquote><p><code>mysql&gt; INSERT INTO radreply (username, attribute, op, value) values ('user1','Framed-IP-Netmask',':=','255.255.255.255');<br />
mysql&gt; INSERT INTO radreply (username, attribute, op, value) values ('user1','Framed-IP-Address',':=','192.168.80.90');<br />
mysql&gt; select * from radreply;</code></p>
<p><code> </code></p>
<pre>+----+----------+-------------------+----+-----------------+
| id | username |     attribute     | op |     value       |
+----+----------+-------------------+----+-----------------+
| 1  | user1    | Framed-IP-Netmask | := | 255.255.255.255 |
| 2  | user1    | Framed-IP-Address | := | 192.168.80.90   |
+----+----------+-------------------+----+-----------------+</pre>
<p>&nbsp;</p></blockquote>
<p>В итоге, мы занесли в базу данный 2-х клиентов, user1 с паролем pass1 и статическим ip – 192.168.80.90, и user2 с паролем pass2 и получением динамического ip из пула указанного в настройках pptpd. Здесь намеренно пользователи разнесены по группам, с учетом дальшейшего увеличения клиентов, можно было просто создать все атрибуты для обоих клиентов в таблице radreply, но при большом количестве клиентов, удобнее использовать группы, где указываются одинаковые для клиентов группы атрибуты. Так же, в группах можно указывать разные пулы адресов и еще многое другое, но об этом сейчас не будем.</p>
<p>Переходим к настрокам radius. Здесь я приведу примеры файлов, в которых производились изменения:</p>
<blockquote><p><code>/etc/raddb/clients.conf<br />
client 127.0.0.1 {<br />
secret = YouRsUpErpAAs<br />
shortname = localhost<br />
nastype = other<br />
}</code></p></blockquote>
<p>Третья проблема, на момент отладки, когда еще radius не был подключен к mysql, столкнулись с тем, что если в файле /etc/raddb/users , если клиенты оказывались прописанными не в начале файла, ничего не работало.</p>
<blockquote><p><code>/etc/raddb/users<br />
DEFAULT Simultaneous-Use := 1<br />
Fall-Through = 1</code></p></blockquote>
<p>Это необходимо прописать, чтоб не было нескольких подключений с одним и тем же логином одновременно</p>
<p>/etc/raddb/radiusd.conf<br />
в секции modules уберем комментарии с</p>
<blockquote><p><code>$INCLUDE sql.conf</code></p></blockquote>
<p>/etc/raddb/sql.conf<br />
прописываем данные для подключения к mysql</p>
<blockquote><p><code>password = "radpass235"</code></p></blockquote>
<p>/etc/raddb/sites-enabled/default<br />
в секциях <code>authorize, session, post-auth и accounting</code> включаем sql<br />
в секции <code>authorize</code> включаем mschap</p>
<blockquote><p><code>/etc/raddb/modules/mschap<br />
mschap {<br />
use_mppe = yes<br />
require_encryption = yes<br />
require_strong = yes<br />
}</code></p></blockquote>
<p>Пожалуй, задача практически решена, остались некоторые штрихи:</p>
<p>Настроить iptables и разрешить форвард, чтоб выпустить клиентов в мир</p>
<blockquote><p><code>iptables -I INPUT -p gre -j ACCEPT<br />
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT<br />
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
iptables -I FORWARD -s 192.168.80.0/24 -o eth0 -j ACCEPT<br />
iptables -I FORWARD -d 192.168.80.0/24 -i eth0 -j ACCEPT<br />
iptables -t nat -I POSTROUTING -s 192.168.80.0/24 -o eth0 -j MASQUERADE</code></p></blockquote>
<blockquote><p><code>/etc/sysctl.conf<br />
net.ipv4.ip_forward = 1<br />
sysctl -p</code></p></blockquote>
<p>Уже на данной стадии, если мы запустим установленные сервисы, мы сможем подключится к нашей машине по vpn, осталось только перенести пул адресов выдаваемых динамическим клиентам из pptpd в radius. Для этого есть несколько вариантов, вплоть до помещения пула в mysql. Мы используем простой вариант.</p>
<p>/etc/raddb/modules/ippool<br />
в секции ippool main_pool , делаем правки для своего пула адресов</p>
<blockquote><p><code>range-start = 192.168.80.35<br />
range-stop = 192.168.80.65</code></p></blockquote>
<p>в файле /etc/raddb/sites-enabled/default добавляем с соответствующие секции</p>
<blockquote><p><code>accounting {<br />
main_pool<br />
}</code></p>
<p><code> </code><code>post-auth {<br />
main_pool<br />
}</code></p></blockquote>
<p>далее, создаем файлы, где пул будет храниться</p>
<blockquote><p><code>touch /etc/raddb/db.ipindex /etc/raddb/db.ippool<br />
chmod 664 /etc/raddb/db.ipindex /etc/raddb/db.ippool<br />
chown root:radiusd /etc/raddb/db.ipindex /etc/raddb/db.ippool</code></p></blockquote>
<p>и добавляем в /etc/raddb/users</p>
<blockquote><p><code>DEFAULT Pool-Name := main_pool<br />
Fall-Through = Yes</code></p></blockquote>
<p>перезапускаем radius, и пробуем подключится к машине по vpn, все должно работать. Подробную статистику подключений мы можем увидеть в таблице radius.radacct<br />
выделенные адреса из пула, можно посмотреть командой</p>
<blockquote><p><code>rlm_ippool_tool -av /etc/raddbdb/db.ippool /etc/raddbdb/db.ipindex</code></p></blockquote>
<p>Можно также одновременно использовать и pptpd и xl2tp. И если мы хотим разделить клиентов, мы можем добавить атрибуты, и в MySQL сделать соответствие группам, на основании этих атрибутов, например:<br />
в /etc/ppp/options.pptpd</p>
<blockquote><p><code>avpair Connect-Info=pptp</code></p></blockquote>
<p>а в /etc/ppp/options.xl2tpd</p>
<blockquote><p><code>avpair Connect-Info=l2tp</code></p></blockquote>
<p>Соответственно, при запросе к радиусу эти атрибуты будут посланы. Останется только сделать проверку в radcheck таблице, если для конкретного клиента, или в radgroupcheck, если для группы.</p>
<p>Вот и все.</p>
<p>Удачи в настройках.<br />
<a href="http://twitter.com/shadow_alone">© shadow_alone</a></p>
<p>Оригинал: <a title="http://andrey.org/pptpd-mysql-radius/" href="http://andrey.org/pptpd-mysql-radius/" target="_blank">http://andrey.org/pptpd-mysql-radius/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2011/10/31/vpn-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80-pptpdxl2tpdmysqlradius-%d0%bd%d0%b0-centos-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenVPN с сертификатами X.509</title>
		<link>http://wiki.dodex.org/2009/07/28/openvpn-%d1%81-%d1%81%d0%b5%d1%80%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%b0%d0%bc%d0%b8-x509/</link>
		<comments>http://wiki.dodex.org/2009/07/28/openvpn-%d1%81-%d1%81%d0%b5%d1%80%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%b0%d0%bc%d0%b8-x509/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 08:12:21 +0000</pubDate>
		<dc:creator>shad</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[X.509]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=583</guid>
		<description><![CDATA[В догонку к предыдущей статье , в этой будем настраивать OpenVPN на работу с сертификатами. Для создания сертификатов для OpenVPN, разработчики уже позаботились, все команды есть в /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0 создадим папку # mkdir /etc/openvpn/keys для начала правим файл vars export KEY_DIR=&#8221;/etc/openvpn/keys&#8221; export KEY_COUNTRY=&#8221;двухбуквенный код страны&#8221; export KEY_PROVINCE=&#8221;провинция&#8221; export KEY_CITY=&#8221;город&#8221; export KEY_ORG=&#8221;организация&#8221; #  вот это самая важная [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-468" title="tux" src="http://wiki.dodex.org/wp-content/uploads/2008/12/tux.png" alt="tux" width="100" height="117" /> В догонку к предыдущей <a href="http://wiki.dodex.org/?p=569">статье</a> , в этой будем настраивать OpenVPN на работу с сертификатами.<br />
<span id="more-583"></span><br />
Для создания сертификатов для OpenVPN, разработчики уже позаботились, все команды есть в /usr/share/doc/openvpn-2.0.9/easy-rsa/2.0<br />
создадим папку<br />
# mkdir /etc/openvpn/keys<br />
для начала правим файл vars<br />
<em>export KEY_DIR=&#8221;/etc/openvpn/keys&#8221;<br />
export KEY_COUNTRY=&#8221;двухбуквенный код страны&#8221;<br />
export KEY_PROVINCE=&#8221;провинция&#8221;<br />
export KEY_CITY=&#8221;город&#8221;<br />
export KEY_ORG=&#8221;организация&#8221; #  вот это самая важная строка<br />
export KEY_EMAIL=&#8221;почта&#8221;<br />
</em><br />
далее:<br />
#  source ./vars<br />
#  ./clean-all<br />
#  ./build-dh     # может занять приличное время<br />
#  ./pkitool &#8211;initca<br />
#  ./pkitool &#8211;server myserver<br />
далее создаем сертификат для клиента<br />
#  ./pkitool client1<br />
далее копируем файлы client1.crt client1.key ca.crt на клиентскую машину в /etc/openvpn/keys</p>
<p>сертификаты созданы, переходим к настройке OpenVPN</p>
<p>создадим файл /etc/openvpn/server.conf такого содержания:</p>
<p><em>mode server<br />
dev tun<br />
tls-server<br />
proto udp<br />
port 3335<br />
comp-lzo<br />
persist-tun<br />
persist-key<br />
client-to-client    # разрешаем клиентам видеть друг друга<br />
# указываем узловые точки виртуальной сети<br />
ifconfig 10.1.0.1 10.1.0.2<br />
ifconfig-pool 10.1.0.4 10.1.0.251<br />
route 10.1.0.0 255.255.255.0<br />
#<br />
dh /etc/openvpn/keys/dh1024.pem<br />
ca /etc/openvpn/keys/ca.crt<br />
cert /etc/openvpn/keys/myserver.crt<br />
key /etc/openvpn/keys/myserver.key<br />
log-append /var/log/openvpn.log<br />
verb 3<br />
# отправляем клиентам необходимые маршруты<br />
push &#8220;route 192.168.0.0 255.255.255.0&#8243;<br />
push &#8220;route 10.1.0.0 255.255.255.0&#8243;<br />
#<br />
keepalive 10 60<br />
ping-timer-rem<br />
user  nobody<br />
daemon</em></p>
<p>перезапускаем сервис /etc/init.d/openvpn restart</p>
<p>переходим к настройке клиента<br />
создадим файл /etc/openvpn/to_server.conf сделующего содержания:</p>
<p><em>client<br />
dev tun<br />
tls-client<br />
remote адрес_или_имя_сервера<br />
proto udp<br />
port 3335<br />
comp-lzo<br />
persist-tun<br />
persist-key<br />
ca /etc/openvpn/keys/ca.crt<br />
cert /etc/openvpn/keys/client1.crt<br />
key /etc/openvpn/keys/client1.key<br />
log-append /var/log/openvpn.log<br />
verb 3<br />
user  nobody<br />
daemon<br />
</em><br />
перезапускаем сервис на клиенте /etc/init.d/openvpn restart</p>
<p>смотрим ifconfig и видем:</p>
<pre>tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00</pre>
<pre>          inet addr:10.1.0.6  P-t-P:10.1.0.5  Mask:255.255.255.255</pre>
<pre>          ВВЕРХ POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1</pre>
<pre>          RX packets:9 errors:0 dropped:0 overruns:0 frame:0</pre>
<pre>          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0</pre>
<pre>          коллизии:0 txqueuelen:100</pre>
<pre>          RX bytes:756 (756.0 B)  TX bytes:756 (756.0 B)</pre>
<p>смотрим ip ro и видем новые маршруты:</p>
<pre>10.1.0.5 dev tun0  proto kernel  scope link  src 10.1.0.6</pre>
<pre>192.168.0.0/24 via 10.1.0.5 dev tun0 #маршрут на сеть за сервером</pre>
<pre>10.1.0.0/24 via 10.1.0.5 dev tun0 #маршрут на сеть клиентов</pre>
<p>вот и всё, подключенные клиенты могут видеть друг друга, а также могут видеть сеть за сервером.<br />
Удачной работы!<br />
© shadow_alone</p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2009/07/28/openvpn-%d1%81-%d1%81%d0%b5%d1%80%d1%82%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%82%d0%b0%d0%bc%d0%b8-x509/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenVPN-объединяем сети</title>
		<link>http://wiki.dodex.org/2009/07/26/openvpn-%d0%be%d0%b1%d1%8a%d0%b5%d0%b4%d0%b8%d0%bd%d1%8f%d0%b5%d0%bc-%d1%81%d0%b5%d1%82%d0%b8/</link>
		<comments>http://wiki.dodex.org/2009/07/26/openvpn-%d0%be%d0%b1%d1%8a%d0%b5%d0%b4%d0%b8%d0%bd%d1%8f%d0%b5%d0%bc-%d1%81%d0%b5%d1%82%d0%b8/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 16:48:37 +0000</pubDate>
		<dc:creator>shad</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=569</guid>
		<description><![CDATA[Имееться 2-е сети в двух офисах 192.168.1.0/24 и 192.168.2.0/24 В качестве маршрутизатора, в одной сети стоит машина с CеntOS, в другой с Debian Задача: создать туннель между маршрутизаторами посредством OpenVPN и настроить маршруты таким образом, чтобы сети за маршрутизаторами видели друг друга. Для примера будем считать что IP на CentOS &#8211; 10.10.11.1, а на Debian [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-468" title="tux" src="http://wiki.dodex.org/wp-content/uploads/2008/12/tux.png" alt="tux" width="100" height="117" />Имееться 2-е сети в двух офисах 192.168.1.0/24 и 192.168.2.0/24<br />
В качестве маршрутизатора, в одной сети стоит машина с CеntOS, в другой с Debian<br />
<strong>Задача</strong>: создать туннель между маршрутизаторами посредством OpenVPN и настроить маршруты таким образом, чтобы сети за маршрутизаторами видели друг друга.</p>
<p><span id="more-569"></span><br />
Для примера будем считать что IP на CentOS &#8211; 10.10.11.1, а на Debian &#8211; 10.10.12.2</p>
<p>И так,<br />
CentOS:<br />
# yum install openvpn<br />
Debian:<br />
# apt-get install openvpn</p>
<p>Далее<br />
CentOS:</p>
<p>сгенерируем KEY<br />
# cd /etc/openvpn<br />
# openvpn &#8211;genkey &#8211;secret office1.key</p>
<p>создадим файл конфигурации office2.conf такого содержания</p>
<p><em>dev  tun<br />
ifconfig 192.168.68.1 192.168.68.2<br />
secret  /etc/openvpn/office1.key<br />
port   1194<br />
proto  udp<br />
comp-lzo<br />
keepalive 10 60<br />
ping-timer-rem<br />
persist-tun<br />
persist-key<br />
user  nobody<br />
daemon<br />
log-append /var/log/openvpn.log<br />
up ./office2_route.up</em></p>
<p>далее создадим там же файл office2_route.up и пропишем в него следующее:</p>
<p><em>#!/bin/sh<br />
route add -net 192.168.2.0 netmask 255.255.255.0 gw $5</em></p>
<p>даём права на выполнение:<br />
# chmod a+x office2_route.up</p>
<p>запускаем /etc/init.d/openvpn start</p>
<p>с настройкой на стороне CentOS мы закончили, петерь переходим к настройкам Debian, предварительно скопировав созданный нами ранее ключь office1.key на машину с Debian.</p>
<p># cp office1.key /etc/openvpn/<br />
# chmod 600 /etc/openvpn/office1.key<br />
# cd /etc/openvpn/<br />
создадим файл конфигурации office1.conf такого содержания</p>
<p><em>remote   10.10.11.1<br />
dev  tun<br />
ifconfig 192.168.68.2 192.168.68.1<br />
secret  /etc/openvpn/office1.key<br />
port   1194<br />
proto  udp<br />
comp-lzo<br />
keepalive 10 60<br />
ping-timer-rem<br />
persist-tun<br />
persist-key<br />
user  nobody<br />
daemon<br />
log-append /var/log/openvpn.log<br />
up ./office1_route.up</em></p>
<p>далее создадим там же файл office1_route.up и пропишем в него следующее:</p>
<p><em>#!/bin/sh<br />
route add -net 192.168.1.0 netmask 255.255.255.0 gw $5<br />
</em><br />
даём права на выполнение:<br />
# chmod a+x office1_route.up</p>
<p>запускаем /etc/init.d/openvpn start</p>
<p>теперь можем посмотреть вывод ifconfig на обоих маршрутизаторах:</p>
<p>tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00<br />
inet addr:192.168.68.2  P-t-P:192.168.68.1  Mask:255.255.255.255<br />
ВВЕРХ POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1<br />
RX packets:0 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0<br />
коллизии:0 txqueuelen:100<br />
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)</p>
<p>дальше попробуйте пропиговать из одной сети, машину в другой сети, результат должен быть положительный. Если вдруг что-то пошло ни так, смотреть /var/log/openvpn.log с обоих сторон.</p>
<p>Ну вот и всё, задача решена, буквально за 5-10 минут.</p>
<p>Удачи в настройках!</p>
<p>© shadow_alone</p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2009/07/26/openvpn-%d0%be%d0%b1%d1%8a%d0%b5%d0%b4%d0%b8%d0%bd%d1%8f%d0%b5%d0%bc-%d1%81%d0%b5%d1%82%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPsec &#8211; LinuxLinux</title>
		<link>http://wiki.dodex.org/2009/06/05/ipsec-linuxlinux/</link>
		<comments>http://wiki.dodex.org/2009/06/05/ipsec-linuxlinux/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 06:50:51 +0000</pubDate>
		<dc:creator>shad</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=546</guid>
		<description><![CDATA[Соединение по ipsec двух серверов Linux RH, с другими не эксперементировал, ибо на серверах на 90% использую CentOS. На Debian-подобных дистрах, настройка несколько иная. Будем делать ipsec по ключу. Настройки для одной стороны, для второй все идентично. vim /etc/sysconfig/network-scripts/ifcfg-ipsec0 DST=X.X.X.X TYPE=IPSEC ONBOOT=yes IKE_METHOD=PSK vim /etc/sysconfig/network-scripts/keys-ipsec0 IKE_PSK=VeryPipecKey chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0 далее, нас интересует: /etc/racoon/racoon.conf /etc/racoon/X.X.X.X.conf vim [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-468" title="tux" src="http://wiki.dodex.org/wp-content/uploads/2008/12/tux.png" alt="tux" width="100" height="117" /> Соединение по ipsec двух серверов Linux RH, с другими не эксперементировал, ибо на серверах на 90% использую CentOS. На Debian-подобных дистрах, настройка несколько иная.</p>
<p>Будем делать ipsec по ключу.<br />
Настройки для одной стороны, для второй все идентично.</p>
<p><span id="more-546"></span></p>
<p><em>vim /etc/sysconfig/network-scripts/ifcfg-ipsec0<br />
</em></p>
<p><strong>DST=X.X.X.X<br />
TYPE=IPSEC<br />
ONBOOT=yes<br />
IKE_METHOD=PSK</strong></p>
<p><em>vim /etc/sysconfig/network-scripts/keys-ipsec0</em></p>
<p><strong>IKE_PSK=VeryPipecKey</strong></p>
<p><em>chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0</em></p>
<p>далее, нас интересует:<br />
/etc/racoon/racoon.conf<br />
/etc/racoon/X.X.X.X.conf</p>
<p><em>vim /etc/racoon/X.X.X.X.conf</em></p>
<p><strong>remote X.X.X.X<br />
{<br />
exchange_mode aggressive, main;<br />
my_identifier address;<br />
proposal {<br />
encryption_algorithm 3des;<br />
hash_algorithm sha1;<br />
authentication_method pre_shared_key;<br />
dh_group 2 ;<br />
}<br />
}<br />
</strong><br />
<em>vim /etc/racoon/racoon.conf</em></p>
<p><strong>path include &#8220;/etc/racoon&#8221;;<br />
path pre_shared_key &#8220;/etc/racoon/psk.txt&#8221;;<br />
path certificate &#8220;/etc/racoon/certs&#8221;;</strong></p>
<p><strong>sainfo anonymous<br />
{<br />
pfs_group 2;<br />
lifetime time 1 hour ;<br />
encryption_algorithm 3des, blowfish 448, rijndael ;<br />
authentication_algorithm hmac_sha1, hmac_md5 ;<br />
compression_algorithm deflate ;<br />
}<br />
include &#8220;/etc/racoon/X.X.X.X.conf&#8221;</strong></p>
<p>На второй стороне делаем тоже самое и<br />
<em>/sbin/ifup ipsec0</em></p>
<p>теперь можем проверить, скажем, запустим пинг с одного узла на другой и<br />
<em>tcpdump -n -i eth0 host X.X.X.X</em><br />
должны увидеть в заголовках <strong>AH</strong> и <strong>ESP</strong>, если видите, то все в порядке, весь траффик между узлами шифруется.</p>
<p>то есть, если мы теперь поднимем тунель между узлами и настроит рутинг между сетями находящимися за узлами, то весь трафик будет шифроваться.</p>
<p>Теперь посложнее &#8211; необходимо объединить две сети по ipsec без поднятия тунеля, или например соединить сеть за Linux с сетью за Cisco ASA(не поддерживает GRE).</p>
<p><em>vim /etc/sysconfig/network-scripts/ifcfg-ipsec0</em></p>
<p><strong>DST=X.X.X.X<br />
TYPE=IPSEC<br />
ONBOOT=yes<br />
IKE_METHOD=PSK<br />
SRCGW=192.168.10.1<br />
DSTGW=192.168.20.1<br />
SRCNET=192.168.10.0/24<br />
DSTNET=192.168.20.0/24</strong></p>
<p>надеюсь пояснения не нужны.<br />
<strong>SRCGW</strong> &#8211; свой внутренний адрес<br />
<strong>SRCNET</strong> &#8211; своя локальная сеть<br />
<strong>DSTGW</strong> &#8211; внутренний адрес удаленного узла<br />
<strong>DSTNET</strong> &#8211; локальная сеть удаленного узла</p>
<p>Удачи в настройках!</p>
<p>© shadow_alone</p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2009/06/05/ipsec-linuxlinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Конфигурация cisco-рутера в качестве pptp-клиента</title>
		<link>http://wiki.dodex.org/2009/06/05/%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d1%8f-cisco-%d1%80%d1%83%d1%82%d0%b5%d1%80%d0%b0-%d0%b2-%d0%ba%d0%b0%d1%87%d0%b5%d1%81%d1%82%d0%b2%d0%b5-pptp-%d0%ba%d0%bb%d0%b8/</link>
		<comments>http://wiki.dodex.org/2009/06/05/%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d1%8f-cisco-%d1%80%d1%83%d1%82%d0%b5%d1%80%d0%b0-%d0%b2-%d0%ba%d0%b0%d1%87%d0%b5%d1%81%d1%82%d0%b2%d0%b5-pptp-%d0%ba%d0%bb%d0%b8/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 06:06:19 +0000</pubDate>
		<dc:creator>shad</dc:creator>
				<category><![CDATA[Cisco]]></category>
		<category><![CDATA[ms-chap]]></category>
		<category><![CDATA[pptp]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=540</guid>
		<description><![CDATA[И так, все просто, даж очень, главное знать что есть такая скрытая команда service internal , по &#8220;?&#8221; не отображается. Собственно, выкладываю куски конфигов: vpdn enable ! vpdn-group 1 request-dialin protocol pptp rotary-group 0 initiate-to ip адрес_куда_коннектимся ! interface Dialer0 mtu 1450 ip address negotiated ip pim dense-mode ip nat outside ip virtual-reassembly encapsulation ppp [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-498" title="cisco" src="http://wiki.dodex.org/wp-content/uploads/2009/03/cisco.gif" alt="cisco" width="110" height="73" /> И так, все просто, даж очень, главное знать что есть такая скрытая команда <em>service internal</em> , по &#8220;?&#8221; не отображается.</p>
<p>Собственно, выкладываю куски конфигов:</p>
<p><span id="more-540"></span></p>
<p><em>vpdn enable</em><br />
!<br />
<em>vpdn-group 1<br />
request-dialin<br />
protocol pptp<br />
rotary-group 0<br />
initiate-to ip адрес_куда_коннектимся</em><br />
!</p>
<p><em>interface Dialer0<br />
mtu 1450<br />
ip address negotiated<br />
ip pim dense-mode<br />
ip nat outside<br />
ip virtual-reassembly<br />
encapsulation ppp<br />
ip route-cache flow<br />
dialer in-band<br />
dialer idle-timeout 0<br />
dialer string 123<br />
dialer vpdn<br />
dialer-group 1<br />
no keepalive<br />
no cdp enable<br />
ppp pfc local request<br />
ppp pfc remote apply<br />
ppp encrypt mppe auto<br />
ppp chap hostname логин<br />
ppp chap password пароль</em></p>
<p>Вот, в принципе, и всё.</p>
<p>если надо, то делаем маршрут по умолчанию через это соединение:</p>
<p><em>ip route 0.0.0.0 0.0.0.0 Dialer0</em></p>
<p>Удачной всем настройки!</p>
<p>© shadow_alone</p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2009/06/05/%d0%ba%d0%be%d0%bd%d1%84%d0%b8%d0%b3%d1%83%d1%80%d0%b0%d1%86%d0%b8%d1%8f-cisco-%d1%80%d1%83%d1%82%d0%b5%d1%80%d0%b0-%d0%b2-%d0%ba%d0%b0%d1%87%d0%b5%d1%81%d1%82%d0%b2%d0%b5-pptp-%d0%ba%d0%bb%d0%b8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VPN-сервер</title>
		<link>http://wiki.dodex.org/2009/03/28/vpn-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80/</link>
		<comments>http://wiki.dodex.org/2009/03/28/vpn-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 09:42:25 +0000</pubDate>
		<dc:creator>shad</dc:creator>
				<category><![CDATA[Cisco]]></category>
		<category><![CDATA[ms-chap]]></category>
		<category><![CDATA[pptp]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=525</guid>
		<description><![CDATA[В догонку к предыдущему посту про VPN-сервер на Linux, приведу пример на cisco. Приведу только куски конфигов необходимых  для функционирования VPN добавляем aaa authentication ppp default local vpdn enable vpdn-group 1 accept-dialin protocol pptp virtual-template 1 username test1 privilege 0 password 123456 interface Loopback0 ip address 10.5.5.1 255.255.255.0 ip nat inside access-list 25 permit 10.5.5.0 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-498" title="cisco" src="http://wiki.dodex.org/wp-content/uploads/2009/03/cisco.gif" alt="cisco" width="110" height="73" /> В догонку к предыдущему посту про VPN-сервер на Linux, приведу пример на cisco. Приведу только куски конфигов необходимых  для функционирования VPN</p>
<p><span id="more-525"></span>добавляем</p>
<p><em>aaa authentication ppp default local</em></p>
<p><em>vpdn enable<br />
vpdn-group 1<br />
accept-dialin<br />
protocol pptp<br />
virtual-template 1</em></p>
<p><em>username test1 privilege 0 password 123456</em></p>
<p><em>interface Loopback0<br />
ip address 10.5.5.1 255.255.255.0<br />
ip nat inside</em></p>
<p><em>access-list 25 permit 10.5.5.0 0.0.0.255</em></p>
<p><em>ip nat inside source list 25 interface Ethernet0/0 overload</em> &#8211; интерфейс который смотрит в локалку для доступа во внутреннюю сеть, или который смотрит в инет, для доступа в инет. На этом же интерфейсе &#8211; <em>ip nat outside</em>.</p>
<p><em>ip local pool pptppool 10.5.5.2 10.5.5.10<br />
</em></p>
<p><em>interface Virtual-Template1<br />
ip unnumbered Loopback0<br />
ip nat inside<br />
peer default ip address pool pptppool<br />
no keepalive<br />
ppp encrypt mppe auto<br />
ppp authentication ms-chap-v2</em></p>
<p>вот, в принципе и все. виндовые клиенты подключаються по дефолту на ура.</p>
<p>© shadow_alone</p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2009/03/28/vpn-%d1%81%d0%b5%d1%80%d0%b2%d0%b5%d1%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LAN-2-LAN ipsec vpn gre</title>
		<link>http://wiki.dodex.org/2008/11/30/lan-2-lan-ipsec-vpn-gre/</link>
		<comments>http://wiki.dodex.org/2008/11/30/lan-2-lan-ipsec-vpn-gre/#comments</comments>
		<pubDate>Sun, 30 Nov 2008 13:07:19 +0000</pubDate>
		<dc:creator>shad</dc:creator>
				<category><![CDATA[Cisco]]></category>
		<category><![CDATA[gre]]></category>
		<category><![CDATA[lan2lan]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://wiki.dodex.org/?p=431</guid>
		<description><![CDATA[Заметка будет практического характера. Рассчитано на тех, кто уже знаком с общей теорией работы ipsec и примерами построения туннелей. Итак, построение статического туннеля. Все пакеты подлежащие шифрованию будут инкапсулироваться в gre туннель и  потом в ipsec . 1. Тунель Адресация сети выглядит следующим образом. Внутренняя сеть А: 192.168.1.0/24 Внутренняя сеть Б: 192.168.2.0/24 Внешний интерфейс А: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wiki.dodex.org/wp-content/uploads/2008/11/cisco.gif"><img class="alignleft size-full wp-image-433" title="cisco" src="http://wiki.dodex.org/wp-content/uploads/2008/11/cisco.gif" alt="" width="110" height="73" /></a><span style="font-size: 100%;"><span style="font-family: verdana;"> Заметка будет практического характера. </span></span><span style="font-size: 100%;"><span style="font-family: verdana;">Рассчитано на тех, кто уже знаком с </span><span style="font-family: verdana;">общей теорией работы ipsec</span><span style="font-family: verdana;"> и </span><span style="font-family: verdana;">примерами построения туннелей</span><span style="font-family: verdana;">. </span></span><span style="font-size: 100%;"><span style="font-family: verdana;">Итак, построение статического туннеля. </span></span><span style="font-size: 100%;"><span style="font-family: verdana;">Все пакеты подлежащие шифрованию будут инкапсулироваться в <strong>gre</strong> туннель и  потом в <strong>ipsec</strong> . </span></span></p>
<p><span id="more-431"></span></p>
<p><strong>1. Тунель</strong></p>
<p><span style="font-size: 100%;"><span style="font-family: verdana;">Адресация сети выглядит следующим образом.</span></span></p>
<p><em><span style="font-family: verdana;">Внутренняя сеть А: 192.168.1.0/24</span><br />
<span style="font-family: verdana;">Внутренняя сеть Б: 192.168.2.0/24</span></em></p>
<p><em><span style="font-size: 100%;"><span style="font-family: verdana;">Внешний интерфейс А: 10.10.11.2/24</span><br />
<span style="font-family: verdana;">Внешний интерфейс Б: 10.10.10.2/24</span></span></em></p>
<p><span style="font-size: 100%;"><span style="font-family: verdana;">Необходимо установить туннель между внешними интерфейсами маршрутизаторов, в данном случае 10.10.11.2 и 10.10.10.2.</span></span></p>
<p><span style="font-size: 100%;"><span style="font-family: verdana;">Минимальные параметры настройки:</span><br />
</span></p>
<ul>
<li><span style="font-size: 100%;"><span style="font-family: verdana;">каждый туннель &#8220;привязывается&#8221; к конкретному физическому интерфейсу, в данном случае это FastEthernet 1/0.</span></span></li>
<li><span style="font-size: 100%;"><span style="font-family: verdana;">поскольку это layer 3 соединения, необходима ip адресация. Для уменьшения путаницы с &#8220;лишними&#8221; адресами будем использовать адреса физических интерфейсов.</span></span></li>
<li><span style="font-size: 100%;"><span style="font-family: verdana;">раз есть у туннеля начало, значит еть где-то и конец (Указание второго пира, также обязательный параметр).</span></span></li>
</ul>
<p><span style="font-size: 100%;"><span style="font-family: verdana;">Здесь приведена конфигурация только одной стороны туннеля, другая сторона конфигурируется идентично за исключением адреса пира.</span></span></p>
<p>! пример конфигурации gre туннеля<br />
<em>RouterA(config)# interface Tunnel10<br />
RouterA(config-if)# tunnel source FastEthernet1/0<br />
RouterA(config-if)# tunnel destination 10.10.10.2<br />
RouterA(config-if)# ip unnumbered FastEthernet1/0</em></p>
<p><span style="font-size: 100%; font-family: verdana;">Туннель поднят, но по нему еще ничего не ходит. Сделаем рутинг для сетей </span><span style="font-size: 100%; font-family: verdana;">192.168.1.0/24 и 192.168.2.0/24, соответственно в сторону туннеля.</span></p>
<p>!рутинг в туннель<br />
<em>RouterA(config)# ip route 192.168.2.0 255.255.255.0 Tunnel10</em></p>
<p><span style="font-size: 100%; font-family: Courier New;"><span><span style="font-family: Verdana;">Для рутера Б, нужно завернуть сеть </span></span></span><span style="font-size: 100%; font-family: verdana;">192.168.1.0/24. </span><span style="font-size: 100%; font-family: verdana;">Внутренние сети находящиеся за рутерами стали видить друг друга.</span></p>
<p>!простейшая проверка &#8211; ping<br />
<em>RouterA#ping<br />
Protocol [ip]:<br />
Target IP address: 192.168.2.1<br />
Repeat count [5]:<br />
Datagram size [100]:<br />
Timeout in seconds [2]:<br />
Extended commands [n]: y<br />
Source address or interface: 192.168.1.1<br />
Type of service [0]:<br />
Set DF bit in IP header? [no]:<br />
Validate reply data? [no]:<br />
Data pattern [0xABCD]:<br />
Loose, Strict, Record, Timestamp, Verbose[none]:<br />
Sweep range of sizes [n]:<br />
Type escape sequence to abort.<br />
Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:<br />
Packet sent with a source address of 192.168.1.1<br />
!!!!!<br />
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/61/104 ms</em></p>
<p><span style="font-size: 100%;"><span style="font-family: verdana;">Пинг проходит успешно. </span></span><span style="font-size: 100%;"><span style="font-family: verdana;">Можно посмотреть, что внутри туннеля, для этого используется PIX с </span><span style="font-family: verdana;">настроенным capture.</span></span></p>
<p>!sniff<br />
<em>pix# show cap anyin<br />
10 packets captured<br />
1: 16:01:56.004577 10.10.11.2 &gt; 10.10.10.2: ip-proto-47, length 104<br />
2: 16:01:56.024870 10.10.10.2 &gt; 10.10.11.2: ip-proto-47, length 104<br />
(skip)<br />
9: 16:01:56.232715 10.10.11.2 &gt; 10.10.10.2: ip-proto-47, length 104<br />
10: 16:01:56.249163 10.10.10.2 &gt; 10.10.11.2: ip-proto-47, length 104<br />
10 packets shown</em></p>
<p><span style="font-size: 100%;"><span style="font-family: verdana;">Туннель работает нормально. Протокол 47 стека IP  есть <strong>gre</strong>.</span></span></p>
<p><strong>2. Шифрование</strong></p>
<p>Нужно изменить crypto acl определяющий какой трафик подлежит шифрованию. Сниффер нам показал только gre пакеты между двумя пирами, шифровать будем их.</p>
<p>!crypto acl, они должны быть зеркальны с обоих сторон<br />
<em>RouterA(config)# access-list 150 permit gre host 10.10.11.2 host 10.10.10.2</em></p>
<p>isakmp, crypto map и прочее настраиваются совершенно идентично. Приведем кусок конфигурации рутера А.</p>
<p>!пример конфигурации<br />
<em>!<br />
crypto isakmp policy 200<br />
encr aes 256<br />
authentication pre-share<br />
group 2<br />
lifetime 7200<br />
crypto isakmp key sUpeRkEy address 10.10.10.2<br />
!<br />
crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac<br />
!<br />
crypto map cr_outside 10 ipsec-isakmp<br />
set peer 10.10.10.2<br />
set transform-set ts-aes-sha<br />
match address 110<br />
!<br />
interface Tunnel10<br />
ip unnumbered FastEthernet1/0<br />
tunnel source FastEthernet1/0<br />
tunnel destination 10.10.10.2<br />
!<br />
interface FastEthernet1/0<br />
ip address 10.10.11.2 255.255.255.0<br />
crypto map cr_outside<br />
!<br />
ip route 192.168.2.0 255.255.255.0 Tunnel10<br />
!<br />
access-list 110 permit gre host 10.10.11.2 host 10.10.10.2<br />
!</em></p>
<p>!Тестирование с помощью ping.<br />
<em>pix# show capture anyin<br />
17 packets captured<br />
1: 15:33:57.516788 10.10.11.2.500 &gt; 10.10.10.2.500: udp 144<br />
2: 15:33:57.741477 10.10.10.2.500 &gt; 10.10.11.2.500: udp 104<br />
3: 15:33:57.911284 10.10.11.2.500 &gt; 10.10.10.2.500: udp 304<br />
4: 15:33:58.126153 10.10.10.2.500 &gt; 10.10.11.2.500: udp 304<br />
5: 15:33:58.186025 10.10.11.2.500 &gt; 10.10.10.2.500: udp 108<br />
6: 15:33:58.206059 10.10.10.2.500 &gt; 10.10.11.2.500: udp 76<br />
7: 15:33:58.219852 10.10.11.2.500 &gt; 10.10.10.2.500: udp 172<br />
8: 15:33:58.259401 10.10.10.2.500 &gt; 10.10.11.2.500: udp 172<br />
9: 15:33:58.268388 10.10.11.2.500 &gt; 10.10.10.2.500: udp 60<br />
10: 15:33:59.395807 10.10.11.2 &gt; 10.10.10.2: ip-proto-50, length 164<br />
11: 15:33:59.444541 10.10.10.2 &gt; 10.10.11.2: ip-proto-50, length 164<br />
(skip)<br />
17: 15:33:59.556703 10.10.10.2 &gt; 10.10.11.2: ip-proto-50, length 164<br />
17 packets shown</em></p>
<p>Конфигурация работает, трафик шифруется.<br />
Первые 9 пакетов &#8211; обмен udp пакетами по 500 порту, isakmp при установлении sa. Дальше обмен пакетами протокола 50 стека IP, ipsec.</p>
<p>© shadow_alone</p>
]]></content:encoded>
			<wfw:commentRss>http://wiki.dodex.org/2008/11/30/lan-2-lan-ipsec-vpn-gre/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

