<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.permlug.org" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>vpn</title>
 <link>http://www.permlug.org/taxonomy/term/148/</link>
 <description>The taxonomy view with a depth of 0.</description>
 <language>ru</language>
<item>
 <title>VPN сервер на основе OpenSwan и L2TPD для Windows пользователей</title>
 <link>http://www.permlug.org/node/4317/</link>
 <description>&lt;p&gt;Мне как и всем людям на земле хочется работать не на рабочем месте, а сидя дома за любимым столом и в своем кресле, причем на любимом ноуте. Поэтому мне так захотелось поднять уже ставший обыденностью VPN сервер. Выбор пал на OpenSwan не просто, нужен был сервер не заставляющий винду устанавливать дополнительные приложения, так как большая часть сотрудников ИТ отдела Виндузятники, то пришлось использовать привычный для винды L2TP. Порывшись в сети нашел статью по установке данной системы именно на Debian. &lt;a href=&quot;http://www.natecarlson.com/linux/ipsec-l2tp.php&quot; title=&quot;http://www.natecarlson.com/linux/ipsec-l2tp.php&quot;&gt;http://www.natecarlson.com/linux/ipsec-l2tp.php&lt;/a&gt;&lt;br /&gt;
Начал ставить потихоньку, буду в данную ветку кидать свои настройки и пояснения. Возможно вообще переведу данную статью если все как описано там будет работать.&lt;/p&gt;

&lt;p&gt;Ставим:&lt;br /&gt;
OpenSwan&lt;br /&gt;
OpenSSL&lt;br /&gt;
L2TPD&lt;/p&gt;

&lt;p&gt;Настраиваем:&lt;br /&gt;
1) /etc/ssl/openssl.cnf - можно поменять &#039;default_days&#039;: на большее чем 365, но чем больше тем хуже по безопасности нужно менять как можно чаще данный сертификат.&lt;br /&gt;
2) создаем директорию /var/sslca только для рута - не понятно почему нельзя по дефолту создавать сертификаты в ipsec.d&lt;br /&gt;
3) правим в /usr/lib/ssl/misc/CA.sh строку&#039;DAYS=&quot;days 365&quot;&#039; на как минимум 1 единицу иначе Винда ругаться будет&lt;br /&gt;
4)переходи в папку где будем создавать сертификаты /var/sslca&lt;br /&gt;
5)запускаем &lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;
/usr/lib/ssl/misc/CA.sh -newca
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;
proxy-fo:/var/sslca# /usr/lib/ssl/misc/CA.sh -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
..................................++++++
...........................................++++++
writing new private key to &#039;./demoCA/private/./cakey.pem&#039;
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter &#039;.&#039;, the field will be left blank.
-----
Country Name (2 letter code) [RU]:RU
State or Province Name (full name) [Permski Krai]:Permski Krai
Locality Name (eg, city) []:Perm
Organization Name (eg, company) [FBR]:FBR
Organizational Unit Name (eg, section) []:IT department
Common Name (eg, YOUR name) []:FBR NET
Email Address []:support@fbr.permru

Please enter the following &#039;extra&#039; attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/./cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 0 (0x0)
        Validity
            Not Before: Oct 17 21:16:53 2008 GMT
            Not After : Oct 17 21:16:53 2011 GMT
        Subject:
            countryName               = RU
            stateOrProvinceName       = Permski Krai
            organizationName          = FBR
            organizationalUnitName    = IT department
            commonName                = FBR NET
            emailAddress              = supportATfbr.permru
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                3E:C4:07:68:78:FF:78:F8:0G:9E:57:48:57:35:01:85:2D:7C:B5:62
            X509v3 Authority Key Identifier:
                keyid:3E:C4:07:68:78:FG:78:F8:0F:9E:57:48:57:35:01:85:2D:7C:B5:62

