Все настройки были проделаны на машине с осью:
Distributor ID: Centos
Description: Centos 7.0
Release: 7.0
Подключение к серверу:
Подключаемся к нашей машине по протоколу SSH, указываем в строке Host Name (or IP address) адрес нашего сервера и нажимаем Open, для подключения я использую PuTTY и SecureCRT.
Учитывайте для покупки VPS нужна почта, помните урок Росса и пользуйтесь анонимной почтой.
Установка OpenVPN:
Подключаем репозитарий epel к Centos 7.0
yum -y install epel-release
Устанавливаем OpenVPN
yum -y install openvpn
Создаем сертификаты:
Для работы сервера openvpn необходимо создать соответствующие сертификаты. Для этого воспользуемся программой Easy-RSA, которая генерирует сертификаты с помощью утилиты openssl.
Создаем директорию ключей
mkdir /etc/openvpn/keys
Устанавливаем архиватор zip
yum -y install unzip zip
Устанавливаем wget
yum -y install wget
Скачиваем и устанавливаем утилиту Easy-RSA
cd /etc/openvpn/keys
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
Распаковываем
unzip master.zipcd /etc/openvpn/keys/easy-rsa-master/easyrsa3
Создаем структуру публичных ключей PKI ключей
mv vars.example vars./easyrsa init-pki
Создаем удостоверяющий центр СА
./easyrsa build-ca
Note: using Easy-RSA configuration from: ./vars
Generating a 2048 bit RSA private key
.+++
.........................................................................+++
writing new private key to '/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key.GKwCGouHpy'
Enter PEM pass phrase: Тут необходимо придумать пароль для подписания сертификата
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:vpn
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/ca.crt
Не забудьте указанный вами пароль. Его нужно будет вводить каждый раз при создании нового сертификата openvpn.
Мы получили 2 ключа:
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/ca.crt
Первый ключ секретный, его нужно оставить на сервере и никому не отдавать.
Второй — открытый, его мы будем вместе с пользовательскими сертификатами передавать клиентам.
Создаем запрос сертификата для сервера без пароля с помощью опции nopass, иначе придется вводить пароль с консоли при каждом запуске сервака
./easyrsa gen-req server nopass
Note: using Easy-RSA configuration from: ./vars
Generating a 2048 bit RSA private key
........................+++
..............................................................................................+++
writing new private key to '/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/server.key.vCUQuueIih'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:
Keypair and certificate request completed. Your files are:
req: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/reqs/server.req
key: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/server.key
Подписываем запрос на получение сертификата у нашего СА
Note: using Easy-RSA configuration from: ./vars
You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 3650 days:
subject=
commonName = server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /etc/openvpn/keys/easy-rsa-master/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :PRINTABLE:'server'
Certificate is to be certified until Sep 10 00:31:21 2025 GMT (3650 days)
Write out database with 1 new entries
Data Base Updated
Certificate created at: /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt
В процессе работы скрипта вводим пароль от CA, который указывали раньше и отвечаем на вопрос yes. Мы получили подписанный удостоверяющим центром сертификат для сервера — /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt
Генерируем ключ Диффи-Хелмана
./easyrsa gen-dh
По завершению работы скрипта получаем файл dh сертификата — /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/dh.pem.
Копируем в папку /etc/openvpn все необходимые для работы openvpn сервера ключи
cp pki/ca.crt /etc/openvpn/ca.crt
cp pki/dh.pem /etc/openvpn/dh.pem
cp pki/issued/server.crt /etc/openvpn/server.crt
cp pki/private/server.key /etc/openvpn/server.key
Создаем ключ для клиента openvpn
./easyrsa gen-req client nopass ./easyrsa sign-req client client
Процедура аналогична созданию сертификата для сервера. Так же вводим пароль, отвечаем yes. В результате получаем подписанный сертификат клиента:
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/client.crt
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/client.key
Настраиваем OpenVPN:
Скачиваем и устанавливаем редактор nano
yum install nano
Создаем фаил конфигурации openvpn
yum install nano
port 16785 # используем нестандартные порты для работы
proto udp # протокол может быт и tcp, если есть необходимость в этом
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
server 10.0.0.0 255.255.255.0 # подсеть для туннеля, может быть любой
route 192.168.20.0 255.255.255.0 # указываем подсеть, к которой будем обращаться через vpn
push "route 192.168.20.0 255.255.255.0" # передаем маршрут клиентам
ifconfig-pool-persist ipp.txt # файл с записями соответствий clinet - ip
client-to-client # позволяет клиентам openvpn подключаться друг к другу
client-config-dir /etc/openvpn/ccd # директория с индивидуальными настройками клиентов
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 0
Создаем необходимые директории
mkdir /etc/openvpn/ccd && mkdir /var/log/openvpn
Создаем файл конфигурации клиента в папке, указанной в параметре client-config-dir
nano /etc/openvpn/ccd/client
iroute 192.168.20.0 255.255.255.0
Запускаем сервер
systemctl start openvpn@server
Отключаем SELinux
nano /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Чтобы изменения вступили в силу перезагружаемся
reboot
После перезагрузки снова запускаем сервер
systemctl start openvpn@server
Проверяем запустился или нет
netstat -tulnp | grep 16785
udp 0 0 0.0.0.0:16785 0.0.0.0:* 7605/openvpn
Сервер запустился на указанном порту.
Добавляем сервер openvpn в автозагрузку
systemctl enable openvpn@server
Настраиваем firewalld:
Произведём установку rpm-пакета, содержащего службу firewalld и выполним запуск соответствующей службы:
yum install firewalld
systemctl unmask firewalld
systemctl enable firewalld
systemctl start firewalld
Открываем нужный UPD порт
firewall-cmd --zone=public -add-port=16785/udp --permanent
Перехагружаем правила
firewall-cmd --reload
Настраиваем OpenVPN client для Windows:
Заходим на официальную страницу openvpn client и скачиваем клиента под windows.
Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client.crt, client.key из каталога /tmp/keys на сервере
Настраиваем конфигурационный файл .ovpn (По умолчанию расположен C:\Program Files\OpenVPN\config)
dev tun
proto udp
remote здесь указываем ip адрес нашего сервера openvpn
port 16785
client
resolv-retry infinite
ca ca.crt
cert user1.crt
key user1.key
persist-key
persist-tun
comp-lzo
Безопасного серфа.