источник: Install OpenVPN on Fedora 26- оказалось некоторые неточности которые мешают воспроизвести инструкцию как она есть. Таким образом, ниже инструкция которая поможет избежать проблем при настройке сервера и клиента с которым я столкнулся.
Настройка сервера OpenVPN
1) Установка:
sudo dnf install openvpn easy-rsa
2) Копируем rsa скрипты в домашнюю папку:
cp -ai /usr/share/easy-rsa/3/* ~/openvpn-ca
cd ~/openvpn-ca
3) Создаем новый PKI и генерируем CA парыключей/сертификаты
./easyrsa init-pki
./easyrsa build-ca nopass
4) Генерация ключей и сертификатов сервера
./easyrsa build-server-full server nopass
5) Генерация ключей и сертификата клиенту
./easyrsa build-client-full client1 nopass
6) Generate a strong Diffie-Hellman keys
./easyrsa gen-dh
7) Generate HMAC signature to strengthen the server’s TLS integrity verification
capabilities
openvpn --genkey --secret pki/ta.key
8) Перед настрйокой OpenVpn сервера нужно скопировать все сгенерированные ключи и сертификаты сервера ca.crt ca.key server.crt server.key ta.key dh.pem в папку /etc/openvpn/server
sudo cp ~/openvpn-ca/pki/issued/server.crt /etc/openvpn/server
sudo cp ~/openvpn-ca/pki/private/server.key /etc/openvpn/server
sudo cp ~/openvpn-ca/pki/private/ca.key /etc/openvpn/server
sudo cp ~/openvpn-ca/pki/ca.crt /etc/openvpn/server
sudo cp ~/openvpn-ca/pki/dh.pem /etc/openvpn/server
sudo cp ~/openvpn-ca/pki/ta.key /etc/openvpn/server
9) Конфигурация сервера, сначала скопируем типовую конфигурацию:
sudo cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server
10) Поменяем некоторые строки в типовой конфигурации
- добавим строки в конец файла
key-direction 0 auth SHA256
- удалите символ ; перед строками которые ниже:
user nobody group nobody
10’) для пропускания всего трафика через VPN, удалите символ ;перед строками push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
10’’)[optional] Adjust port and protocol if you don’t wish to use default port 443 proto tcp
and if you have server.crt and server.key with the different name point to them here cert myservername.crt key myservername.key 11) Allow IP Forwarding. This is fairly essential to the functionality we want our VPN server to provide. sudo nano /etc/sysctl.conf and drop a line there net.ipv4.ip_forward=1 activate that: sudo sysctl -p
12) Настройка firewalld для работы с OpenVPN
sudo firewall-cmd --permanent --add-service openvpn
sudo firewall-cmd --permanent --add-masquerade
если firewalld не установлен, то установите и настройте автозапуск
если firewalld не установлен, то установите и настройте автозапуск
13) Настрйоим наш systemd сервис:
sudo ln -s /lib/systemd/system/openvpn-server\@.service /etc/systemd/system/multi-user.target.wants/openvpn-server\@server.service
NB! server corresponts with the configuration file name in /etc/openvpn/server such as server.conf. So if you have myserver.conf you have to replace server with myserver
14) Укажем чтобы OpenVPN загружался автоматически при заупске системы и запустим его.
sudo systemctl -f enable openvpn-server@server.service
sudo systemctl start openvpn-server@server.service
Если все запустилось без ошибок, то таким образом сконфигурировали OpenVPN сервер.
Настройка конфигурации клиента OpenVPNМы выше уже сгенирировали файлы client1.crt and client1.key. Сейчас будем создавать конфигурационный файл *.ovpn который объдиняет ваши сертификаты и ключи.
1) Сначала скопируем в отдельную папку все сгенирированные сущности которые нужны для клиента
cd ~/client-configs
mkdir keys
cp ~/openvpn-ca/pki/ca.crt ~/client-configs/keys
cp ~/openvpn-ca/pki/ta.key ~/client-configs/keys
cp ~/openvpn-ca/pki/private/client1.key ~/client-configs/keys
cp ~/openvpn-ca/pki/issued/client1.crt ~/client-configs/keys
2) Скопируем шаблон типовой конфигурации клиента
cp /usr/share/doc/openvpn/sample/sample-config-files/client.conf ~/client-configs/base.conf
3) Откроем в вашем тектовом редакторе nano ~/client-configs/base.conf
- и внесем некоторые изменения
remote server_IP_address 1194 #нужно заменить server_IP_address на ваш IP адрес сервера proto udp # update with specified protocol
- удалите символ ; перед следующими строками
user nobody group nobody
- и закоментируйте следующие строки
# ca ca.crt
# cert client.crt
# key client.key
# tls-auth ta.key 1
- и в конце файла конфигурации добавьте строки (обязательно в конце конфигурации должна быть пустая строка чтобы файл конфигурации был корректным):
auth SHA256 key-direction 1
5) Далее мы создадим простой скрипт который объединяет нашу конфигурацию клиента с сертификатами и ключами клиента, итоговый конфигурационный файл будет создан в папке ~/client-configs/ .
- созадим файл:
nano ~/client-configs/make_config.sh
-
скоруйте в созданный файл make_config.sh следующее содержимое
-
``` BASE_CONFIG=~/client-configs/base.conf KEY_DIR=~/client-configs/keys OUTPUT_DIR=~/client-configs cat ${BASE_CONFIG} \ <(echo -e '
') \ ${KEY_DIR}/ca.crt \ <(echo -e ' \n') \ ${KEY_DIR}/${1}.crt \ <(echo -e ' \n') \ ${KEY_DIR}/${1}.key \ <(echo -e ' \n') \ ${KEY_DIR}/ta.key \ <(echo -e ' ') \${OUTPUT_DIR}/${1}.ovpn ```
-
сделаем файл запускаемым
chmod 700 ~/client-configs/make_config.sh
6) Запусти файл с параметром client1 :
./make_config.sh client1
Если у вас все получилось, то сгенирируется файл client1.ovpn в папку ~/client-configs/
Использование файла конфигурации для различных платформ
скопируйте на ваше устройство файл конфигурации client1.ovpn , данный файл не нужно выкладывать в общий доступ, так как если он попадет к "плохим" людям, то они могут расшифровать весь ваш трафик.
- клиент Fedora 27: Заходим в Настройки системы -> Сеть -> в разделе VPN нажимаем "+" -> выбираем Импортировать из файла -> указываем файл client1.ovpnесли выбрали правильный файл конфигурации, то настрйоки автоматически настроятся и нажимаете сохранить.Чтобы воспользоваться VPN нужно его активировать.
- клиент Android: устанавливаем программуOpenVPN Connect из Play Marketa.далее просто находим файл конфигурации в файловом менеджере и нажимаем на файл client1.ovpn, автоматически откроется программа OpenVPN Connect и можно подключиться к OpenVPN серверу.