The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"VPN & NAT и все такое"
Отправлено dimus, 16-Мрт-06 10:34 
>Всем привет.
>Посоветуйте решение проблемы.
>Хотелось что бы была возможность управлять оборудованием через Инет.
>подключение к локалки по VPN.
>читал что pptp через NAT под linux (без пропатченного iptables) не работает.(даже
>убедился на практике)
>а есть ли какая альтернатива vpn или другое решение.
>причём желательно чтобы клиент был win и без дополнительного софта.
>подключения к нету могут быть разные c реальными и нереальными :) IP.
>
>
>зы если кто что знает про OpenVPN(для решения данного случия или сравнительно
>с pptp) нацарапайте plz.

1 Вариант: PyTTY и SSH
2 Вариант: OpenVPN

Оба варианта работают через NAT
Вариант с OpenVPN прекрасно работает на WinXP, но с Win2003 возникают проблемы - интерфейс не поднимается должным образом. OpenVPN сравнительно мало нагружает систему и вносит небольшие задержки. Мы эксплуатируем VoIP через OpenVPN - качество всязи весьма неплохое (а у нас ВПН еще поверх радиоканала) и CounterStrike через ВПН - разница в пинге в варианте с ВПН и без ВПН почти не заметна.

Настройка OpenVPN - дело средней сложности. Наиболее сложным для меня было генерирование ключей и настройка маршрутизации - это надо делать на сервере, и он сбрасывает настройки клиентам. Вобщем, изучение OpenVPN HOWTO сильно вам поможет.

Вот я тут кое что переводил и писал по этому поводу - заметки для себя, так что сильно не пиннайте, если что :)

===================================================================
OpenVPN
Создание своей собственной Инфраструктуры Публичных Ключей (PKI)
Первый шаг на пути настройки OpenVPN - это создание своей инфраструктуры
публичных ключей. В инфраструктуру входят:

        * Главный (корневой) сертификат и ключ для подписи сертификатов
          сервера и клиентов - master Certificate Authority (CA)
        * Сертификат (публичный ключ) и секрктный ключ сервера
        * Сертификаты (публичные ключи) и секретные ключи клиентов

OpenVPN поддерживает двунаправленную аутентификацию, когда клиент должен
аутентифицировать сертификат сервера, а сервер - сертификат клиента. И клиент,
и сервер идентифицируют друг друга, первоначально проверяя, что сертификат
подписан при помощи корневого сертификата - CA, а затем смотрят заголовки
сертификата.

OpenVPN сервер для своей работы нуждается только в в своем сертификате и  
секретном ключе - ему не обязательно знать индивидуальные сертификаты клиентов,
которые захотят к нему подключиться. Сервер будет принимать только тех
клиентов, сертификаты которых подписаны при помощи CA. А так как сервер может
проверить истинность сертификата без знания секретного ключа CA, то последний
может быть размещен в другом месте, что повышает безопасность. Вообще этот
ключ - самая важная точка Инфраструктуры Публичных Ключей.
OpenVPN поддерживает Certificate Revocation List (CRL) - Список Отозванных
Сертификатов. Если какой-либо сертификат был скомпрометирован, то добавление
его в список отозванных сертификатов не даст возможность использовать этот
сертификат для доступа в сеть.
OpenVPN сервер может применять специфичные для клиента правила доступа на
основе встроенных полей сертификата.

=====================================================================
Для создания корневого сертификата для сервера OpenVPN можно применить
следующую команду:

openssl req -days 10 -nodes -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

Либо можно попробовать такой путь. Однако не факт, что сработает, так как в
конфигурационном файле, идущем вместе с OpenVPN, есть специфичные настройки.
openssl req -days 5 -nodes -x509 -newkey rsa:1024 -keyout ca2.key -out ca2.crt

req означает, что мы запрашиваем программу по работе с сертификатами
-days 10 означает, что сертификат действителен 10 дней. Для реального
использования имеет смысл выбирать более большите числа.
-nodes означает, что создаваемый приватный ключ не будет зашифрован.
-new означает, что будет создаваться новый сертификат на основе информации из
конфигурационного файла.
-x509 означает, что создается самоподписанный корневой сертификат. Расширения
корневого сертификата описываются в конфигурационном файле.
-keyout ca.key означает, что ключ будет записан в файл ca.key
-out ca.crt означает, что сертификат будет записан в файл ca.crt
-config openssl.cnf означает, что конфигурационные параметры будут читаться из
файла openssl.cnf. Этот файл можно взять в папке easy-rsa дистрибутива OpenVPN
=====================================================================
Для создания закрытого ключа и сертификата для сервера OpenVPN нужно выполнить
такую последовательность команд:

touch index.txt
Создаем пустой файл index.txt

echo 01 > serial
Создаем файл serial с порядковым номером, равным 01

openssl req -days 30 -nodes -new -keyout server.key -out server.csr -extensions server -config openssl.cnf
ВАЖНО: Когда программа будет запрашивать Common Name - введем server
Этим мы создали новый ключ и сертификат для сервера. А затем подпишем его:

openssl ca -days 30 -out server.crt -in server.csr -extensions server -config openssl.cnf

ca означает, что используется программа для подписи. Программа узнает, какой
сертификат использовать из конфигурационного файла. Возможно также задание из
командной строки - см. опцию -cert
=====================================================================
Для создания ключей для клиентов нам надо сделать следующее:

openssl req -days 30 -nodes -new -keyout client1.key -out client1.csr -config openssl.cnf
ВАЖНО: Когда программа будет запрашивать Common Name - введем client1
Этим мы создали новый ключ и сертификат для первого клиента. Создание ключей
для других клиентов ничем не отличается. А затем подпишем его:

openssl ca -days 30 -out client1.crt -in client1.csr -config openssl.cnf
=====================================================================
Для того, чтобы OpenVPN работал, требуется создать файл параметров
Diffie Helman. Это делается так:

openssl dhparam -out dh1024.pem 1024
Где dh1024.pem - имя файла параметров, а 1024 - размер в битах
=====================================================================
На данном этапе созданы все ключи. Рассмотрим их более подробно.
ca.crt - корневой сертификат - несекретный файл, который должен присутствовать
на сервере и на каждом клиенте.
ca.key - корневой секретный ключ - самый секретный из всех файлов, который
должен быть только на подписывающей машине.
dh1024.pem - файл параметров Diffie Hellman - несекретный файл, требующийся
только на сервере.
server.crt - сертификат сервера - несекретный файл, требующийся
только на сервере.
server.key - секретный ключ сервера - секретный файл, требующийся только на
сервере.
clientN.crt - сертификат клиента N - несекретный файл, требующийся
только на клиенте N.
clientN.key - секретный ключ клиента N - секретный файл, требующийся только на
клиенте N.
=====================================================================


 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру