OpenVPN & IOS
Было написано уже много статей на данную тему, но я опишу более удобный способ для меня.
И так у нас есть чистый сервер(VPS) с CentOS 7 на борту, и мы преступаем.
подключаем репозиторий epel и обновляемся.
yum install epel-release yum update
ставим OpenVPN
yum install openvpn easy-rsa -y
переходим в папку OpenVPN и создаем конфигурационный файл нашего ВПН сервера.
cd /etc/openvpn touch server.conf
содержимое server.conf
не забываем изменить порт и директиву local, я на впн серверах всегда использую 443 порт, но он может быть занят Web сервером.
user openvpn group openvpn local ваш_внешний_IP port 443 proto tcp dev tun cipher AES-256-CBC ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key dh /etc/openvpn/easy-rsa/keys/dh2048.pem tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 server 10.10.200.0 255.255.255.0 push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" ifconfig-pool-persist ipp.txt push "redirect-gateway" keepalive 10 900 tun-mtu 1500 mssfix 1450 persist-key persist-tun comp-lzo
переходим к генерации ключей.
копируем easy-rsa в удобное для нас место.
cp -R /usr/share/easy-rsa/2.0 /etc/openvpn/easy-rsa cd easy-rsa
в начале нам нужно подправить содержимое файла vars
в самом низу ищем и меняем.
export KEY_COUNTRY="FR" export KEY_PROVINCE="FR" export KEY_CITY="Paris" export KEY_ORG="NOVA.WS" export KEY_EMAIL="[email protected]" export KEY_OU="NOVA.WS" export KEY_NAME="server"
сохраняем, выходим.
переходим к генерации сертификатов сервера.
./clean-all ./build-ca ./build-key-server server ./build-dh
Создаем ключ TLS-auth
openvpn --genkey --secret keys/ta.key
и не забываем переместить его в папку /etc/openvpn/easy-rsa/keys/
Генерируем сертификат для клиента.
./build-key-pkcs12 client1
Сертификаты готовы перейдем к финальной части настройки сервера.
правим sysctl и добавляем правило для форвардинга.
net.ipv4.ip_forward = 1
применяем его без перезагрузки.
echo 1 > /proc/sys/net/ipv4/ip_forward
Добавляем наше правило для NAT и сохраняем.
iptables -t nat -A POSTROUTING -s 10.10.200.0/24 -j SNAT --to-source IP_SERVER iptables-save > /etc/sysconfig/iptables
не забываем добавить наш OpenVPN сервер в автозагрузку и запустить.
systemctl enable [email protected] service openvpn@server start
Теперь переходим к нашему клиенту, я обычно создаю на сервере клиентский конфиг затем его просто выкачиваю с помощью WinSCP, вы можете создать его сразу на виндовой машине.
содержимое client.ovpn
dev tun client proto tcp remote IP_вашего_сервера 443 remote-cert-tls server remote-random nobind persist-key persist-tun key-direction 1 cipher AES-256-CBC resolv-retry infinite redirect-gateway def1 block-outside-dns comp-lzo <tls-auth> -----BEGIN OpenVPN Static key V1----- -----END OpenVPN Static key V1----- </tls-auth> <ca> -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- </ca> <key> -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- </key> <cert> -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- </cert>
Теперь опишу чуть подробней где взять содержимое для файла clients.ovpn а именно tls-auth,ca,key,cert
Содержимое для
Содержимое для ca — мы берем из файла /etc/openvpn/easy-rsa/keys/ca.crt
Содержимое для key и cert мы получаем из нашего PKS12 файла который мы генерировали для клиента, client1.p12
Содержимое можно посмотреть командой
openssl pkcs12 -in client1.p12 -nodes
или можно просто скопировать из файлов
/etc/openvpn/easy-rsa/keys/client1.key и /etc/openvpn/easy-rsa/keys/client1.crt (тут то что нам нужно в самом низу файла или так cat client1.crt | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ )
Теперь на выходе у нас есть единственный файл, client.ovpn который мы можем послать себе по почте и открыть на любом IOS устройстве с помощью OpenVPN ну или загрузить через Itunes.
Всем спасибо, я закончил.