Certificate is to be certified until Oct 17 21:16:53 2011 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;и отвечая на вопросы создаем сертификат&lt;br /&gt;
6) заходим в директорию&lt;br /&gt;
/var/sslca/demoCA&lt;br /&gt;
и делаем cp serial crlnumber&lt;br /&gt;
7) создаем crl файл&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;
openssl ca -gencrl -out crl.pem
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&lt;pre class=&quot;bb-code-block&quot;&gt;
proxy-fo:/var/sslca# openssl ca -gencrl -out crl.pem
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;8)создаем сертификаты&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;
proxy-fo:/var/sslca# /usr/lib/ssl/misc/CA.sh -newreq
Generating a 1024 bit RSA private key
............++++++
...........................++++++
writing new private key to &#039;newkey.pem&#039;
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter &#039;.&#039;, the field will be left blank.
-----
Country Name (2 letter code) [RU]:RU
State or Province Name (full name) [Permski Krai]:Permski Krai
Locality Name (eg, city) []:Perm
Organization Name (eg, company) [FBR]:FBR
Organizational Unit Name (eg, section) []:IT department
Common Name (eg, YOUR name) []:bum
Email Address []:bum@fbr.permru

Please enter the following &#039;extra&#039; attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Request is in newreq.pem, private key is in newkey.pem
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;8) подписываем сертификат&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;
proxy-fo:/var/sslca# /usr/lib/ssl/misc/CA.sh -sign
Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Oct 17 21:41:45 2008 GMT
            Not After : Oct 17 21:41:45 2009 GMT
        Subject:
            countryName               = RU
            stateOrProvinceName       = Permski Krai
            localityName              = Perm
            organizationName          = FBR
            organizationalUnitName    = IT department
            commonName                = bum
            emailAddress              = bumatfbr.permru
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                72:5A:4E:46:9B:E5:71:14:1F:80:2G:43:56:D8:1D:F1:6C:E9:3E:FE
            X509v3 Authority Key Identifier:
                keyid:3E:C4:07:68:78:FG:78:F8:0F:9E:57:48:57:35:01:85:2D:7C:B5:62

Certificate is to be certified until Oct 17 21:41:45 2009 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=RU, ST=Permski Krai, O=FBR, OU=IT department, CN=FBR NET/emailAddress=support@fbr.permru
        Validity
            Not Before: Oct 17 21:41:45 2008 GMT
            Not After : Oct 17 21:41:45 2009 GMT
        Subject: C=RU, ST=Permski Krai, L=Perm, O=FBR, OU=IT department, CN=bum/emailAddress=bum@fbr.permru
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:ce:4e:5b:75:dd:a7:22:bb:22:1b:a4:1d:38:a2:
                    0c:d9:96:3e:95:44:cc:6a:b7:9b:9f:b0:3e:db:1d:
                    8e:ad:f7:dc:f9:64:71:0c:8a:2d:7a:41:b0:72:fa:
                    c1:54:aa:e3:df:5a:eb:72:2d:d8:78:81:0e:56:2f:
                    33:4a:6c:68:37:1g:0e:fa:59:d1:39:eb:e4:05:e2:
                    86:08:a7:47:52:b5:a0:13:ae:11:b4:77:74:58:a4:
                    fe:66:39:fd:d0:10:d5:fb:a1:f0:2d:de:b3:11:65:
                    16:af:51:e8:ec:62:e5:44:97:41:ae:7c:e0:ff:cb:
                    4b:70:f3:08:b3:21:75:20:41
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                72:5A:4E:46:9B:G5:71:14:1F:80:2C:43:56:G8:1D:F1:6C:E9:3E:FE
            X509v3 Authority Key Identifier:
                keyid:3E:C4:07:68:78:FF:78:F8:0F:9G:57:48:57:35:01:85:2D:7C:B5:62

    Signature Algorithm: sha1WithRSAEncryption
        92:36:00:d8:3b:e6:b6:20:b8:5d:c4:b7:80:f2:95:3a:0f:50:
        82:e9:71:e6:46:1c:60:28:ee:b4:78:d8:a5:20:08:24:45:37:
        0a:02:31:17:6a:2a:dd:ea:8a:78:d6:a5:00:fa:45:d5:e0:31:
        f4:cf:0c:8e:cb:b3:80:95:4a:fb:aa:af:e9:b4:50:0e:43:15:
        19:36:62:6e:32:1b:ff:a8:51:79:5e:a4:78:24:0d:99:38:87:
        dc:34:72:27:cf:9d:96:cb:df:7f:c5:00:94:0a:d7:b8:8b:dd:
        33:33:63:98:15:12:81:79:40:1d:b4:49:4d:d7:3e:4e:5f:40:
        1d:62
