OpenVPN for Android

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Мы часто используем в работе OpenVPN, например для того чтобы соединить два удалённых офиса (об этом я тоже как нить напишу как будет время). И теперь для подключения с телефона на робочее место. И так. Что мы имеем. 
Дома у меня стоит роутер с белым ИП, с которого пробрасываются порты на комп, а комп уже пробрасывает порты на виртуальные машины, но для простоты я буду предполагать что белый ИП у меня на домашнем компе уже стоит. 
Рабочая машина так же у меня с белым ИП.
Для начала нам понадобиться установить OpenVPN, для этого подключаем репозиторий epel 

yum -y install epel-release

и собственно установить openvpn, архиваторы и wget если это всё не установленно. для удобства напишу отдельными командами

yum -y install openvpn 
yum -y install unzip zip
yum -y install wget

создадим директорию для ключей  

mkdir /etc/openvpn/keys

скачиваем и ставим easy-rsa

cd /etc/openvpn/keys
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

распаковываем

unzip master.zip
cd /etc/openvpn/keys/easy-rsa-master/easyrsa3

создадим структуру публичных ключей

mv vars.example vars
./easyrsa init-pki

создадим удостоверяющий центр

./easyrsa build-ca

не забудьте указанный пароль. После данных манипуляций мы получим два ключа.

/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

подписываем запрос

./easyrsa sign-req server server
В процессе работы скрипта вводим пароль от 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

создадим ключ для клиента

 ./easyrsa gen-req client nopass
./easyrsa sign-req client client

При запросе пароля указываем от сервера. По итогу получим два файла

/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/client.crt
/etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/client.key
На телефон нужно будет перекинуть 3 файла: client.crt, client.key, ca.crt

Сервер установили, ключи сделали. Перейдём к настройке сервера.

nano /etc/openvpn/server.conf

Я приведу свой конфиг файла, он рабочий :) вам останется только подставить свои цифры и всё.

mode server # указываем в каком режиме работать
local 192.168.80.151 # если несколько сетевых интерфейсов можно указать. Если 1 интерфейс то не указываем.
port 12345  # порт может быть любым, но смотрите чтобы не пересекался с другим (например с 80 или 25 или 443 и т.д.
proto tcp # протокол может быт и udp, если есть необходимость в этом
dev tun # можно использовать и tap, но думаю что в данном случае лучше подходит tun
push "redirect-gateway" # чтобы передавать клиентам шлюз используемый на сервере
push "dhcp-option DNS 8.8.8.8" # тоже самое что и выше только с днс
push "dhcp-option DNS 8.8.4.4"
ca /etc/openvpn/ca.crt # наши ключи и сертификаты
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
server 192.168.81.0 255.255.255.0 # подсеть для туннеля, может быть любой
keepalive 10 120
comp-lzo # если не ошибаюсь сжатие
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log # наши логи
log /var/log/openvpn/openvpn.log
verb 3 # подробность логов

сохраняем конфих и запускаем сервер

systemctl start openvpn@server

если отвалилось с ошибкой, то нужно отключить selinux 

/etc/sysconfig/selinux
SELINUX=disabled

reboot

systemctl start openvpn@server
systemctl enable openvpn@server

Всё доложно было пройти без ошибок. Для проверка можно посмотреть что висит на порту который мы укзаали в настройках

netstat -tulnp | grep 13555

должно показать примерно следующее

udp 0 0 0.0.0.0:13555 0.0.0.0:* 2472/openvpn

теперь проверим наши сетевые адреса


Далее надо настроить форвардинг. Для начала включим его в системе

nano /etc/sysctl.conf

и добавим туда строчку

net.ipv4.ip_forward = 1

применим настройки

sysctl -p

Теперь перейдём к настройке форварда. Отредактируем файл
nano /etc/iptables.sh

я приведу только настройки для перенаправления портов. всё остальное на ваш выбор. безопасности в этот раз мы касаться не будем

#!/bin/bash
export IPT="iptables"
# Внешний интерфейс
export WAN=ens32 
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -A FORWARD -s 192.168.81.0/24 -j ACCEPT
$IPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -t nat -A POSTROUTING -s 192.168.81.0/24 -o ens32 -j MASQUERADE
/sbin/iptables-save  > /etc/sysconfig/iptables

сохраняем файл и стартуем iptables

systemctl start iptables
systemctl enable ipatables

Ну вот теперь всё готово, и перейдём к настройке телефона. Нам понадобится приложение. Я рекомендую использовать OpenVPN for Android. Можно конечно использовать официальный клиент, но этот мне показался удобнее. И так.
Для начала нам нужно будет скопировать клиентские ключи и сертификаты, которые мы делали выше, на телефон. После этого устанавливаем приложение и добавляем профиль. Ниже я приведу скиншоты настроек как у меня. вам нужно будет только указать ip адресс, порт, и подгрузить сертификаты. И всё










Вот и всё. В этом приложении можно выбрать для чего использовать VPN, например для телеграма или вк или ещё чего. 

Поделись с друзьями

Имя:*
E-Mail: