banner

Установка vpn или поднимаем собственный openvpn

Продолжаю тему около линуксойдных дел.
За последние 2 года накопилось немало опыта работы с linux, решил поделиться со всеми, тем, о чём ещё хоть как то помню, тем более тема с vpn в последнее время актуальна среди вебмастеров :)
Что имеем ? Желание поднять свой vpn, debian based linux, немного времени и нервов :)
Когда я пытался поставить свой vpn, у меня это удалось только с 3-4 попытки и после прочтения несколько статей. Поэтому попытаюсь изложить как можно точнее.

Устанавливаем сам openvpn:

apt-get install openvpn

Тут проблем возникнуть не должно.
Дальше нужно быть как можно внимательней, всякие мелочи могут оказаться важными.
На всякий случай проверяем наличие папки /etc/openvpn:

 mkdir /etc/openvpn

Если она есть, выскочит ошибка, если нет - создастся.
Теперь нужно найти примеры сертификатов и конфинги:

whereis openvpn

Так как конфиги могут находиться абсолютно в любой папке, придётся поискать их самостоятельно.
У меня они находились тут: /usr/share/doc/openvpn/examples
Из этой папки нам потребуются только 2: easy-rsa,sample-config-files

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa
cp -r /usr/share/doc/openvpn/examples/sample-config-files/*  /etc/openvpn/sample-config-files

Смотрим чтобы эти папки скопировались удачно и выполняем такую последовательность команд:

chmod -r  777 /etc/openvpn
cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
./build-key-server server

Последние 2 команды будут спрашивать всякий бред, можно туда можно вводить что угодно, главное не забыть, что туда вводили ;)
На все вопросы отвечаем y.
Теперь создадим 1024 битный шифр:

./build-dh

После этого создаём сертификат для самого клиента:

./build-key client

Опять отвечаем на глупые вопросы, со всем соглашаемся и не забываем о том, что ввели в качестве пароля.
Далее нам нужно найти файл server.conf в папке sample-config-files.
У меня он находился в архиве server.conf.gz.
Почему я говорю что нужно найти, а не взять ? Потому, что в разных версиях и системах это файлы и папки могут находится в разных местах.
Дописываем или изменяем в 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"

Делаем правильный роутинг:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Или:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source ip сервера

Зависит от вашего сервера или способа виртуализации vps.
Пробуем запустить:

/etc/init.d/openvpn start

Если пишет failed, то значит вам не повезло и вы в чём то ошиблись .
Включить логирование ошибок можно добавив в конфиг такую строку:

log /var/log/openvpn.log

Теперь перейдём к клиентской части.
Для примера возьмём виндовый клиент openvpn gui.
Скачиваем и устанавливает отсюда:
http://openvpn.se/download.html
После установки заходим в папку sample-config и редактируем client.ovpn.

remote my-server-1 1194

Заменяем на:

remote ip вашего сервера 1194

Копируем себе на клиента файлы с сервера и настроенный *.ovpn в папку config:

/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/client1.crt
/etc/openvpn/easy-rsa/keys/client1.key
/etc/openvpn/easy-rsa/keys/client1.csr

Запускаем клиента, нажимаем connect и радуемся vpn :)
Если у вас windows 7 и клиент отказывается работать, то в конфинг стоит добавить:

route-method exe
route-delay 2

И в свойствах exe-файла поставить галочку "запускать от имени администратора".

  • Lamazak

    Спасибо, статья познавательная. Но теперь вопрос в следующем. Вылетает при коннекте read UDPv4: Connection reset by peer (WSAECONNRESET) (code=10054)
    как быть?

  • http://klipner.ru rushter

    Возможные причины:
    1) На таком порту сидит какой-то другой софт
    2) Openvpn настроен на другой порт
    3) Соединения блокируются фаерволом сервера
    4) Указан не правильный внешний Ip
    Ну и статус openpvn проверь, может он вообще не запущен.
    И т.д. и т.п. :)
    В общем не достучаться до твоего openvpn.