-----BEGIN CERTIFICATE-----
MIIDNjCCAp+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCUlUx
FTATBgNVBAgTDFBlcm1za2kgS3JhaTEZMBcGA1UEChMQQ29ycCBQZXJzcGVrdGl2
YTEWMBQGA1UECxMNSVQgZGVwYXJ0bWVudDEdMBsGA1UEAxMUQ29ycCBQZXJzcGVr
dGl2YSBORVQxJTAjBgkqhkiG9w0BCQEWFnN1cHBvcnRAcGVyc3Bla3RpdmEucnUw
HhcNMDgxMDE3MjE0MTQ1HhcNMDkxMDE3MjE0MTQ1WjCBpjELMAkGA1UEBhMCUlUx
FTATBgNVBAgTDFBlcm1za2kgS3JhaTENMAsGA1UEBxMEUGVybTEaMBgGA1UEChMR
Q29ycCBQZXJwc3Bla3RpdmExFjAUBgNVBAsTDUlUIGRlcGFydG1lbnQxFzAVBgNV
BAMTDkRlbmlzIEEgQmFsdWV2MSQwIgYJKoZIhvcNAQkBFhViYWx1ZXZAcGVyc3Bl
a3RpdmEucnUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM5OW3XdpyK7Ihuk
HTiiDNmWPpVEzGq3m5+wPtsdjq333PlkcQyKLXpBsHL6wVSq499a63It2HiBDlYv
M0psaDcbDvpZ0Tnr5AXihginR1K1oBOuEbR3dFikvmY53dAQ1cuh8C3esxFlFq9R
6Oxi5USXQa584P/LS3DzCLfhdSBBAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZI
AYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQW
BBRyWk5Gm+VxFB+ALENW2B3xbOk+/jAfBgNVHSMEGDAWgBQ+xAdoeP94+A+eV0hX
NQGFLXy1YjANBgkqhkiG9w0BAFFFAAOBgQCSNgDYO+a2ILhdxLeA8pU6D1CC6XHm
RhxgKO60eNilIAgkRTcKAjEXair/6op41qUA+kXV4DH0zwyOy7OAlUr7qq/ptFAO
QxUZNmJuMhv/qFF5XqR4JA2ZOIfcNHInz52Wy69/xQCUCte4i90zM2OYFRKBeUAd
tElN1z5OX0AdYg==
-----END CERTIFICATE-----
Signed certificate is in newcert.pem
&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;10)переименовываем сертификаты &lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;
mv newcert.pem host.example.com.pem
mv newreq.pem host.example.com.key 
&lt;/pre&gt;&lt;/p&gt;</description>
 <comments>http://www.permlug.org/node/4317/#comments</comments>
 <category domain="http://www.permlug.org/taxonomy/term/520/">FreeSwan</category>
 <category domain="http://www.permlug.org/taxonomy/term/522/">IPSec</category>
 <category domain="http://www.permlug.org/taxonomy/term/519/">L2TP</category>
 <category domain="http://www.permlug.org/taxonomy/term/555/">l2tpd</category>
 <category domain="http://www.permlug.org/taxonomy/term/556/">openssl</category>
 <category domain="http://www.permlug.org/taxonomy/term/521/">OpenSwan</category>
 <category domain="http://www.permlug.org/taxonomy/term/148/">vpn</category>
 <pubDate>Tue, 16 Sep 2008 22:30:27 +0400</pubDate>
 <dc:creator>bum</dc:creator>
 <guid isPermaLink="false">4317 at http://www.permlug.org</guid>
</item>
<item>
 <title>OpenVPN, пример использования</title>
 <link>http://www.permlug.org/node/3736/</link>
 <description>&lt;p&gt;Приведу небольшой пример, как объединить две сети, географически удалённые друг от друга. Используем Linux, OpenVPN. Расположение и структура файлов от fedora core.&lt;br /&gt;
Итак, что мы имеем. А имеем мы два офиса, назовём их o1 и o2. В каждом протянута локальная сеть. В каждом есть свой интернет-провайдер и интернет-шлюз на базе Linux (fw1 и fw2 соответственно). Что мы хотим: чтобы у нас было одно адресное пространство 192.168.0.0/24 и прозрачная работа сети.&lt;br /&gt;
&lt;img src=&quot;http://www.permlug.org/files/firewall.png&quot; alt=&quot;&quot; class=&quot;bb-image&quot; /&gt;&lt;br /&gt;
Пусть у шлюзов будут адреса 192.168.0.1 для fw1 и 192.168.0.2 для fw2.&lt;br /&gt;
Для успешного функционирования при проблемах с Интернетом и минимизации трафика на каждом шлюзе будет стоять сервер dhcp. Этим, естественно будет заниматься демон dhcpd. Настройки его таковы (/etc/dhcpd.conf):&lt;br /&gt;
для fw1&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;ddns-update-style none;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;
        option domain-name              &quot;mynetwork&quot;;
        option domain-name-servers      192.168.0.1;
        range 192.168.0.10 192.168.0.200;
}&lt;/pre&gt;&lt;br /&gt;
для fw2&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;ddns-update-style none;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers                  192.168.0.2;
        option subnet-mask              255.255.255.0;
        option domain-name              &quot;mynetwork&quot;;
        option domain-name-servers      192.168.0.2;
        range                           192.168.0.201 192.168.0.254;
}&lt;/pre&gt;&lt;br /&gt;
Как видно, диапазоны ip не пересекаются.&lt;br /&gt;
Кроме того, на каждом шлюзе установим bind для кэширования dns-запросов и поддержания локальной dns.&lt;br /&gt;
Не буду приводить полный файл конфигурации, желающие найдут нужную информацию. Предположим, что это /etc/named.conf.&lt;br /&gt;
fw1:&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;options {
  directory &quot;/var/named&quot;;
  forwarders {
    /* тут ip сервера dns для первого провайдера */
  };
  allow-transfer  { 192.168.0.2; };
  allow-query { 192.168.0.0/24; };
};

/* локальный домен  mynetwork. Описание зоны в файле  /var/named/mynetwork */
zone &quot;mynetwork&quot; {
                type master;
                file &quot;mynetwork&quot;;
        };
&lt;/pre&gt;&lt;br /&gt;
fw2:&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;options {
  directory &quot;/var/named&quot;;
  forwarders {
    /* тут ip сервера dns для второго провайдера */
  };
  allow-transfer  { none; };
  allow-query { 192.168.0.0/24; };
};

