Внимание: этот пользователь заблокирован! Настоятельно рекомендуем воздержаться от любого сотрудничества с ним!
форум не очем
UPD: Исправил ман под разные архитерктуры серверов.
Введение.
Описывать отличие PPTP от OpenVPN здесь не буду, это тема отдельной статьи, поверьте на слово, что OpenVPN на порядок лучше и безопастнее PPTP.
Для желающих узнать больше на эту тему - кратко в сравнительной таблице.
Что нам понадобится?
-Арендованый VPS/VDS с root доступом.
Список провайдеров и организаций, предоставлющих такие сервера, можно найти на любом сайте, посвященному обзору хостинга, например тут
-Установленная на сервере CentOS 5.
Зачастую при заказе VPS/VDS провайдеры и организации предлогают сразу выбрать предустановленную ОС. Выбираем CentOS 5.
-Для полной анонимности - платежный метод, по которому невозможно узнать ваши личные данные.
Это может быть, например, виртуалка, купленная на plati.ru или платежная система типа w1.ru, персонализация в которой ПОКА не нужна и кошелек в которой можно пополнить через терминалы или обменом другой валюты. Списки обменников ищем на bestchange.ru или любом другом мониторинге обменников.
-Клиент для удаленного доступа на сервер по SSH под названием PuTTY
-Клиент для передчи данных по SFTP (Secret FTP) WinSCP
-OpenVPN GUI клиент для Windows, с помощью которого мы и будем подключаться к нашему VPN-у.
Что мы получим в итоге?
Как минимум:
-Сокрытие реального IP адреса.
-Сжатие траффика благодаря установленному алгоритму сжатия данных имени Лемпеля-Зива-Оберхеймера (LZO). Актуально для тех кто сидит на 3G.
-Собственноручный контроль над логами, как следствие - спокойный сон и крепкое здоровье.
-Небольшой опыт в собственноручном администрировании сервера, работающего на nix-ах =)
Итак, поехали
После оплаты VPD/VDS вам выдадут IP-адрес сервера и пароль для пользователя root.
Нам нужно зайти на сервер как root.
Запускаем PuTTY и вводим в строку Host Name (or IP address) IP нашего сервера, порт оставляем 22 (это порт SSH), жмем Open.
Для примера я буду использовать IP-адресс 156.156.156.156
Видим следующую картину:
то поздравляю, вы на зашли на сервер как root. Если получаем ответ Access denied - неправильно введен пароль.
Все комманды, указаные ниже, нужно просто копировать, вставлять в PuTTY и жмакать Enter ))
Для начала проверим наличие драйвера TAP\TUN такой коммандой:
Если комманда выведет что-то похожее на
то все в порядке.
Если же нет -
1) нужно пересобрать ядро дистрибутива самостоятельно
Это не так страшно как звучит и занимает 5 минут времени.
Подробный мануал тут.
2) нужно написать в саппорт хостера следующее "Пожайлуста, активируйте TUN/TAP устройства"
Итак, TAP\TUN на месте, устанавливаем пакеты, необходимые для OpenVPN.
Проверяем версию Centos и архитектуру сервера следующими коммандами
Скачиваем необходимые пакеты:
Для архитектуры i386
Для архитектуры x86_64
Устанавливаем rpm-пакеты и добавляем репозитории:
Для Centos 5.x и i386
(для x86_64 архитектуры меняем "i386" на "x86_64")
Для Centos 6.x и i386 устанавливаем следующие rpm-пакеты и добавляем репозитории
(для x86_64 архитектуры меняем "i386" на "x86_64")
Копируем файлы OpenVPN в новую директорию
Переходим к генерации ключей.
Загружаем переменные из vars в оболочку:
Удаляем из папки keys старые ключи и сертификаты:
Начинаем генерацию Master CA (Certificate Authority):
Во время генерации сертификата везде жмем Enter, кроме строки
Common Name (eg, your name or your server's hostname)
Сюда вписываем
- это будет у нас имя ключа.
Дальше генерируем сертификат для сервера:
Во время генерации сертификата везде жмем Enter
На вопросы, требующие выбора Y/N везде отвечаем Y.
Сгенерируем сертификат клиента:
Во время генерации сертификата везде жмем Enter\
На вопросы, требуещие выбора Y/N везде отвечаем Y.
Сгенерируем ключ DH (Diffie Hellman):
Создадим ключ для TLS-аутентификации:
Все, мы сгенерировали все что нужно.
После проделаных действий в каталоге /etc/openvpn/2.0/keys появятся все наши ключи.
Файл ta.key будет в каталоге /etc/openvpn/2.0, скопируем его к ключам
Создаем конфигурационный файл server.conf и открываем его на редактирование:
Если выдается ошибка о том что текстовый редактор Nano не установлен - устанавливаем его =)
И опять пробуем открыть файл конфига:
Помещаем в него следующие строки:
Выходим и сохраняемся- комбинация кнопок Ctrl+х , дальше буква Y и Enter.
Хочу прокомментировать некоторые параметры, указаные в конфиге.
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Это DNS-ы принадлежащие opendns.com. При желании их можно заменить любыми Free DNS серверами, список прикреплен в самом низу статьи.
max-clients 2
Здесь указано максимальное кол-во одновременных подключений к серверу, в данном случае два клиента.
duplicate-cn
Строка указывает на то, что может быть использован один сертификат для нескольких клиентов.
Это если вы хотите дать попользоваться VPN-ом другу/брату/свату.
Если будете пользоваться только вы один - можете вообще убрать эту строку, а в max-clients указать 1.
verb 0
Строка указывает, как подробно нужно вести логи, значение от 0 до 3.
0 - логи не ведуться, 3 - логи ведуться подробно.
log /dev/null
status /dev/null
log-append /dev/null
Строки указывают, куда мы пишем/шлем логи =) А шлем мы их в нулл, другими словами (не вдаваясь в подробности) - удаляем.
Вернемся к нашим баранам и настроим сетевые параметры сервера.
Разрешим ip-fowrwarding:
Изменяем в файле значение net.ipv4.ip_forward на 1.
Выходим и сохраняемся.
Для применения параметров выполняем комманду:
Теперь нам нужно открыть порт 1194 (его мы прописали в конфиге, в файле openvpn.conf).
Для этого выполняем комманду:
Если получаем сообщение об отсутствии утилиты, инсталируем ее:
И опять запускаем:
В появившимся окошке, похожем на старый-добрый Norton Commander, выбираем кнопку "Customize" и в поле «Other ports» пишем:
Дальше жмем ОК, потом еще раз ОК.
Теперь добавим правила в фаервол, включающие трансляцию адресов (NAT), дабы пакеты от клиента попадая на сервак могли уйти в инет и также вернуться назад:
ХХХ.ХХХ.ХХХ.ХХХ - IP-адрес вашего сервера.
Сохраним настройки таблицы iptables и добавим их в автозагрузку:
Проверим, все ли правильно записалось:
Вывод комманды должен быть такой:
Если вывод комманды не такой, как выше, а вот такой
Выполняем следующие комманды
Все, по сути все готово, теперь осталось только запусить наш OpenVPN сервер:
Если ошибок не выдало - сервер запустился.
Если выдает ошибку - копируем текст ошибки в топик на обсуждение или же сами ищем в гугле решение проблемы.
Тепрь можно вернуться в любимую винду, инсталируем OpenVPN GUI.
После инсталяции не выключая PuTTY запускаем WinSCP.
В графу Host name вводим IP-адрес нашего сервера, Port number: 22, User name: root
Подключаемся, вводим пароль на сервер, видим каталоги и файлы на сервере в знакомом графическом формате =)
Переходим в папку /etc/openvpn/2.0/keys/
Копируем себе на винт в папку C:\Program Files(x86)\OpenVPN\config\ следующие файлы:
И создаем тут же файл openvpn.ovpn, открываем его на редактирование блокнотом.
В него пишем следующее:
ХХХ.ХХХ.ХХХ.ХХХ - IP-адрес вашего сервера.
Ну и последний шаг - запускаем OpenVPN GUI, в трее на иконке правой кнопкой мыши -- Connect.
Видим примерно следующую картину:
Если иконка в трее загорелась зеленым - радуемся и гордимся собой =)
Идем на Whoer.net/Ip-Score, проверяем IP адрес.
Должен быть IP вашего VPS/VDS.
Если по Whoer светятся ваши родные DNS:
1) Ставим плагин для FireFox под названием DNS Cache, перезагружаем браузер, на иконке плагина (внизу справа) - правая кнопка мыши -- Flush DNS Cache.
Если не юзаем FireFox - жмем Win+R (Выполнить), вписываем ipconfig /flushdns
2) Если не помогла - заходим в настройки подключения (для основного адаптера + TAP-Win32 адаптера) и в свойствах IP4 прописываем DNS-ы от opendns.com (208.67.222.222 и 208.67.220.220) или любые другие Free DNS.
Для проверки входящего/ исходящего канала на сервере можно воспользоваться утилитой tcpdump.
Инсталируем ее:
На клиенте, т.е. на своем компе запускаем cmd -- ping mail.ru -t
На сервере запускаем tcpdump для прослушивания интерфейса tap0 и сниффинга уходящих с сервера пакетов:
Видим, что пакеты с сервера уходят не шифрованые =)
Для прослушивания канала между клиентом (компом) и сервером по интерфейсу eth0:
Видим абракадабру - все шифруется. Не видим абракадабру - что-то не так настроено, нужно разбираться.
Для полной уверености можно скачать и заснифать исходящий канал интернета с помошью программы WireShark.
Основная проблема с которой можно столкнуться:
При подключении к серверу в статусе OpenVPN GUI видим следующее
В таком случае пишем письмо/тикет хостеру с просьбой включить TUN/TAP устройство или же пробуем пересобрать ядро дистрибутива самостоятельно.
Установка и настройка OpenVPN версии 2.1.3 на арендованом VDS/VPS с CentOS 5. Пошаговый мануал со слайдами.
UPD: Исправил ман под разные архитерктуры серверов.
Введение.
Описывать отличие PPTP от OpenVPN здесь не буду, это тема отдельной статьи, поверьте на слово, что OpenVPN на порядок лучше и безопастнее PPTP.
Для желающих узнать больше на эту тему - кратко в сравнительной таблице.
Что нам понадобится?
-Арендованый VPS/VDS с root доступом.
Список провайдеров и организаций, предоставлющих такие сервера, можно найти на любом сайте, посвященному обзору хостинга, например тут
-Установленная на сервере CentOS 5.
Зачастую при заказе VPS/VDS провайдеры и организации предлогают сразу выбрать предустановленную ОС. Выбираем CentOS 5.
-Для полной анонимности - платежный метод, по которому невозможно узнать ваши личные данные.
Это может быть, например, виртуалка, купленная на plati.ru или платежная система типа w1.ru, персонализация в которой ПОКА не нужна и кошелек в которой можно пополнить через терминалы или обменом другой валюты. Списки обменников ищем на bestchange.ru или любом другом мониторинге обменников.
-Клиент для удаленного доступа на сервер по SSH под названием PuTTY
-Клиент для передчи данных по SFTP (Secret FTP) WinSCP
-OpenVPN GUI клиент для Windows, с помощью которого мы и будем подключаться к нашему VPN-у.
Что мы получим в итоге?
Как минимум:
-Сокрытие реального IP адреса.
-Сжатие траффика благодаря установленному алгоритму сжатия данных имени Лемпеля-Зива-Оберхеймера (LZO). Актуально для тех кто сидит на 3G.
-Собственноручный контроль над логами, как следствие - спокойный сон и крепкое здоровье.
-Небольшой опыт в собственноручном администрировании сервера, работающего на nix-ах =)
Итак, поехали
После оплаты VPD/VDS вам выдадут IP-адрес сервера и пароль для пользователя root.
Нам нужно зайти на сервер как root.
Запускаем PuTTY и вводим в строку Host Name (or IP address) IP нашего сервера, порт оставляем 22 (это порт SSH), жмем Open.
Для примера я буду использовать IP-адресс 156.156.156.156

