<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pegasus-Rider</id>
		<title>Linuxformat - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pegasus-Rider"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Contributions/Pegasus-Rider"/>
		<updated>2026-05-13T19:02:25Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/LXF94:OpenVPN</id>
		<title>LXF94:OpenVPN</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/LXF94:OpenVPN"/>
				<updated>2011-01-09T00:44:07Z</updated>
		
		<summary type="html">&lt;p&gt;Pegasus-Rider: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenVPN за 10 минут ==&lt;br /&gt;
''Технология VPN во многом напоминает перевозку денег в бронированной инкассаторской машине по улицам многолюдного города. Но какую модель следует  выбрать, чтобы ваши ценности не достались злоумышленникам? Спросите у '''Валентина Яценко'''.''&lt;br /&gt;
&lt;br /&gt;
VPN – Virtual Private Network, Виртуальная Частная Сеть – технология, позволяющая соединять между собой локальные сети и отдельные компьютеры, находящиеся на расстоянии тысяч километров друг от друга; подключаться к локальной сети через Интернет, используя шифрованный канал связи, организовывать безопасный туннель для передачи важных данных... Возможности применения VPN безграничны! Вам необходимо соединить офисы в разных концах страны единой сетью, не прокладывая километры кабелей? Вы хотите подключаться к домашней локальной сети из Интернет-кафе? Требуется передать важные данные на большое расстояние без риска утечки информации? Может быть, большинство данных, которые вы передаете через Интернет, составляют тайну, и их необходимо обезопасить? Если вы хотя бы на один вопрос ответили утвердительно, VPN – это именно то, что вам нужно!&lt;br /&gt;
&lt;br /&gt;
=== Шаг 1: Устанавливаем ===&lt;br /&gt;
&lt;br /&gt;
Пакеты с OpenVPN доступны для большинства распространенных дистрибутивов, в том числе для RedHat/Fedora, Mandriva, OpenSUSE, Slackware, Debian и Ubuntu. Если OpenVPN не включен в ваш любимый дистрибутив, попробуйте поискать пакет на http://rpmfind.net (для систем, использующих RPM) или http://linuxpackages.net (Slackware и производные) Наконец, программу можно загрузить в исходных текстах с официального сайта (http://openvpn.net).&lt;br /&gt;
&lt;br /&gt;
Для установки OpenVPN также необходимо установить OpenSSL (http://openssl.org) и liblzo (http://www.oberhumer.com/opensource/lzo), которые есть во многих дистрибутивах. Для работы OpenVPN нужен модуль ядра tun. Он присутствует в большинстве систем, но если команда modrpobe tun завершается с ошибкой «Can’t locale module tun», вам придется пересобрать ядро – о том, как это сделать, подробно рассказано в [[LXF89:Hardcore Linux|LXF89]]. Необходимо включить опцию CONFIG_TUN (Device Drivers –&amp;gt; Network device support –&amp;gt; Universal TUN/TAP device driver support).&lt;br /&gt;
&lt;br /&gt;
Если вы собираетесь использовать OpenVPN постоянно, пропишите модуль tun в /etc/modules для автоматической инициализации при загрузке либо включите его непосредственно в ядро. В противном случае перед запуском OpenVPN вам нужно будет загружать модуль tun самостоятельно (командой modprobe tun). Если вы планируете предоставлять клиентам доступ в Интернет через VPN, необходимо настроить NAT (Network Address Translation - Трансляция сетевых адресов) ). Скорее всего, это уже сделано за вас разработчиками дистрибутива, но на случай возникновения проблем имейте в виду, что нам потребуется опция CONFIG_IP_NF_TARGET_MASQUERADE (Networking –&amp;gt; Networking options –&amp;gt; Network packet filtering –&amp;gt; IP tables support –&amp;gt; Full NAT). Для работы с NAT используется утилита iptables (см. [[LXF87-88:Безопасность|LXF87-88]]), которая, скорее всего, уже установлена в вашей системе. Проверьте это и, в случае необходимости, добавьте ее через менеджер пакетов вашего дистрибутива.&lt;br /&gt;
&lt;br /&gt;
=== Шаг 2: Создаем ключи ===&lt;br /&gt;
&lt;br /&gt;
Итак, OpenVPN установлен. Что дальше? В первую очередь необходимо создать ключи и сертификаты для сервера и клиентов. Скрипты, облегчающие эту задачу, находятся в каталоге easy-rsa (см. врезку «Где же easy-rsa?» внизу).&lt;br /&gt;
&lt;br /&gt;
В первую очередь, отредактируйте расположенный в нем файл vars. Установите значения переменных:&lt;br /&gt;
&lt;br /&gt;
*'''KEY_COUNTRY''' – равным двухсимвольному коду вашей страны (для России это RU).&lt;br /&gt;
*'''KEY_PROVINCE''' – названию вашего региона (например, Moscow region или MSK).&lt;br /&gt;
*'''KEY_CITY''', соответственно – ваш город (скажем, Moscow).&lt;br /&gt;
*'''KEY_ORG''' – организация (OpenVPN Solutions подойдет).&lt;br /&gt;
*'''KEY_EMAIL''' – ваш e-mail адрес (me@my.e-ma.il).&lt;br /&gt;
&lt;br /&gt;
Все эти данные необходимы для генерации сертификатов и ключей в соответствии со стандартом, поэтому оставлять какие-то переменные пустыми нельзя.&lt;br /&gt;
&lt;br /&gt;
Также можно изменить параметр KEY_SIZE, отвечающий за размер ключей (максимальный размер ключа, поддерживаемый OpenVPN – 2048 бит).&lt;br /&gt;
&lt;br /&gt;
Далее необходимо инициализировать переменные, используемые при создании публичного ключа командой&lt;br /&gt;
&lt;br /&gt;
 . ./vars&lt;br /&gt;
 &lt;br /&gt;
