Пошаговая инструкция по поднятию VPN на VDS

Discussion in 'Безопасность и Анонимность' started by 2pick, 20 Oct 2010.

  1. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Решил накатать статью по поднятию OpenVPN на VDS/VPS и вот что получилось:

    Почему именно на VDS/VPS? Это самый доступный на сегодняшний день хостинг с неограничеными возможностями и недорогой (купить VPN дороже раза в 2, хоть в покупке и есть свои плюси и довольно таки немалые, но не об этом тема). Поехали:

    1. Выбираем хостера с VDS/VPS. Я рекомендую FirstVDS , поскольку у них поставил не один OpenVPN, да и привык к ним как-то :)
    2. Регистрируемся. ОС выбираем CentOS ибо на нем лучше всего делать VPN
    3. Для фёрста просим сразу же активировать TUN и NAT (пишем в билинге что-то типа Активизируйте, пожалуйста, TUN/TAP-устройства для сервера {IP вашего сервера}, а так же включите NAT). Для других хостеров может быть не актуально, поскольку это все может быть включено, но скорей всего - нет :)
    4. Лезем через ssh на сервак. Редактируем /etc/yum.conf. Ищем строчку plugins=1. Если стоит 0 то все нормально, если нет то правим.
    5. Коммандуем

    Code:
    # yum install openvpn
    Соглашаемся на установку. Если же послали куда подальше, то либо не выполнили пункт 4, если не помогло то меняем репозиторий юма
    6. Ну вот поставили... Теперь создаем конфигурационные файлы

    Code:
    # touch /etc/openvpn/openvpn.conf
    # mkdir /etc/openvpn/ccd
    # mkdir /etc/openvpn/keys
    # cp -r /usr/share/doc/openvpn-2.0.9/easy-rsa/ /etc/openvpn/
    # cp /usr/share/doc/openvpn-2.0.9/easy-rsa/openssl.cnf /etc/openvpn
    # cd /etc/openvpn/easy-rsa
    # chmod +x clean-all
    # chmod +x build*
    
    7. Редактируем /etc/openvpn/easy-rsa/vars

    Code:
    export KEY_COUNTRY=RU
    export KEY_PROVINCE=MSK
    export KEY_CITY=MOSCOW
    export KEY_ORG="OpenVPN-TEST-INSTALLATION"
    export KEY_EMAIL="[email protected]"
    
    8. Создаем ключи

    Code:
    #  cd /etc/openvpn/easy-rsa
    #  . ./vars
    #  ./clean-all
    
    Будут спрашивать данные для сертификата, лучше отвечать ближе к правде, хотя и не обязательно:

    Code:
    #  ./build-ca
    
    Аналогично, отвечать нужно на все вопросы. Common name должно быть server. На 2 вопроса отвечать y:

    Code:
    #  ./build-key-server server
    
    Создаем ключ шифрования:

    Code:
    #  ./build-dh
    
    Создаем клиентский сертификат. Если у нас несколько клиентов, то повторяем этот шаг несколько раз, меняя номер клиента. В Common name указываем то же самое что и в параметре запроса (client1 - прим.):

    Code:
    #  ./build-key client1
    
    9. Топаем в /etc/openvpn. И радактируем конфиг openvpn.conf. Итак!!! То чего все так долго ждали!!! Рабочий конфиг сервера :)

    Code:
    port указываем нужным нам порт
    proto tcp 
    dev tun 
    local указываем внешний айпишник сервера
    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 
    server 10.8.0.0 255.255.255.0 
    ifconfig-pool-persist ipp.txt 
    push "route 10.8.0.1"
    push "redirect-gateway def1"
    
    push "dhcp-option DNS 10.8.0.1" 
    push "dhcp-option WINS 10.8.0.1" 
    keepalive 10 320 
    tun-mtu 1500
    comp-lzo
    user nobody 
    max-clients 10
    
    client-to-client
    group nobody 
    persist-key 
    persist-tun
    mssfix 1450
    status /etc/openvpn/openvpn-status.log
    log /etc/openvpn/openvpn.log
    verb 4
    
    Если нужно в ручную указывать айпишник для клиента то редактируем файл ipp.txt в директории /etc/openvpn на клиента строчку следующего вида:

    client1,10.8.0.4



    10. Прокидываем нат для выхода на внешку:

    Code:
    #  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    
    На VPS на базе Virtuozzo вместо первой команды надо выполнить (если не знаете че за хуета то устанавливаем опытным путем... не соединяется со страницами - значит эта хрень стоит :)):

    Code:
    #  iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source IP_АДРЕС_ВАШЕГО_ВДС
    
    Выполнять нужно либо ту, либо эту комманду... хотя ниче не будет если обе выполнтие... После чего чтоб все вступило в силу выполняем:

    Code:
    #  echo 1 > /proc/sys/net/ipv4/ip_forward
    
    11. Запускаем openvpn

    Code:
    #  service openvpn start
    
    Либо

    Code:
    #  /etc/init.d/openvpn start
    
    Разницы нет. Если все нормально сделали то выдаст OK

    12. Сервак настроили. Теперь настраиваем клиента. Описывать не буду как че делать - выложу один конфиг и какие ключи слить надо. Итак сливаем файлы ca.crt, client01.crt, client01.key (все находятся в /etc/openvpn/easy-rsa/keys). А вот и конфиг клиента для OpenVPN :

    Code:
    client
    port указываем порт на котором работаем 
    dev tun 
    proto tcp 
    remote сервак порт
    resolv-retry infinite 
    nobind 
    route-method exe 
    route-delay 2 
    persist-key 
    persist-tun 
    mute-replay-warnings 
    ca "ca.crt" 
    cert "client2.crt" 
    key "client2.key" 
    
    ping 15
    ping-restart 45
    ping-timer-rem 
    
    tun-mtu 1500
    
    ifconfig 10.8.0.4 255.255.255.0
    dhcp-option DNS 10.8.0.1
    dhcp-option WINS 10.8.0.1
    
    comp-lzo 
    ns-cert-type server 
    cipher BF-CBC 
    verb 4 
    mute 20 
    
    Все... цепляемся и радуемся. Если происходит ситуация, что при загрузке страниц висит ожидание открытия страницы... короче сервак найден, но страницы не грузит то меняем значение mtu (строка tun-mtu) в конфигах как сервака (после изменений перезагрузить не забудьте коммандой service openvpn restart) так и клиента на меньшее зчение, например на 1000. У меня именно такая ситуация была, поскольку сетевое оборудование передавало пакеты меньше 1500, поставив 1000 - я избавился от геммороя :)) Кому интересно что такое MTU читайте документацию и учите матанализ :)
     
    #1 2pick, 20 Oct 2010
    Last edited: 20 Oct 2010
    nynenado, avin, alextrust and 8 others like this.
  2. Tn1x0T

    Tn1x0T New Member

    Joined:
    15 Oct 2010
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Хорошая статья. Для новичков в nix'a=).
    P.S Не значительная опечатка;)
    11. Запускаем openvpn

    Код:

    # servie openvpn start

    Должно быть service.
     
  3. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Спасибо :)
     
  4. obama

    obama New Member

    Joined:
    23 Dec 2010
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Извиняюсь за глупый вопрос) но
    не радует строчка

    и что нужно прописать, чтобы никакого логирования не было
     
  5. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Банальное отключение...
    log /dev/null
    status /dev/null
    log-append /dev/null
    verb 0

    Все логи отправляются в пустоту... Если откомментировать то логи пишутся по умолчанию. Поэтому вот так.
     
    1 person likes this.
  6. stopxaker

    stopxaker Elder - Старейшина

    Joined:
    6 Sep 2008
    Messages:
    269
    Likes Received:
    284
    Reputations:
    18
    Замечательная статья , давно ничего подобного не читал на ачате , автору однозначно +
     
  7. Catch_t

    Catch_t New Member

    Joined:
    18 Dec 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Какие технические характеристири должны быть у VPS для нормального функционирования?
     
  8. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Посмотри на Фёрсте самый дешевый тариф. заглаза хватить должно
     
  9. antiprisma

    antiprisma New Member

    Joined:
    14 Apr 2012
    Messages:
    29
    Likes Received:
    0
    Reputations:
    0
    На мой взгляд не очень хорошая мысль обустраивать свой vpn на росийском хостинге. А за статью +
     
  10. don cicio

    don cicio New Member

    Joined:
    10 Jan 2007
    Messages:
    5
    Likes Received:
    1
    Reputations:
    2
    Спасибо за статью. было бы так же полезно узнать как вообще отлючить любое логирование на сервере. что бы ни ссш, фтп, никаких логов не велось.
     
  11. antiprisma

    antiprisma New Member

    Joined:
    14 Apr 2012
    Messages:
    29
    Likes Received:
    0
    Reputations:
    0
    Если у меня предпологаетса при каждом перезапуске сервера изменение ip можно ли в качестве ип указать 0.0.0.0?
     
  12. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Ну так это для примера

    Смысл? на уровне датацентра ведется все


    Лучше вообще не указывать этот параметр.
     
  13. icyclopys

    icyclopys Member

    Joined:
    11 Jul 2012
    Messages:
    112
    Likes Received:
    80
    Reputations:
    2
    Не понимаю как через SSH редактировать /etc/yum.conf.
    На четвертом шаге уже ругается. D:


    АПД
    Нашел. Но уже пишет мол отсутствует фаил на сервере.
     
    #13 icyclopys, 24 Sep 2012
    Last edited: 24 Sep 2012
  14. emomasson

    emomasson Member

    Joined:
    27 Jul 2010
    Messages:
    174
    Likes Received:
    12
    Reputations:
    5
    Отличная статья, только может перенести в раздел линукс?
     
  15. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Статья в априоре работать не может... она не Папа Карло :))
    Статья может обучать.
     
  16. 2pick

    2pick Elder - Старейшина

    Joined:
    17 Mar 2007
    Messages:
    117
    Likes Received:
    39
    Reputations:
    2
    Ууу батенька... с такими познаниями консоли - вам азам линукса надо бы обучаться, а не впн ставить :)
    миднайт коммандер поставь для начала
     
  17. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    187
    Reputations:
    5
    на шаге номер 6 испытал затруднения.
    У ТС есть такие команды:
    У меня Linux SentOS 5.3, при команде # yum install openvpn
    скачивает версию не как у ТС, openvpn-2.0.9 а более новую openvpn-2.2.2
    Логично будет предположить что номера openvpn в командах что выше нужно просто заменить с openvpn-2.0.9 на openvpn-2.2.2
    При замене номера верисии на 2.2.2.
    Первая команда проходит с успехом, а вот вторая нет
    получаем ответ

    и где брать не достающий файл?
     
  18. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    глянуть какие папки в той дире есть и заменить на соответствующее название?
     
  19. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    187
    Reputations:
    5
    вот что имеем

    PHP:
    # cd /usr/share/doc/openvpn-2.2.2/easy-rsa
    # ls
    1.0  2.0  Windows
    # cd 2.0
    # ls
    build-ca          build-key-server  Makefile           revoke-full
    build
    -dh          build-req         openssl-0.9.6.cnf  sign-req
    build
    -inter       build-req-pass    openssl-0.9.8.cnf  vars
    build
    -key         clean-all         openssl-1.0.0.cnf  whichopensslcnf
    build
    -key-pass    inherit-inter     pkitool
    build
    -key-pkcs12  list-crl          README
    Называется бери что хочешь... аж три файла openssl
     
    #19 rudi, 10 Mar 2013
    Last edited: 10 Mar 2013
  20. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    запили свой конфиг тогда, в инете вроде маны есть