Объявление

Свернуть
Пока нет объявлений.

Поднимаем свой VPN за 10 баксов в месяц в течении 20 минут. Пошаговый мануал.

Свернуть
X
 
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Поднимаем свой VPN за 10 баксов в месяц в течении 20 минут. Пошаговый мануал.

    Установка и настройка 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 устройство или же пробуем пересобрать ядро дистрибутива самостоятельно.
    Последний раз редактировалось Forum services; 16-06-2014, 22:45.
Обработка...
X