Thank you for reading this post, don't forget to subscribe!
Цель:
Пустить весь траффик с любого из устройств через VPN. Максимальное удобство подключение новых устройств, без создания учетных записей, создание паролей и т.д. Быстрое и шифрованное подключение.
Все шаги были выполнены на CentOS 7.
Установим репозиторий EPEL, если его еще нет в системе и установим нужные пакеты:
yum install epel-release -yyum install openvpn easy-rsa -y |
Создаем файл конфигурации:
vim /etc/openvpn/server.conf |
И копируем в него следующее:
local CHANGE_THIS_ON_YOUR_PUBLIC_IPport 1194proto tcpdev-type tundev tunca ca.crtcert server.crtkey server.keydh dh2048.pemtopology subnetserver 10.8.0.1255.255.255.0txqueuelen 250keepalive 300 900cipher AES-128-CBCncp-ciphers AES-128-GCMuser nobodygroup nobodyduplicate-cnpersist-keypersist-tunstatus openvpn-status.logpush "redirect-gateway def1"push "remote-gateway 10.8.0.1"push "dhcp-option DNS 8.8.8.8" |
Создаем папку для ключей и копируем нужные скрипты для создания их:
mkdir -p /etc/openvpn/easy-rsa/keyscp -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-rsasource ./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 -ysystemctl mask firewalldsystemctl enable iptablessystemctl stop firewalldsystemctl start iptablesiptables --flush |
Добавляем правило в iptables и сохраняем:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADEiptables-save > /etc/sysconfig/iptables |
(!) Обязательно проверьте правильность названия интерфейса, в моем случае это eth0
В файле "/etc/sysctl.conf" разрешаем форвардинг пакетов:
net.ipv4.ip_forward = 1 |
И перезапускаем службу сети:
systemctl restart network.service |
Добавляем службу OpenVPN в автозапуск и стартуем ее:
systemctl -f enable openvpn@server.servicesystemctl start openvpn@server.service |
Создадим файл конфигурации клиента для подключения к серверу, сразу вставив нужные ключи и сертификаты:
vim openvpn.ovpn |
И скопируем в него следующее:
clientremote test.services 1194nobindremote-cert-tls servercipher AES-128-CBCsetenv opt ncp-ciphers AES-128-GCMsetenv opt block-outside-dnsdev tunproto udp<ca>СОДЕРЖИМОЕ ФАЙЛА ca.crt</ca><cert>СОДЕРЖИМОЕ ФАЙЛА client.crt</cert><key>СОДЕРЖИМОЕ ФАЙЛА client.key</key> |
Дальше этот файл можно импортировать на устройства клиентов и подключаться к серверу.