OpenVPN Installation
Установка VPN на базе OpenVPN
Это Howto может быть использовано как на Linux VPS так и на выделенных серверах. Перед установкой на VPS создайте запрос на подключение tun модуля.
- Скачиваем последний дистрибутив версии OpenVPN с сайта http://www.openvpn.net . Это может быть архив source в формате .tar.gz или src.rpm . Если дистрибутив установленной OS имеет уже готовый rpm, то лучше установить его. Например, для fedora core выполняем:
yum install openvpn
Для CentOS 5 i386 добавляем epel репозитарий (для x86_64 аналогично):
rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm yum install openvpn
Теперь нужно создать папку /etc/openvpn (если она еще не создана) и скопировать туда папку с сертификатами и конфигами. Примеры того и другого лежат с корне архива .tar.gz, если была установка из source, иначе они будут разбросаны по всей системы на усмотрение того, кто делал rpm. Вот некоторые варианты, где можно найти эти папки:
/etc/share/openvpn /usr/share/doc/openvpn /usr/share/doc/packages/openvpn
Итак, надо скопировать папки easy-rsa и sample-config-files. На самом деле, примеры конфигов можно не копировать, а скопировать оттуда только файл server.conf
- Идем в /etc/openvpn/easy-rsa и выполняем следующим команды:
. ./vars ./clean-all ./build-ca
Будут спрашивать данные для сертификата, лучше отвечать ближе к правде, хотя и не обязательно. Важно обязательно что-то писать в поле, не оставлять пустыми.
./build-key-server server
Аналогично, отвечать нужно на все вопросы.
Common name должно быть server.
На 2 вопроса отвечать y
./build-dh
- Теперь делаем сертификат для клиента. Если у нас несколько клиентов, то повторяем этот шаг несколько раз, меняя номер клиента.
./build-key client1
Если Вы хотите защитить сертификат паролей то используйте
./build-key-pass client1
Важно с поле Common Name писать соответствующее имя, например client1
- Настраиваем конфиг для сервера. Он должен находится в /etc/openvpn и называтся server.conf.
Все что нам нужно изменить в примера конфига:
ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key dh /etc/openvpn/easy-rsa/keys/dh1024.pem push "redirect-gateway def1" push "dhcp-option DNS 10.8.0.1" push "dhcp-option WINS 10.8.0.1" user nobody group nobody
Сохраняем файл.
Выполняем
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
На VPS на базе Virtuozzo вместо первой команды надо выполнить:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source VPS_IP_ADDRESS
где VPS_IP_ADDRESS - один из доступных IP, через который будет ходить трафик. Запускаем openvpn:
service openvpn start
- Теперь ставим OpenVPN клиент для Windows. Его можно скачать здесь: http://openvpn.se. После установки заходим в папку установки программы, например: C:\Program and Files\OpenVPN\sample-config. Открываем текстовым редактором (блокнотом) файл client.ovpn и пишем в строке
remote my-server-1 1194
IP своего сервера вместо my-server-1. Больше ничего не трогаем, сохраняем и закрываем файл.
Последнее что надо сделать, это скачать с сервера 3 файла сертификатов в эту же папку, где только что редактировали файл. Итак, скачать нужно следующие файлы:
/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/easy-rsa/keys/client1.crt /etc/openvpn/easy-rsa/keys/client1.key
client1 соответственно нужно заменить на нужный номер клиента. После этого переименовываем файлы, убирая цифры номера клиент, т.е. из client1.crt делаем client.crt и т.д. Все готово для подключения и проверки. Нажимаем правой кнопкой на файд client.ovpn и выбираем Start OpenVPN on this config file. Убеждаемся, что соединение установлено правильно. Делаем пинг до сервера 10.8.0.1. Сейчас весь трафик ходит через VPN в зашифрованном виде.
При использовании OS Vista нужно сделать некоторые дополнительные изменения:
1. Добавить в конфиг файл клиентской части следующие строки:
route-method exe route-delay 2
2. Если Вы используете UAC - нужно создать bat файл следующего содержания: “C:\Program Files\OpenVPN\bin\openvpn.exe” полный_путь_до_конфига Для запуска VPN правой кнопкой мыши жмем на полученном bat файле и выбираем “Запустить как администратор”
При использовании csf на сервере - создать файл /etc/csf/csfpre.sh и добавить следующие строки.
/sbin/iptables -A INPUT -j ACCEPT -s 10.8.0.0/24 -i tun0 /sbin/iptables -A OUTPUT -j ACCEPT -s 10.8.0.0/24 -o tun0 /sbin/iptables -A FORWARD -j ACCEPT -p all -s 0/0 -i tun0 /sbin/iptables -A FORWARD -j ACCEPT -p all -s 0/0 -o tun0 /sbin/iptables -t nat --flush iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
Для реализации проксирования трафика через несколько ай-пи в рамках одного VPS нужно сделать следующее.
1. В конфигурационный файл добавить строчку
client-config-dir ccd
2. Создать директорию /etc/openvpn/ccd и файлы client1
ifconfig-push 10.8.0.5 10.8.0.6
client2
ifconfig-push 10.8.0.9 10.8.0.10
... Правила iptables в данном случае:
iptables -t nat -A POSTROUTING -s 10.8.0.5 -o venet0 -j SNAT --to-source VPS_IP1_ADDRESS iptables -t nat -A POSTROUTING -s 10.8.0.9 -o venet0 -j SNAT --to-source VPS_IP2_ADDRESS