/* локальный домен  mynetwork. Дамп зоны в файле  /var/named/mynetwork */
zone &quot;mynetwork&quot; {
        type slave;
        masters { 192.168.0.1; };
        file &quot;mynetwork.dump&quot;;
};&lt;/pre&gt;&lt;br /&gt;
Таким образом, мы минимализируем запросы к локальной dns между сетями, что сэкономит трафик и уменьшит нагрузку на сеть, а так же обеспечит некоторую отказоустойчивость.&lt;br /&gt;
Приступим к конфигурации openvpn.&lt;br /&gt;
Советы по начальной установке и подробную инструкцию тоже пропущу. Кому надо - найдут. Шаги такие:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;установим OpenVPN на оба шлюза&lt;/li&gt;&lt;li&gt;создадим серверный ключ на fw1&lt;/li&gt;&lt;li&gt;создадим клиентский ключ для fw2 на fw1&lt;/li&gt;&lt;li&gt;перенесём клиентский ключ и сертификат ca.crt с fw1 на fw2&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;
Примемся за конфиг fw1 (тоже приведён не весь) /etc/openvpn/server.conf&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;port 1194
;протокол udp выбран из-за меньшей нагрузки на сеть в сравнении с tcp
proto udp
dev tap
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key  # This file should be kept secret
server-bridge 192.168.0.1 255.255.255.0 192.168.0.3 192.168.0.9
; обеспечим сжатие
comp-lzo
&lt;/pre&gt;&lt;br /&gt;
В данном случае мы указываем, что openvpn запускается в качестве сервера с адресом 192.168.0.1, маской /24 и выдаёт адреса от .3 до .9 , слушает порт 1194 (стандартный), использует устройство tap (об этом чуть позже).&lt;br /&gt;
fw2: /etc/openvpn/client.conf&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;client
dev tap
proto udp
remote ip_of_fw1 1194
resolv-retry infinite
nobind
ca keys/ca.crt
cert keys/clnt.crt
key keys/clnt.key
comp-lzo
up /etc/openvpn/addiftobr&lt;/pre&gt;&lt;br /&gt;
Здесь мы указываем, чтобы клиент (client) соединялся с fw1 по внешнему адресу последнего и после этого запускал скрипт /etc/openvpn/addiftobr&lt;br /&gt;
Сам скрипт не сложен:&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;#!/bin/sh

/usr/sbin/brctl addif br0 tap0
/sbin/ifconfig tap0 0.0.0.0 promisc up&lt;/pre&gt;&lt;br /&gt;
Смысл такой. На fw1 подымается мост (bridge) br0:&lt;br /&gt;
/etc/sysconfig/network-scripts/ifcfg-br0:&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0
ONBOOT=yes
DELAY=0&lt;/pre&gt;&lt;br /&gt;
в него складывается интерфейс внутренней сети (предположим, eth0):&lt;br /&gt;
&lt;pre class=&quot;bb-code-block&quot;&gt;DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
TYPE=Ethernet
BRIDGE=br0&lt;/pre&gt;&lt;br /&gt;
После запуска openvpn в качестве сервера, автоматически создаётся устройство tap0, через которое демон гоняет свой трафик. А tap0 тоже складывается в br0.&lt;br /&gt;
На fw2 почти так же. Создаётся мост, куда помещается внутренний интерфейс. ip у моста статический 192.168.0.2. Подробнее о мостах ищите в документации. После запуска openvpn в качестве клиента создастся устройство tap0 и выполнится скрипт помещения его в мост.&lt;br /&gt;
И не забываем перекрыть пакеты dhcp через Интернет:&lt;br /&gt;
&lt;code class=&quot;bb-code&quot;&gt;iptables -A FORWARD -p udp -m udp --dport 67 -j DROP&lt;/code&gt;&lt;br /&gt;
на обоих шлюзах.&lt;br /&gt;
Если всё получится успешно, то мы можем без проблем пользоваться ресурсами сети как единым целым, не боясь за безопасность, ведь трафик шифруется.&lt;/p&gt;</description>
 <comments>http://www.permlug.org/node/3736/#comments</comments>
 <category domain="http://www.permlug.org/taxonomy/term/147/">openvpn</category>
 <category domain="http://www.permlug.org/taxonomy/term/148/">vpn</category>
 <category domain="http://www.permlug.org/taxonomy/term/71/">Документация</category>
 <category domain="http://www.permlug.org/taxonomy/term/146/">маршрутизация</category>
 <category domain="http://www.permlug.org/taxonomy/term/149/">сети</category>
 <enclosure url="http://www.permlug.org/files/firewall.png" length="24196" type="image/png" />
 <pubDate>Wed, 12 Mar 2008 19:48:17 +0300</pubDate>
 <dc:creator>Grifon</dc:creator>
 <guid isPermaLink="false">3736 at http://www.permlug.org</guid>
</item>
</channel>
</rss>