Видим следующую картину:

то поздравляю, вы на зашли на сервер как root. Если получаем ответ Access denied - неправильно введен пароль.
Все комманды, указаные ниже, нужно просто копировать, вставлять в PuTTY и жмакать Enter ))
Для начала проверим наличие драйвера TAP\TUN такой коммандой:
Код:
modprobe tun;lsmod | grep tun
Если комманда выведет что-то похожее на
Код:
tun 13836 0
то все в порядке.
Если же нет -
1) нужно пересобрать ядро дистрибутива самостоятельно
Это не так страшно как звучит и занимает 5 минут времени.
Подробный мануал тут.
2) нужно написать в саппорт хостера следующее "Пожайлуста, активируйте TUN/TAP устройства"
Итак, TAP\TUN на месте, устанавливаем пакеты, необходимые для OpenVPN.
Код:
yum install gcc rpm-build autoconf.noarch zlib-devel pam-devel lzo lzo-devel openssl-devel automake imake pkgconfig gcc-c++ libcrypto.so.6
Проверяем версию Centos и архитектуру сервера следующими коммандами
Код:
cat /etc/redhat-release
uname -i
Скачиваем необходимые пакеты:
Для архитектуры i386
Код:
wget openvpn.net/release/openvpn-2.1.3.tar.gz
wget openvpn.net/release/lzo-1.08-4.rf.src.rpm
wget ftp://ftp.muug.mb.ca/mirror/fedora/e...el5.1.i386.rpm
wget ftp://ftp.muug.mb.ca/mirror/fedora/e...el5.1.i386.rpm
Для архитектуры x86_64
Код:
wget openvpn.net/release/openvpn-2.1.3.tar.gz
wget openvpn.net/release/lzo-1.08-4.rf.src.rpm
wget ftp://ftp.muug.mb.ca/mirror/fedora/e...5.1.x86_64.rpm
wget ftp://ftp.muug.mb.ca/mirror/fedora/e...5.1.x86_64.rpm
Устанавливаем rpm-пакеты и добавляем репозитории:
Для Centos 5.x и i386
(для x86_64 архитектуры меняем "i386" на "x86_64")
Код:
rpmbuild -–r***ild lzo-1.08-4.rf.src.rpm
rpm -Uvh /usr/src/redhat/RPMS/i386/lzo-*.rpm
rpm -ivh pkcs11-helper-*.rpm
rpmbuild -tb openvpn-2.1.3.tar.gz
rpm -Uvh /usr/src/redhat/RPMS/i386/openvpn-2.1.3-1.i386.rpm
Для Centos 6.x и i386 устанавливаем следующие rpm-пакеты и добавляем репозитории
(для x86_64 архитектуры меняем "i386" на "x86_64")
Код:
rpmbuild --r***ild lzo-1.08-4.rf.src.rpm
rpm -Uvh /root/rpmbuild/RPMS/i386/lzo-*.rpm
rpm -ivh pkcs11-helper-*.rpm
rpmbuild -tb openvpn-2.1.3.tar.gz
rpm -Uvh /root/rpmbuild/RPMS/i386/openvpn-2.1.3-1.i386.rpm
Копируем файлы OpenVPN в новую директорию
Код:
cp -r /usr/share/doc/openvpn-2.1.3/easy-rsa/ /etc/openvpn/
Переходим к генерации ключей.
Код:
cd /etc/openvpn/2.0
Загружаем переменные из vars в оболочку:
Код:
source ./vars
. ./vars
Удаляем из папки keys старые ключи и сертификаты:
Код:
./clean-all
Начинаем генерацию Master CA (Certificate Authority):
Код:
./build-ca
Во время генерации сертификата везде жмем Enter, кроме строки
Common Name (eg, your name or your server's hostname)
Сюда вписываем
Код:
OpenVPN
- это будет у нас имя ключа.
Дальше генерируем сертификат для сервера:
Код:
./build-key-server server
Во время генерации сертификата везде жмем Enter
На вопросы, требующие выбора Y/N везде отвечаем Y.
Сгенерируем сертификат клиента:
Код:
./build-key client
Во время генерации сертификата везде жмем Enter\
На вопросы, требуещие выбора Y/N везде отвечаем Y.
Сгенерируем ключ DH (Diffie Hellman):
Код:
./build-key client
Создадим ключ для TLS-аутентификации:
Код:
openvpn --genkey --secret ta.key
Все, мы сгенерировали все что нужно.
После проделаных действий в каталоге /etc/openvpn/2.0/keys появятся все наши ключи.
Файл ta.key будет в каталоге /etc/openvpn/2.0, скопируем его к ключам
Код:
cp ta.key /etc/openvpn/2.0/keys/ta.key
Создаем конфигурационный файл server.conf и открываем его на редактирование:
Код:
nano /etc/openvpn/server.conf
Если выдается ошибка о том что текстовый редактор Nano не установлен - устанавливаем его =)
Код:
yum install nano
И опять пробуем открыть файл конфига:
Код:
nano /etc/openvpn/server.conf
Помещаем в него следующие строки:
Код:
local xx.xx.xx.xx #сюда пишем IP адрес своего сервера
port 1194
proto udp
dev tap
tun-mtu 1500
tun-mtu-extra 32
mssfix
fragment 1300
cipher DES-EDE3-CBC
tls-server
tls-auth /etc/openvpn/2.0/keys/ta.key 0
ca /etc/openvpn/2.0/keys/ca.crt
cert /etc/openvpn/2.0/keys/server.crt
key /etc/openvpn/2.0/keys/server.key
dh /etc/openvpn/2.0/keys/dh1024.pem
mode server
user nobody
group nobody
max-clients 2
duplicate-cn
server 1.2.4.0 255.255.255.0
push "route-gateway 1.2.4.5"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 0
log /dev/null
status /dev/null
log-append /dev/null
Выходим и сохраняемся- комбинация кнопок Ctrl+х , дальше буква Y и Enter.
Хочу прокомментировать некоторые параметры, указаные в конфиге.
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Это DNS-ы принадлежащие opendns.com. При желании их можно заменить любыми Free DNS серверами, список прикреплен в самом низу статьи.
max-clients 2
Здесь указано максимальное кол-во одновременных подключений к серверу, в данном случае два клиента.
duplicate-cn
Строка указывает на то, что может быть использован один сертификат для нескольких клиентов.
Это если вы хотите дать попользоваться VPN-ом другу/брату/свату.
Если будете пользоваться только вы один - можете вообще убрать эту строку, а в max-clients указать 1.
verb 0
Строка указывает, как подробно нужно вести логи, значение от 0 до 3.
0 - логи не ведуться, 3 - логи ведуться подробно.
log /dev/null
status /dev/null
log-append /dev/null
Строки указывают, куда мы пишем/шлем логи =) А шлем мы их в нулл, другими словами (не вдаваясь в подробности) - удаляем.
Вернемся к нашим баранам и настроим сетевые параметры сервера.
Разрешим ip-fowrwarding:
Код:
nano /etc/sysctl.conf
Изменяем в файле значение net.ipv4.ip_forward на 1.
Выходим и сохраняемся.
Для применения параметров выполняем комманду:
Код:
sysctl -p
Теперь нам нужно открыть порт 1194 (его мы прописали в конфиге, в файле openvpn.conf).
Для этого выполняем комманду:
Код:
system-config-securitylevel-tui
Если получаем сообщение об отсутствии утилиты, инсталируем ее:
Код:
yum install system-config-securitylevel-tui
И опять запускаем:
Код:
system-config-securitylevel-tui
В появившимся окошке, похожем на старый-добрый Norton Commander, выбираем кнопку "Customize" и в поле «Other ports» пишем:
Код:
openvpn:tcp openvpn:udp
Дальше жмем ОК, потом еще раз ОК.
Теперь добавим правила в фаервол, включающие трансляцию адресов (NAT), дабы пакеты от клиента попадая на сервак могли уйти в инет и также вернуться назад:
Код:
iptables -I FORWARD 1 -i tap0 -p udp -j ACCEPT
iptables -I FORWARD 1 -i tap0 -p tcp -j ACCEPT
iptables -t nat -A POSTROUTING -s 1.2.4.0/24 -o eth0 -j SNAT --to-source ХХХ.ХХХ.ХХХ.ХХХ
ХХХ.ХХХ.ХХХ.ХХХ - IP-адрес вашего сервера.
Сохраним настройки таблицы iptables и добавим их в автозагрузку:
Код:
service iptables save > /etc/sysconfig/iptables
Проверим, все ли правильно записалось:
Код:
chkconfig --list iptables
Вывод комманды должен быть такой:
Код:
iptables 0 : off 1 : off 2 : on 3 : on 4 : on 5 : on 6 : off
Если вывод комманды не такой, как выше, а вот такой
Код:
iptables 0 : off 1 : off 2 : off 3 : off 4 : off 5 : off 6 : off
Выполняем следующие комманды
Код:
chkconfig --add iptables
chkconfig --level 2345 iptables on
service iptables start
chkconfig --list iptables
Все, по сути все готово, теперь осталось только запусить наш OpenVPN сервер:
Код:
service openvpn start
Если выдает ошибку - копируем текст ошибки в топик на обсуждение или же сами ищем в гугле решение проблемы.
Тепрь можно вернуться в любимую винду, инсталируем OpenVPN GUI.
После инсталяции не выключая PuTTY запускаем WinSCP.
В графу Host name вводим IP-адрес нашего сервера, Port number: 22, User name: root