и, на всякий случай, удалить существующие ключи командой&lt;br /&gt;
&lt;br /&gt;
 ./clean-all&lt;br /&gt;
&lt;br /&gt;
После этого следует сгенерировать корневой сертификат (см.[[LXF93:Электронные подписи|LXF93]]):&lt;br /&gt;
&lt;br /&gt;
 ./build-ca&lt;br /&gt;
&lt;br /&gt;
В процессе выполнения последнего скрипта вам будет задано несколько вопросов. Нужно ввести только Common Name для сертификата (например, RootCA), все остальные параметры уже заданы в качестве переменных окружения скриптом vars.&lt;br /&gt;
&lt;br /&gt;
После создания корневого сертификата необходимо сгенерировать для сервера секретный ключ. В этом вам поможет скрипт buildkey-server. Как и в предыдущем случае, для большинства вопросов можно оставить ответы по умолчанию. На вопрос о Common Name введите “server”, на два последних вопроса (подписать ли сертификат и – каламбур, но перевод именно такой – сертифицировать ли его) ответьте утвердительно; когда вас спросят о пароле (“A challenge password”) – введите пароль для ключа сервера (запоминать его не нужно). Наберите&lt;br /&gt;
&lt;br /&gt;
 ./build-key-server server&lt;br /&gt;
&lt;br /&gt;
Далее, создайте ключи для необходимого количества клиентов. Эта процедура аналогична созданию ключа для сервера, за исключением того, что для клиентов ключи создаются скриптом build-key, а не buildkey-server. У каждого ключа, конечно же, должно быть указано свое значение в поле Common Name:&lt;br /&gt;
&lt;br /&gt;
 ./build-key clientname&lt;br /&gt;
&lt;br /&gt;
Если вы хотите защитить паролем ключи клиентов, воспользуйтесь вместо build-key скриптом build-key-pass.&lt;br /&gt;
&lt;br /&gt;
И наконец, в довершение ко всем сертификатам и ключам необходимо создать файл параметров Диффи [Diffie] и Хеллмэна [Hellman]. Алгоритм Диффи и Хеллмэна позволяет обмениваться секретными ключами по небезопасным каналам. Для их генерации запустите скрипт build-dh без параметров:&lt;br /&gt;
&lt;br /&gt;
 ./build-dh&lt;br /&gt;
&lt;br /&gt;
Этот процесс занимает определенное время, поэтому владельцам слабых компьютеров стоит попить чаю, вместо того чтобы просто сидеть и ждать окончания работы скрипта.&lt;br /&gt;
&lt;br /&gt;
Если вам уже надоело возиться с ключами, сертификатами и прочим – не падайте духом: осталось только скопировать нужные файлы на клиентские компьютеры. Клиентам необходимы следующие файлы:&lt;br /&gt;
&lt;br /&gt;
*'''ca.crt''' (Root CA certificate) необходим серверу и всем клиентам, он не является секретным.&lt;br /&gt;
*'''clientname.crt''' (сертификат клиента clientname) необходим только клиенту clientname, он не является секретным.&lt;br /&gt;
*'''clientname.key''' (ключ клиента clientname) необходим только клиенту clientname, это секретный ключ.&lt;br /&gt;
&lt;br /&gt;
Эти файлы можно найти в подкаталоге keys каталога easy-rsa.&lt;br /&gt;
&lt;br /&gt;
=== Шаг 3: Настраиваем ===&lt;br /&gt;
&lt;br /&gt;
Итак, у нас есть необходимые для работы OpenVPN файлы – все, кроме конфигурационных, созданием которых мы и займемся. Начнем с сервера. Для создания новых конфигурационных файлов удобно использовать примеры из поставки OpenVPN, они находятся в подкаталоге sample-config-files каталога OpenVPN (../sample-config-files, если вы находитесь в каталоге easy-rsa). В принципе, можно использовать стандартный конфигурационный файл для сервера, изменив некоторые параметры. Вот список этих параметров (некоторые из них, например, port и protocol, изменять не обязательно):&lt;br /&gt;
&lt;br /&gt;
*'''ca''' – полный путь до корневого сертификата, который мы создали скриптом build-ca.&lt;br /&gt;
*'''cert''' – полный путь до сертификата сервера, который мы создали его скриптом build-key-server.&lt;br /&gt;
*'''key''' – путь до ключа сервера, созданного все тем же скриптом build-key-server.&lt;br /&gt;
*'''dh''' – путь до файла параметров Диффи и Хеллмэна, созданного скриптом build-dh.&lt;br /&gt;
*'''server''' – режим запуска OpenVPN. В строке с режимом запуска для сервера должна быть указана подсеть и маска подсети (пример – server 10.8.0.0 255.255.255.0). Подсеть, указанная по умолчанию – 10.8.0.0/24. Если в вашей сети она уже используется, задайте другую локальную подсеть.&lt;br /&gt;
*'''port''' – порт, на котором будет запущен сервер. Стандартный порт OpenVPN – 1194, но вы можете изменить его по своему желанию.&lt;br /&gt;
*'''protocol''' – протокол. По умолчанию OpenVPN использует экономичный UDP, но вы можете предпочесть надежный TCP.&lt;br /&gt;
&lt;br /&gt;
Если вы не сторонник конфигураций по умолчанию, отредактируйте файл в соответствии со своими предпочтениями. Если же вы не хотите тратить на это время, то можете использовать мой вариант, составленный специально для этой статьи. Вы найдете его на прилагаемом к журналу диске.&lt;br /&gt;
&lt;br /&gt;
Для создания конфигурационного файла клиента также можно использовать пример, идущий в поставке с OpenVPN. В нем надо изменить пути к необходимым файлам на свои, указать адрес и порт сервера в директиве remote и, кроме того, удостоверится, что выбранные настройки совпадают с настройками сервера (протокол, сжатие и т.п.). Пример конфигурационного файла клиента можно также взять с диска LXF. Тех же, кто хочет предоставлять VPN-клиентам доступ в Интернет,&lt;br /&gt;
ждет еще один шаг: включение NAT и настройка маршрутизации. Для начала необходимо написать соответствующее правило IPTables:&lt;br /&gt;
&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s маска_подсети -o внешний_интерфейс -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
например:&lt;br /&gt;
&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
Его необходимо сохранить, добавив в файл с правилами iptables или в скрипты загрузки. Затем необходимо включить маршрутизацию, записав в /etc/sysctl.conf строку “net.ipv4.ip_forward = 1” и выполнив команду&lt;br /&gt;
&lt;br /&gt;
 sysctl -w net.ipv4.ip_forward=1&lt;br /&gt;
&lt;br /&gt;
=== Шаг 4: Проверка связи ===&lt;br /&gt;
&lt;br /&gt;
Если вы дошли до этого места, спешу вас обрадовать – остался всего один, очень простой шаг. Надо запустить OpenVPN на сервере, а потом и на всех клиентах. Для сервера: перейдите в каталог с ключами (keys) и выполните:&lt;br /&gt;
&lt;br /&gt;
 openvpn --config ../sample-config-files/server.conf&lt;br /&gt;
