Различия
Здесь показаны различия между двумя версиями данной страницы.
склад:обживание:linux:openvpn [2017/06/18 01:31] will создано |
склад:обживание:linux:openvpn [2017/06/18 01:38] (текущий) will |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
**openvpn** | **openvpn** | ||
+ | |||
+ | https://1cloud.ru/help/linux/kak-ustanovit-i-nastroit-openvpn-na-centos7 | ||
+ | http://debian-help.ru/articles/ustanovka-nastroika-openvpn-servera-debian-6/ | ||
+ | http://www.umgum.com/openvpn-client-iphone-ipad-ipod | ||
+ | https://zorrovpn.com/howto/openvpn/ios?lang=ru | ||
+ | -- | ||
+ | https://serveradmin.ru/nastroyka-openvpn-na-centos-7/ | ||
+ | https://habrahabr.ru/post/250859/ | ||
+ | |||
+ | Подключаем репу | ||
+ | |||
+ | yum install epel-release | ||
+ | |||
+ | Прежде всего, необходимо установить OpenVPN. Также мы установим инструмент Easy RSA — он будет использоваться для создания пар SSL-ключей, которые обеспечат безопасность VPN-соединений. | ||
+ | |||
+ | yum install openvpn easy-rsa –y | ||
+ | |||
+ | В директории документации OpenVPN содержатся файлы с тестовыми конфигурациями программы. Скопируем файл server.conf — на его основе мы создадим свою конфигурацию. | ||
+ | |||
+ | cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn | ||
+ | |||
+ | Подредактируем | ||
+ | dh dh2048.pem | ||
+ | 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 nobody | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Шаг #3: Создание ключей и сертификатов | ||
+ | Создадим директорию, в которой будут храниться ключи: | ||
+ | mkdir -p /etc/openvpn/easy-rsa/keys | ||
+ | В эту директорию нужно скопировать скрипты для генерации ключей и сертификатов: | ||
+ | cp -rf /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa | ||
+ | |||
+ | редактируем | ||
+ | /etc/openvpn/easy-rsa/vars | ||
+ | |||
+ | |||
+ | KEY_NAME: Следует указать значение server, иначе придется вносить изменения в конфигурационные файлы, в которых упоминается server.key и server.crt. | ||
+ | KEY_CN: здесь надо написать домен или поддомен, который указывает на ваш сервер. | ||
+ | |||
+ | # These are the default values for fields | ||
+ | # which will be placed in the certificate. | ||
+ | # Don't leave any of these fields blank. | ||
+ | export KEY_COUNTRY="RU" | ||
+ | export KEY_PROVINCE="Moscow" | ||
+ | export KEY_CITY="Moscow" | ||
+ | export KEY_ORG="OOO Romashka" | ||
+ | export KEY_EMAIL="ivan@example.com" | ||
+ | export KEY_OU="Community" | ||
+ | |||
+ | # X509 Subject Field | ||
+ | export KEY_NAME="server" | ||
+ | |||
+ | export KEY_CN=openvpn.example.com | ||
+ | |||
+ | |||
+ | Также следует предотвратить возможность сбоя загрузки конфигурации SSL из-за невозможности определения версии программы. Для скопируем нужный конфигурационный файл и удалим из названия номер версии: | ||
+ | |||
+ | cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf | ||
+ | |||
+ | Теперь создадим ключи и сертификаты. Для этого перейдем в директорию easy-rsa и запустим команду source для новых переменных: | ||
+ | cd /etc/openvpn/easy-rsa | ||
+ | source ./vars | ||
+ | |||
+ | Затем нужно удалить все предыдущие версии ключей и сертификатов, которые могут содержаться в этой директории: | ||
+ | ./clean-all | ||
+ | |||
+ | Указываем информацию об организации, выдавшей сертификат: | ||
+ | ./build-ca | ||
+ | |||
+ | Система задаст несколько вопросов, но поскольку мы уже вносили необходимые данные в конфигурационный файл, можно просто нажимать Enter вместо ответа. | ||
+ | ./build-key-server server | ||
+ | |||
+ | Также нужно сгенерировать файл обмена по алгоритму Диффи-Хеллмана. Процесс может занять несколько минут: | ||
+ | ./build-dh | ||
+ | |||
+ | Теперь скопируем созданные сертификаты и ключи в директорию OpenVPN. | ||
+ | cd /etc/openvpn/easy-rsa/keys | ||
+ | cp dh2048.pem ca.crt server.crt server.key /etc/openvpn | ||
+ | |||
+ | Всем клиентским приложениям для установления связи также понадобятся эти ключи и сертификаты. Лучше создавать отдельные ключи для каждого пользовательского приложения и давать ключам описательные имена. Сейчас же мы рассматриваем ситуацию с одним клиентом, поэтому назовем его просто client: | ||
+ | |||
+ | cd /etc/openvpn/easy-rsa | ||
+ | ./build-key client | ||
+ | |||
+ | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | ||
+ | iptables-save > /etc/sysconfig/iptables | ||
+ | |||
+ | |||
+ | /etc/sysctl.conf | ||
+ | net.ipv4.ip_forward = 1 | ||
+ | |||
+ | systemctl restart network.service | ||
+ | |||
+ | Шаг 5: Запуск OpenVPN | ||
+ | |||
+ | Теперь все готово к запуску OpenVPN. Добавим этот сервис в systemctl: | ||
+ | systemctl -f enable openvpn@server.service | ||
+ | |||
+ | Запускаем OpenVPN: | ||
+ | systemctl start openvpn@server.service | ||
+ | |||
+ | |||
+ | |||
+ | Шаг 6: Настройка клиента | ||
+ | Необходимые сертификаты (в нашем случае для клиента "client") хранятся в директории /easy-rsa: | ||
+ | /etc/openvpn/easy-rsa/keys/ca.crt | ||
+ | /etc/openvpn/easy-rsa/keys/client.crt | ||
+ | /etc/openvpn/easy-rsa/keys/client.key | ||
+ | |||
+ | |||
+ | Теперь создадим файл под client.ovpn - конфигурационный файл для клиента OpenVPN. В нем содержатся параметры подключения к серверу. Ниже представлено содержимое этого файла, в котором необходимо заменить имя клиента (в нашем случае client), указать корректный ip-адрес сервера и верный путь к файлам сертификатов и ключей: | ||
+ | client | ||
+ | dev tun | ||
+ | proto udp | ||
+ | remote your_server_ip 1194 | ||
+ | resolv-retry infinite | ||
+ | nobind | ||
+ | persist-key | ||
+ | persist-tun | ||
+ | comp-lzo | ||
+ | verb 3 | ||
+ | ca /path/to/ca.crt | ||
+ | cert /path/to/client.crt | ||
+ | key /path/to/client.key | ||
+ | |||
+ | |||
+ | Теперь этот файл можно использовать для подключения к серверу. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | -A INPUT -p udp -i enp1s0 --dport 1194 -j ACCEPT | ||
+ | -A POSTROUTING -s 10.8.0.0/24 -o enp1s0 -j MASQUERADE | ||
+ | |||
+ | -A INPUT -i lo -j ACCEPT | ||
+ | |||
+ | -A INPUT -i tun+ -j ACCEPT | ||
+ | -A INPUT -i tap+ -j ACCEPT | ||
+ | -A INPUT -j REJECT | ||
+ | -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT | ||
+ | -A FORWARD -s 10.8.0.0/24 -j ACCEPT | ||
+ | -A FORWARD -i tun+ -j ACCEPT | ||
+ | -A FORWARD -i tap+ -j ACCEPT | ||
+ | -A FORWARD | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ |