Thank you for reading this post, don't forget to subscribe!
Цель:
Пустить весь траффик с любого из устройств через 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= "admin@test.services" export KEY_OU= "VPN" export KEY_NAME= "openvpn" export KEY_CN= "openvpn.test.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 openvpn@server.service systemctl start openvpn@server.service |
Создадим файл конфигурации клиента для подключения к серверу, сразу вставив нужные ключи и сертификаты:
vim openvpn.ovpn |
И скопируем в него следующее:
client remote test.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 > |
Дальше этот файл можно импортировать на устройства клиентов и подключаться к серверу.