В этой статье мы покажем вам, как установить и настроить сервер OpenVPN на CentOS 7. OpenVPN является одним из наиболее популярных программных решений VPN, который реализует виртуальные методы частной сети для создания безопасного соединения точка-точка или сайт-сайт. Это руководство должно работать на других системах Linux VPS, так же хорошо, но было испытано и написано для CentOS 7. Установка OpenVPN на CentOS7 является легкой задачей, только тщательно выполняйте указанные ниже шаги, и вы должны сделать это менее чем за 10 минут.
ssh user@vps_IP
yum update
OpenVPN не доступен в официальном хранилище CentOS 7, поэтому сначала нам нужно добавить репозиторий Epel, а затем установить пакет:
Чтобы включить репозиторий Epel выполните следующую команду:
yum install epel-release
После того, как хранилище будет включено, установите пакеты OpenVPN и OpenSSL:
yum install openvpn openssl
Во-первых, сформируйте параметры (файл DH) Диффи-Хеллмана, который используется для защиты обмена ключами между сервером и клиентом. Эта команда может занять некоторое время, для работы, в зависимости от сервера.
openssl dhparam -out /etc/openvpn/dh.pem 2048
Сформировать файл ca.crt (Certificate Authority):
openssl genrsa -out /etc/openvpn/ca.key 2048 chmod 600 /etc/openvpn/ca.key openssl req -new -key /etc/openvpn/ca.key -out /etc/openvpn/ca.csr -subj /CN=OpenVPN-CA/ openssl x509 -req -in /etc/openvpn/ca.csr -out /etc/openvpn/ca.crt -signkey /etc/openvpn/ca.key -days 365 echo 01 > /etc/openvpn/ca.srl
Создайте сертификат сервера и ключ с помощью следующих команд, которые сгенерируют сертификат сервера и ключ:
openssl genrsa -out /etc/openvpn/server.key 2048 chmod 600 /etc/openvpn/server.key openssl req -new -key /etc/openvpn/server.key -out /etc/openvpn/server.csr -subj /CN=OpenVPN/ openssl x509 -req -in /etc/openvpn/server.csr -out /etc/openvpn/server.crt -CA /etc/openvpn/ca.crt -CAkey /etc/openvpn/ca.key -days 365
Вы можете скопировать и отредактировать конфигурацию OpenVPN по умолчанию или создать новый с нуля.
nano /etc/openvpn/server.conf
server 10.8.0.0 255.255.255.0 verb 3 key /etc/openvpn/server.key ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt dh /etc/openvpn/dh.pem keepalive 10 120 persist-key persist-tun comp-lzo push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" user nobody group nogroup proto udp port 1194 dev tun1194 status openvpn-status.log
Сохраните файл и включите службу OpenVPN в запуск при загрузке сервера:
systemctl enable openvpn@server systemctl start openvpn@server
Добавьте следующее правило iptables так, чтобы трафик мог покинуть VPN. Изменение eth0 с сетевым интерфейсом публичного сервера.
Iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Примечание: если вы используете VPS на базе openvz, вместо правила выше добавить:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source YOUR_SERVER_IP>
Наконец, мы также должны разрешить пересылку IP:
sysctl -w net.ipv4.ip_forward=1
Следующие команды сгенерируют сертификат клиента и ключ:
openssl genrsa -out /etc/openvpn/client.key 2048 chmod 600 /etc/openvpn/client.key openssl req -new -key /etc/openvpn/client.key -out /etc/openvpn/client.csr -subj /CN=OpenVPN-Client/ openssl x509 -req -in /etc/openvpn/client.csr -out /etc/openvpn/client.crt -CA /etc/openvpn/ca.crt -CAkey /etc/openvpn/ca.key -days 36525
Затем скопируйте следующие файлы на клиентскую машину
/etc/openvpn/ca.crt /etc/openvpn/client.crt /etc/openvpn/client.key
Запустите клиент OpenVPN со следующей конфигурацией.
client nobind dev tun redirect-gateway def1 bypass-dhcp remote YOUR_SERVER_IP 1194 udp comp-lzo yes duplicate-cn key /etc/openvpn/client.key cert /etc/openvpn/client.crt ca /etc/openvpn/ca.crt
Не забудьте изменить YOUR_SERVER_IP с помощью OpenVPN IP – адрес сервера.
Вот и все. Вы успешно установили и сконфигурировали OpenVPN сервер на CentOS 7 VPS.