Проведемо встановлення та налаштування OpenVPN на Centos 7
Установка
yum -y update
yum -y install epel-release
yum -y install openvpn
Генеруємо сертифікат:
openssl genrsa -out /etc/openvpn/ca.key 4096
openssl req -x509 -new -key /etc/openvpn/ca.key -days 3650 \
-out /etc/openvpn/ca.crt \
-subj '/C=RU/ST=Kiev/L=Kiev/CN=root'
Генеруємо сертифікат для сервера і підписуємо його кореневим
openssl genrsa -out /etc/openvpn/server.key 4096
openssl req -new -key /etc/openvpn/server.key -days 365 \
-out /etc/openvpn/server.crt \
-subj '/C=RU/ST=Kiev/L=Kiev/CN=server'
openssl x509 -req -days 365 -in /etc/openvpn/server.crt \
-CA /etc/openvpn/ca.crt -CAkey /etc/openvpn/ca.key \
-set_serial 01 -out /etc/openvpn/server.crt
Генеруємо ключі:
openssl dhparam -out /etc/openvpn/dh2048.pem 2048
Створюємо файл конфігурації /etc/openvpn/server.conf з наступним змістом:
cd /etc/openvpn mode server tls-server port 1194 proto udp dev tun log /var/log/openvpn.log status /var/log/openvpn-status.log ca ca.crt cert server.crt key server.key dh dh2048.pem ifconfig-pool-persist ipp.txt server 10.8.0.0 255.255.255.0 client-to-client push "dhcp-option DNS 8.8.8.8" push "redirect-gateway def1" user nobody group nobody keepalive 10 120 comp-lzo persist-key persist-tun cipher AES-256-CBC verb 3
Запуск VPN серверу:
openvpn --config /etc/openvpn/server.conf
Відкриваємо порт 1194 (стандартний порт для нашого VPN):
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
Для настройки виходу в інтернет потрібно налаштувати правила iptables:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Де, 10.8.0.0/24 – підмережа зазначена в настройках сервера VPN.
tun0 – мережевий інтерфейс.
Налаштовуємо sysctl.conf:
sysctl net.ipv4.ip_forward=1
Додамо в файл /etc/sysctl.conf рядок:
net.ipv4.ip_forward = 1
Створюємо сервіс запуску OpenVPN для systemd. Для цього створюємо файл /etc/systemd/system/openvpn-server.service з наступним змістом:
[Unit] Description=OpenVPN server After=network.target [Service] ExecStart=/usr/sbin/openvpn --config /etc/openvpn/server.conf [Install] WantedBy=multi-user.target
Даємо право на виконання командою:
chmod +x /etc/systemd/system/openvpn-server.service
Та вмикаємо:
systemctl enable openvpn-server
Запуск сервісу:
systemctl start openvpn-server
Налаштовуємо файли клієнту
Генеруємо сертифікат клієнта на сервері
openssl genrsa -out /etc/openvpn/client1.key 4096
openssl req -new -key /etc/openvpn/client1.key -days 3650 \
-out /etc/openvpn/client1.crt \
-subj '/C=RU/ST=Kiev/L=Kiev/CN=client1'
openssl x509 -req -days 3650 -in /etc/openvpn/client1.crt \
-CA /etc/openvpn/ca.crt -CAkey /etc/openvpn/ca.key \
-set_serial 01 -out /etc/openvpn/client1.crt
Клієнту видаємо з сервера файли ca.crt, client1.crt и client1.key
Створюємо файл конфіга для клієнта client.conf:
client tls-client dev tun proto udp remote 123.123.123.123 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 3
Де, 123.123.123.123 – зовнішня IP адреса нашого сервера
Файли сервера повинні бути в одній директорії з файлів конфігурації налаштування клієнта.
Запуск клієнта на linux:
openvpn --config /etc/openvpn/client.conf
Для підключення до VPN на Windows можна використовувати програму OPENVPN GUI: https://openvpn.net/community-downloads/
На цьому, налаштування OpenVPN завершена.