&lt;br /&gt;
После чего вы должны увидеть подобные строки:&lt;br /&gt;
&lt;br /&gt;
 Thu Aug 31 12:04:20 2006 OpenVPN 2.0.7 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Jul 22 2006&lt;br /&gt;
 Thu Aug 31 12:04:20 2006 Diffie-Hellman initialized with 1024 bit key&lt;br /&gt;
 Thu Aug 31 12:04:20 2006 TLS-Auth MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]&lt;br /&gt;
 Thu Aug 31 12:04:20 2006 TUN/TAP device tun0 opened&lt;br /&gt;
 &amp;lt;Пропущено&amp;gt;&lt;br /&gt;
 Thu Aug 31 12:04:20 2006 Initialization Sequence Completed&lt;br /&gt;
&lt;br /&gt;
На клиенте (клиентах) выполните команду&lt;br /&gt;
&lt;br /&gt;
 openvpn --config client.conf&lt;br /&gt;
&lt;br /&gt;
после чего проверьте наличие tun-интерфейса командой ifconfig:&lt;br /&gt;
&lt;br /&gt;
 ifconfig tun0&lt;br /&gt;
 tun0 Link encap:UNSPEC HWaddr 00:00:00:00:00:00&lt;br /&gt;
 inet addr:85.140.161.153 P-t-P:10.8.0.2 Mask:255.255.255.0&lt;br /&gt;
 UP POINTOPOINT RUNNING MTU:1500 Metric:1&lt;br /&gt;
 RX packets:0 errors:0 dropped:0 overruns:0 frame:0&lt;br /&gt;
 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0&lt;br /&gt;
 collisions:0 txqueuelen:10&lt;br /&gt;
 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на статус (UP): он означает, что интерфейс находится в активном состоянии. Если в вашей системе имеется более одного tun-интерфейса (это можно проверить командой ifconfig без параметров), замените tun0 на tun1, tun2 и т.п.&lt;br /&gt;
&lt;br /&gt;
Если интерфейс сконфигурирован правильно, проверьте доступность других хостов. Когда путь к файлу соответствий «клиент-IP» (опция ifconfig-pool-persist в конфигурационном файле сервера) не указан, их адреса назначаются сервером OpenVPN случайным образом. Наберите:&lt;br /&gt;
&lt;br /&gt;
 ping 10.8.0.2&lt;br /&gt;
&lt;br /&gt;
Вместо 10.8.0.2 подставьте IP-адрес, выданный командой ifconfig на другой машине. В случае, если интерфейс сконфигурирован правильно, но ответа не приходит, необходимо выяснить, разрешают ли правила межсетевого экрана ICMP-трафик. Приходящие ответы свидетельствуют о том, что VPN-соединение установлено и работает.&lt;br /&gt;
&lt;br /&gt;
== Почему OpenVPN? ==&lt;br /&gt;
&lt;br /&gt;
Существует множество реализаций VPN, самые популярные из них – PPTP, FreeS/WAN (протокол IPSec) и OpenVPN. Почему же в этой статье мы рассмотрим именно последний вариант? PPTP навевает мысли о Microsoft, FreeS/WAN давно не обновлялся – на его официальном сайте сказано, что последняя версия датируется 22 апреля 2004 года, более того, дальнейших обновлений FreeS/WAN не будет, а это, согласитесь, недопустимо для проекта, одной из целей которого является обеспечение&lt;br /&gt;
безопасности... OpenVPN же активно развивается и регулярно обновляется, использует стойкие криптографические алгоритмы и предлагает множество способов идентификации, в том числе комбинированных, что немаловажно для безопасности. Кроме того, OpenVPN работает на большинстве распространенных платформ – GNU/Linux, Windows NT начиная с 2000, OpenBSD, FreeBSD, NetBSD, Mac OS X, Solaris, благодаря чему его можно использовать в гетерогенных сетях. Все это, безусловно,&lt;br /&gt;
делает OpenVPN лучшим выбором для организации VPN.&lt;br /&gt;
&lt;br /&gt;
== Где искать easy-rsa? ==&lt;br /&gt;
&lt;br /&gt;
Каталог easy-rsa может находиться в /usr/share/doc/openvpn-2.0, /usr/share/doc/openvpn, /usr/share/doc/openvpn/examples или в /usr/share/doc/packages/openvpn – в зависимости от дистрибутива. Его также можно найти в архиве с исходными текстами.&lt;/div&gt;</summary>
		<author><name>Pegasus-Rider</name></author>	</entry>

	</feed>