OpenVPN — Весь траффик через VPN

Цель:

Пустить весь траффик с любого из устройств через VPN. Максимальное удобство подключение новых устройств, без создания учетных записей, создание паролей и т.д. Быстрое и шифрованное подключение.

Все шаги были выполнены на CentOS 7.

Установим репозиторий EPEL, если его еще нет в системе и установим нужные пакеты:

yum install epel-release -y
yum install openvpn easy-rsa -y

Создаем файл конфигурации:

vim /etc/openvpn/server.conf

И копируем в него следующее:

local CHANGE_THIS_ON_YOUR_PUBLIC_IP
port 1194

proto tcp
dev-type tun
dev tun

ca ca.crt
cert server.crt
key server.key

dh dh2048.pem

topology subnet
server 10.8.0.1255.255.255.0

txqueuelen 250
keepalive 300 900

cipher AES-128-CBC
ncp-ciphers AES-128-GCM

user nobody
group nobody

duplicate-cn

persist-key
persist-tun

status openvpn-status.log

push "redirect-gateway def1"
push "remote-gateway 10.8.0.1"
push "dhcp-option DNS 8.8.8.8"

Создаем папку для ключей и копируем нужные скрипты для создания их:

mkdir -p /etc/openvpn/easy-rsa/keys
cp -a /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa

Для удобства можем сразу в переменные среды указать информацию нужную для создания ключей, дабы в будущем ее постоянно не вводить:

vim /etc/openvpn/easy-rsa/vars

И приведем его к такому виду:

export KEY_COUNTRY="UA"
export KEY_PROVINCE="UA"
export KEY_CITY="Kiev"
export KEY_ORG="openvpn"
export KEY_EMAIL="[email protected]"
export KEY_OU="VPN"
export KEY_NAME="openvpn"
export KEY_CN="openvpn.artem.services"

Копируем конфигурацию OpenSSL:

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

Создадим корневой сертификат:

./build-ca

Создадим ключ и публичный сертификат:

./build-key-server server

Создадим Diffie-Hellman ключ:

./build-dh

Перейдем в каталог с ключами и сертификатами, которые мы создали:

cd /etc/openvpn/easy-rsa/keys

И скопируем нужные нам файлы в каталог OpenVPN'a:

cp -a dh2048.pem ca.crt server.crt server.key /etc/openvpn

(!) Важно чтобы после копирования у этих файлов сохранились права

Создадим сертификат и ключ для клиента:

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

Дальше конфигурация приводится для iptables, если используется firewalld то отключить его можно следующим образом:

yum install iptables-services -y
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables --flush

Добавляем правило в iptables и сохраняем:

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

(!) Обязательно проверьте правильность названия интерфейса, в моем случае это eth0
В файле "/etc/sysctl.conf" разрешаем форвардинг пакетов:

net.ipv4.ip_forward = 1

И перезапускаем службу сети:

systemctl restart network.service

Добавляем службу OpenVPN в автозапуск и стартуем ее:

systemctl -f enable [email protected]
systemctl start [email protected]

Создадим файл конфигурации клиента для подключения к серверу, сразу вставив нужные ключи и сертификаты:

vim openvpn.ovpn

И скопируем в него следующее:

client
remote artem.services 1194

nobind

remote-cert-tls server

cipher AES-128-CBC

setenv opt ncp-ciphers AES-128-GCM

setenv opt block-outside-dns

dev tun

proto udp

<ca>
СОДЕРЖИМОЕ ФАЙЛА ca.crt
</ca>

<cert>
СОДЕРЖИМОЕ ФАЙЛА client.crt
</cert>

<key>
СОДЕРЖИМОЕ ФАЙЛА client.key
</key>

Дальше этот файл можно импортировать на устройства клиентов и подключаться к серверу.

Метки: Метки