Подключаемся, вводим пароль на сервер, видим каталоги и файлы на сервере в знакомом графическом формате =)
Переходим в папку /etc/openvpn/2.0/keys/
Копируем себе на винт в папку C:\Program Files(x86)\OpenVPN\config\ следующие файлы:
Код:
ca.crt
dh1024.pem
client.crt
client.key
ta.key
И создаем тут же файл openvpn.ovpn, открываем его на редактирование блокнотом.
В него пишем следующее:
Код:
client
proto udp
remote ХХХ.ХХХ.ХХХ.ХХХ
port 1194
dev tap
resolv-retry infinite
nobind
redirect-gateway def1
route-method exe
persist-tun
persist-key
tls-client
tls-auth ta.key 1
dh dh1024.pem
ca ca.crt
cert client.crt
key client.key
cipher DES-EDE3-CBC
comp-lzo
verb 3
tun-mtu 1500
fragment 1300
mssfix
remote-cert-tls server
ХХХ.ХХХ.ХХХ.ХХХ - IP-адрес вашего сервера.
Ну и последний шаг - запускаем OpenVPN GUI, в трее на иконке правой кнопкой мыши -- Connect.
Видим примерно следующую картину:

Если иконка в трее загорелась зеленым - радуемся и гордимся собой =)
Идем на Whoer.net/Ip-Score, проверяем IP адрес.
Должен быть IP вашего VPS/VDS.
Если по Whoer светятся ваши родные DNS:
1) Ставим плагин для FireFox под названием DNS Cache, перезагружаем браузер, на иконке плагина (внизу справа) - правая кнопка мыши -- Flush DNS Cache.
Если не юзаем FireFox - жмем Win+R (Выполнить), вписываем ipconfig /flushdns
2) Если не помогла - заходим в настройки подключения (для основного адаптера + TAP-Win32 адаптера) и в свойствах IP4 прописываем DNS-ы от opendns.com (208.67.222.222 и 208.67.220.220) или любые другие Free DNS.
Для проверки входящего/ исходящего канала на сервере можно воспользоваться утилитой tcpdump.
Инсталируем ее:
Код:
yum install tcpdump
На клиенте, т.е. на своем компе запускаем cmd -- ping mail.ru -t
На сервере запускаем tcpdump для прослушивания интерфейса tap0 и сниффинга уходящих с сервера пакетов:
Код:
tcpdump -i tap0 -lenx
Видим, что пакеты с сервера уходят не шифрованые =)
Для прослушивания канала между клиентом (компом) и сервером по интерфейсу eth0:
Код:
tcpdump -i eth0 udp port 1194 -lenx
Видим абракадабру - все шифруется. Не видим абракадабру - что-то не так настроено, нужно разбираться.
Для полной уверености можно скачать и заснифать исходящий канал интернета с помошью программы WireShark.
Основная проблема с которой можно столкнуться:
При подключении к серверу в статусе OpenVPN GUI видим следующее
Код:
Note: Cannot open TUN/TAP dev /dev/net/tap: No such file or directory (errno=2)
Note: Attempting fallback to kernel 2.2 TUN/TAP interface
TUN/TAP device /dev/tap0 opened
/sbin/ip link set dev tap0 up mtu 1500
SIOCSIFMTU: No such device
В таком случае пишем письмо/тикет хостеру с просьбой включить TUN/TAP устройство или же пробуем пересобрать ядро дистрибутива самостоятельно.
Последнее редактирование модератором: