Блог им. LehikOpenVPN Linux vs. Windows

Вот встала задача соединить два компа в разных сетях, оба за NAT'ом, через VPN. Один NAT под Windows server 2003, другой под Debian Lenny 5.0.4. Естественно выбор пал на OpenVPN. На мой взгляд это 2 простых способа реализации данной задачи: соединить именно эти компы между собой(технология p2p), и соединить сети(подскажите). Здесь я хочу собрать что-то наподобие мануала по этой задаче, заодно и оттестировать его. Как всегда приветствуются поправки, корректировки, советы, подсказки и т.д. Буду вносить поправки в текст.
Вот что я сделал основываясь на руководстве.
Эта часть, как мне кажется для соединения сетей. Для p2p напишем в конце, там как я понял можно в 2 строчки уложиться.
Итак приступим.
Вариант 1. для соединения сетей
Сервер Debian Lenny 5.0.4
1. Устанавливаем пакет Openvpn
sudo aptitude install openvpn

2. Для проверки с помощью следующих команд можно посмотреть, какие дайджесты (применяются для аутентификации каждой получаемой UDP-датаграммы) и алгоритмы шифрования доступны:
sudo /usr/local/sbin/openvpn --show-digests
sudo /usr/local/sbin/openvpn --show-ciphers

3. Добавляем в систему группу _openvpn и аналогичного пользователя
sudo groupadd -g 500 _openvpn
sudo useradd -u 500 -g 500 -c 'OpenVPN Server' -s /sbin/nologin -d /var/openvpn -m _openvpn

4. Проверяем:
sudo grep 500 /etc/passwd
_openvpn:*:500:500:OpenVPN Server:/var/openvpn:/sbin/nologin


Ключи и сертификаты
1. Создаем директорию, где будут лежать конфигурационные файлы, скрипты и сертификаты:
sudo mkdir -p /etc/openvpn/keys

2. Копируем комплект скриптов easy-rsa, предназначенный для упрощения создания сертификатов, которые предъявляются в процессе аутентификации для подтверждения валидности клиентов и переходим в нее.
sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn
sudo cd /etc/openvpn/easy-rsa/2.0

3. В файл vars прописываем свои данные(будут предлагаться в качестве значений по умолчанию) для подписи ключей под себя
export KEY_COUNTRY=«RU»
export KEY_PROVINCE=«RU»
export KEY_CITY=«Город»
export KEY_ORG=«Название организации»
export KEY_EMAIL="<почтовый ящик>"

4. Инициализируем переменные и очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей:
sudo source ./vars
sudo ./vars
sudo ./clean-all

5. Создаем корневой и серверный сертификаты:
sudo ./build-ca
sudo ./build-key-server server

создадим файл параметров Диффи-Хелмана, который обеспечивает более надежную защиту данных при установке соединения клиента с сервером
sudo ./build-dh

6. Снизим вероятность успешного проведения DoS-атаки на сервер OpenVPN за счет использования клиентом и сервером статического ключа HMAC (так называемый shared secret):
cd /etc/openvpn/keys
sudo /usr/local/sbin/openvpn --genkey --secret ta.key

7. Меняем права доступа на файлы
sudo chmod 700 /etc/openvpn/keys
sudo chmod 644 /etc/openvpn/keys/{ca.crt,dh1024.pem,server.crt}
sudo chmod 600 /etc/openvpn/keys/{server.key,ta.key}

8. Создаем клиентские сертификаты. Если мы не в папке со скриптами, то переходим в нее
sudo cd /etc/openvpn/easy-rsa/2.0
sudo ./build-key client1

9. Создадим в любом удобном месте папку client1. Эту папку с ключами мы отдадим клиенту.
sudo cd /etc/openvpn/keys
sudo mkdir client1
sudo mv client1.crt client1.key /etc/openvpn/keys/client1
sudo cp {ca.crt,ta.key} /etc/openvpn/keys/client1

10. Создадим конфиг сервера, основу можно взять из примера
sudo zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

11. Подгоняем конфиг под себя
...скоро будет...


P.S. Пока писал и искал решения проблем, нашел еще одно хорошее руководство из которого много чего взял, надеюсь автор будет не против, т.к. я сделал на него ссылку :)
  • +7
  • Lehik
  • 10 июня 2010, 07:52

Комментарии (5)

(на него ругается)

Как именно «ругается»? :)
Please edit the vars script to reflect your configuration,
then source it with «source ./vars».
Next, to start with a fresh PKI configuration and to delete any
previous certificates and keys, run "./clean-all".
Finally, you can run this tool (pkitool) to build certificates/keys.

У меня следующая структура папок:
/etc/openvpn/easy-rsa/2.0
— здесь различные скрипты
/etc/openvpn/keys
— здесь наверно должны хранится ключи
Вопрос снят. Нужно было сделать source ./vars, только я не понял что это за команда…
В общем случае при запуске скрипта запускается новый процесс. Для того, чтобы выполнить скрипт внутри текущей сессии bash, необходимо использовать команду source, синонимом которой является просто точка ".". Скрипт оболочки служит просто аргументом этой команды. Ее формат:

source filename [arguments]

или

. filename [arguments]

Эта команда читает и выполняет команды из файла с именем filename в текущем окружении и возвращает статус, определяемый последней командой из файла filename. Если filename не содержит слэша, то пути, перечисленные в переменной PATH, используются для поиска файла с именем filename. Этот файл не обязан быть исполняемым. Если в каталогах, перечисленных в PATH, нужный файл не найден, его поиск производится в текущем каталоге.
Спасибо!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.