>Всем привет.
>Посоветуйте решение проблемы.
>Хотелось что бы была возможность управлять оборудованием через Инет.
>подключение к локалки по 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.
=====================================================================