Установка OpenVPN на Centos 7

Рассмотрена установка openvpn на Centos 7. Вариант соединения клиент — интернет сервер. Чаще всего применяется для того чтобы сменить ip адрес в интернете, или допустим у вас динамический ip, а вам нужно сделать его статическим.

Настройка сервера openvpn Centos 7:

Официальная страница openvpn
Подключаем репозитарий epel

yum install epel-release

Устанавливаем openvpn и Easy-RSA

yum -y install openvpn
yum -y install easy-rsa

В директории для документации OpenVPN содержатся файлы для тестовой конфигурации программ. Скопируем в папку с openvpn и отредактируем конфигурационный файл. На момент написания статьи версия openvpn-2.4.1 — убедитесь в своей версии, ссылка и путь скорее всего будут уже другие, или просто поэтапно пройдите по пути нажимая первые буквы категорий и нажимая TAB.

cp /usr/share/doc/openvpn-2.4.1/sample/sample-config-files/server.conf /etc/openvpn/

Редактируем server.conf

vi /etc/openvpn/server.conf

Убираем комментарий «#» со строки где хранятся файлы клиента

client-config-dir ccd

Изменить строку на следующую. Если эта строка закомментирована то будет просто подключение к VPN серверу а трафик будет идти в обход VPN. У вас будет интернет но не будет через шлюз.

push "redirect-gateway def1 bypass-dhcp"

Уберем «;» и заменим ip в строках push «dhcp-option DNS 208.67.222.222» и push «dhcp-option DNS 208.67.220.220» на сервера google

push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 4.4.4.4"

Убираем привилегии для openvpn. Удалить «;» для строк

user nobody
group nobody

Полная настройка конфигурационного файла сервера VPN /etc/openvpn/server.conf

port 1194
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
ifconfig-pool-persist ipp.txt
client-config-dir ccd
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 4.4.4.4"
keepalive 10 120
tls-auth ta.key 0 
cipher AES-256-CBC
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1

Создаем ключи VPN

Создаем папку где будут храниться ключи

mkdir -p /etc/openvpn/easy-rsa/keys

Копируем скрипты для генерации сертификатов

cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

Меняем содержание. Чтобы каждый раз при генерации не вводить одни и те же значения.

vi /etc/openvpn/easy-rsa/vars

Меняем на свои значения

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
...
export KEY_NAME="EasyRSA"
...
export KEY_CN="CommonName"

Убираем невозможность из-за не определения версии программы

cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf

Далее

cd /etc/openvpn/easy-rsa/
source ./vars
./clean-all

Вводим организацию выдавшую сертификат, на вопросы просто жмем enter, ответы уже введены в vars

./build-ca

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

./build-key-server server
./build-dh
openvpn --genkey --secret keys/ta.key

Копируем ключи в конфигурационную папку openvpn

cd /etc/openvpn/easy-rsa/keys/
cp dh2048.pem ca.crt server.crt server.key ta.key /etc/openvpn/

Создаем клиента

cd /etc/openvpn/easy-rsa/
./build-key client

Устанавливаем iptables

yum install iptables-services -y

Возможно у вас уже отключен selinux.
Отключаем selinux

mcedit /etc/sysconfig/selinux
SELINUX=disabled

Включение и выключение соответственных файрволов.

systemctl mask firewalld
systemctl stop firwalld
systemctl enable iptables
systemctl start iptables

Сброс правил файрола iptables

iptables --flush

Создаем правило чтобы соединения маршрутизировались нашей подсетью openvpn

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables

Активируем форвардинг

vi /etc/sysctl.conf

Добавить

net.ipv4.ip_forward=1

Перезапускаем сетевой сервис

systemctl restart network.service

Проверяем применялись ли изменения, если 1 значит применялись

cat /proc/sys/net/ipv4/ip_forward

Всё готово для запуска OpenVPN на стороне сервера, добавляем его в systemctl

systemctl -f enable openvpn@server.service

Настройка клиента openvpn Centos 7:

Устанавлвиваем клиент OpenVPN, скачать можно тут. После установки OpenVPN скачиваем файлы ca.crt client.crt client.key ta.key с папки /etc/openvpn/easy-rsa/keys/ в папку машины с которой планируем подключаться C:\Program Files\OpenVPN\config\ и создаем в ней файл clientfirst.ovpn например, но лучше не просто client.ovpn потому что VPN клиент уже содержит пример подключения в папке C:\Program Files\OpenVPN\sample-config\
Строку «ЗДЕСЬ IP ВАШЕГО СЕРВЕРА» замените ip адресом вашего VDS/VPS или сервера.

client
dev tun
proto udp
remote ЗДЕСЬ IP ВАШЕГО СЕРВЕРА 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3

Запускаем OpenVPN, работаем.


Некоторые заметки:
tls-auth ta.key 0 — На стороне сервера tls-auth ta.key 1 — На стороне клиента.
Возможно в какой-то момент пропущена необходимость перезагрузки сервера. Бывает еще какая-то ошибка из-за несоответствия времени.


Если вам нужно просто сменить ip адрес в браузере то можете рассмотреть эту статью:
прокcи сервер centos 7

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

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