Проведём установку и настройку 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 завершена.