Настройка OpenVPN.

Это просто ещё одна инструкция по настройке OpenVPN сервера. Допустим что у нас уже есть VDS простой конфигурации (512mb памяти и т. п.). На нём установлена CentOS 6 или CentOS 7 и на него же мы будем ставить наш VPN сервер.

openvpn centos

Настраиваем OpenVPN сервер.

1. Приступаем.

Ставим необходимые пакеты и проводим первичные приготовления.

Для CentOS 6:
# yum install epel-release
# yum install openvpn easy-rsa

# mkdir -p /etc/openvpn/easy-rsa/keys
# cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
# cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
Для CentOS 7:
# yum install wget epel-release
# yum install openvpn
# cd /usr/local/src/
# wget https://github.com/OpenVPN/easy-rsa-old/archive/2.3.3.tar.gz
# tar xvfz 2.3.3.tar.gz
# mkdir -p /etc/openvpn/easy-rsa/keys
# cp -arvp /usr/local/src/easy-rsa-old-2.3.3/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
# cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

2. Готовим окружение.

Открываем файл /etc/openvpn/easy-rsa/vars и при необходимости изменяем в нём следующие строки:

export KEY_COUNTRY="RU"
export KEY_PROVINCE="RU"
export KEY_CITY="Moscow"
export KEY_ORG="Superorg"
export KEY_EMAIL="info@superdomain.com"
export KEY_OU="SuperorgVPN"

Генерируем сертификат и ключ для сервера (здесь для него используется имя server):

# cd /etc/openvpn/easy-rsa
# source ./vars 
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-dh
# cd /etc/openvpn/easy-rsa/keys/
# cp dh2048.pem ca.crt server.crt server.key /etc/openvpn/

В ходе создания сертификата, система предложит установить на него пароль. Делать это или нет, каждый для себя решает сам. Возможно, если VPN настраивается на собственном сервере и только для собственного использования, пароль на сертификаты можно и не устанавливать.

3. Пишем конфиг OpenVPN сервера.

И в 6, и в 7 версии CentOS открываем файл /etc/openvpn/server.conf и прописываем следующее…

# cat /etc/openvpn/server.conf
local 1.2.3.4
port 3333
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
mssfix
fragment 1300
sndbuf 524288
rcvbuf 524288
push "sndbuf 524288"
push "rcvbuf 524288"
log openvpn.log
verb 5

1.2.3.4 — IP сервера, 3333 — порт, на котором будет работать OpenVPN, лог можно отправить в /dev/null при необходимости. Здесь так же сразу же используется увеличенный буфер. Подробнее об этом нужно прочитать в отдельной заметке.

Конфиг сохраняем, сервис openvpn перезапускаем и добавляем его в автозапуск.

Для CentOS 6:
# chkconfig openvpn on
# service openvpn restart
Для CentOS 7:
# systemctl -f enable openvpn@server.service
# systemctl restart openvpn@server.service

4. Настраиваем маскарад и разрешаем форвардинг.

Для CentOS 6:

В iptables добавляем следующее правило:

# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# service iptables save
Для CentOS 7:

В FirewallD выполняем следующие команды:

# firewall-cmd --permanent --add-masquerade
# INTFS=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}')
# firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $INTFS -j MASQUERADE
# firewall-cmd --reload

Включаем форвардинг (и для 6, и для 7 версии):

# cat /etc/sysctl.conf 
net.ipv4.ip_forward = 1 
# sysctl -p

5. Создаём сертификаты для клиента.

Здесь для него используется имя client.

# cd /etc/openvpn/easy-rsa
# ./build-key client
# mkdir /root/clientserts
# mv /etc/openvpn/easy-rsa/keys/client.* /root/clientserts/
# cp /etc/openvpn/easy-rsa/keys/ca.crt /root/clientserts/
# cd /root/
# zip -r -9 clientserts.zip clientserts/

В итоге, мы получаем архив clientserts.zip, в котором для настройки OpenVPN на десктопе, нам будут нужны следующие файлы:

client.crt
client.key
ca.crt

Остаётся только настроить наш софт на ПК для работы с OpenVPN.

Настраиваем OpenVPN клиенты.

Настраиваем подключение в Linux, с помощью NetworkManager следующим образом…

Окно основных настроек:

Окно дополнительных настроек:

В Windows для настройки OpenVPN соединения можно пойти вот таким путём:

  • Скачиваем с офф. сайта GUI для OpenVPN в Windows
  • Сертификаты и ключ из архива закидываем в директорию C:\\Program Files\\OpenVPN\\config\\
  • Там же создаём client.ovpn файл со следующим содержимым:
client
remote 1.2.3.4 3333
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\client.crt"
key "C:\\Program Files\\OpenVPN\\config\\client.key"
comp-lzo yes
mssfix
fragment 1300
dev tun
proto udp
nobind
auth-nocache
script-security 2
persist-key
persist-tun
  • Запускаем GUI OpenVPN, с помощью которого и подключаемся с созданным конфигом.

После того, как OpenVPN настроен, а подключение к нему установлено, имеет смысл сразу же проверить, всё ли работает корректно. Например можно зайти на 2ip.ru и посмотреть, какой IP и какая информация о подключении отображается там. Если всё сделано верно, 2ip покажет вместо нашего реального IP, адрес настроенного только что сервера. С этого момента, можно приступать к работе в сети.

@SysadminNotes

5 thoughts on “Настройка OpenVPN.

  1. В Windows для настройки OpenVPN
    …..
    cert «C:\\Program Files\\OpenVPN\\config\\client.crt»
    key «C:\\Program Files\\OpenVPN\\config\\server.key»
    …..
    в последнем не server.key, а client.key

    + порты лучше указать заранее, что можно выбрать только 1194 в случае с udp

  2. Статья была переработана и актуализирована и для CentOS 6, и для CentOS 7. В конфиг сервера были добавлены увеличенные буферы.

    > + порты лучше указать заранее, что можно выбрать только 1194 в случае с udp

    Сорри за действительно долгий ответ. Не совсем понял о чём речь в этом месте — я без проблем указываю не стандартный порт для UDP (7194, например), и всё работает корректно.

    1. Тут скорее посыл был к открытым стандартным портам на сервере, не так выразился, но в любом случае на собственном опыте рекомендую выбирать режим tcp и 443 порт, уж слишком много админов и публичных вай-фаев блокируют все остальное 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *