Openvpn руководство по установке для новичков

Скриптинг

up < command >— выполнить команду после запуска устройства TUN/TAP. Пример:
up script-up.shup-delay < seconds > — подождать n-секунд перед запуском команды указанной в up. Пример:
up-delay 5down < command > — выполнить команду когда интерфейс TUN/TAP выключится. Пример:
down script-down.shdown-pre — выполнить команду, указанную в down перед выключением интерфейса TUN/TAPup-restart < command > — выполнить команду после каждого реконнектаroute-up < command > — выполнить команду после установки сетевых маршрутов. Пример:
route-up script.shlearn-address < command > — выполнить указанную команду, если ip удаленной стороны изменился.ipchange < command > — выполнить команду, если ip сервера изменился.client-connect < command > — выполнить команду, когда клиент подключился.client-disconnect < command > — выполнить команду, когда клиент отключился.

Команды для управления туннелем

ping < seconds > — указывает отсылать ping на удаленный конец тунеля после указанных n-секунд, если по туннелю не передавался никакой трафик. Пример:
ping 10ping-restart < seconds > — если за указанное время не было получено ни одного пакета с удаленной стороны, то перезапускать туннель. Пример:
ping-restart 60 — если в течении 60 секунд не было получено ни одного пакета, то туннель будет перезапущен.ping-timer-rem — позволяет перезапускать туннель, только когда указан удаленный адрес.persist-tun — данная опция оставляет без изменения устройства tun/tap при перезапуске OpenVPN.persist-key — указывает не перечитавать файлы ключей при перезапуске туннеля.resolv-retry < seconds > — устанавливает время в секундах для запроса об удаленном имени хоста. Актуально только если используется DNS-имя удаленного хоста. Пример:
resolv-retry 86400inactive < seconds > — после n-секунд неактивности устройство TUN/TAP автоматически отключется. Пример:
inactive 120ping-exit < seconds > — если за указанные n-секунд не было получено ни одного пакета, то отключать OpenVPN. Пример:
ping-exit 120keepalive < seconds > < seconds > — является совмещением сразу двух команд — ping и ping-restart. Использует сразу два параметра в секундах, перечисленных через пробел. Пример:
keepalive 10 180
Означает следующее: каждые 10 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета — то перезапускать туннель.persist-local-ip < IP > — оставлять неизменными локальный IP адрес и номер порт, если туннель был перезапущен.persist-remote-ip < IP > — оставлять неизменными удаленный IP адрес и номер порт, если туннель был перезапущен.
persist-remote-ip 192.168.50.1

Конфигурация клиента OpenVPN на Android с TLS авторизацией

В текущем разделе мы уделим внимание примеру конфигурации клиента OpenVPN на Android и рассмотрим какие файлы,ключи,сертификаты нам понадобятся для реализации защищенной, зашифрованной VPN сети на Android средствами TLS авторизации на сервере OpenVPN. Как оговаривалось ранее, мы будем строить зашифрованную и защищенную сеть на базе TLS авторизации и с участием сервера сертификации

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

Базовый набор файлов для OpenVPN клиента на Android:

  1. client.key — закрытый ключ шифрования клиента, выданный центром сертификации.
  2. client.crt — сертификат клиента, подписанный центром сертификации.
  3. ca.crt — сертификат центра сертификации с открытым ключем.
  4. client.ovpn — файл конфигурации OpenVPN клиента для Android.

После того, как мы с вами ознакомились с основным, базовым наборов необходимых файлов, ключей и сертификатов, плавно переходим к базовой конфигурации инициализации VPN клиента на Android. Интересующий нас файл имеет расширение .ovpn. Имя файла конфигурации может быть любым, например client.ovpn.

Базовая конфигурация клиентского файла client.ovpn: 

На данном этапе мы разобрались с базовым минимальным набором файлов, базовой конфигурации OpenVPN клиента на Android с TLS авторизацией на сервере. Данные теоретические знания помогут вам в реализации специализированных задач по организации зашифрованных VPN сетей под ваши нужды.

Конфиг клиента OpenVPN на Windows XP

Файлы клиента берем из папки на сервере и копируем их в папку «» на клиенте.

Расположение файла конфигурации клиента: «» (для Linux/FreeBSD расположение, полагаю, где-либо в домашней папке юзера, к примеру, «).

Пример файла конфигурации клиента OpenVPN :

client
dev tun
proto udp
# IP-адрес и порт сервера OpenVPN)
remote 444.333.222.111 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca «C:Program FilesOpenVPNconfigca.crt»
cert «C:Program FilesOpenVPNconfigclient1.crt»
key «C:Program FilesOpenVPNconfigclient1.key»
tls-client
tls-auth «C:Program FilesOpenVPNconfigta.key» 1
auth MD5
#Это еще одна защита, на этот раз от «man in the middle» атаки
ns-cert-type server
comp-lzo
verb 3

Также надо настроить брандмауэр для того, чтобы внешние клиенты OpenVPN могли «видеть» сеть «за NAT». Я приведу часть конфига iptables работающего шлюза CentOS / Squid (внутренняя сеть 192.168.10.0/24):

IF_EXT="eth1"
IF_INT="eth0"
IF_VPN="tun0"

IPT="/sbin/iptables"

VPN_NET="10.8.0.0/24"

IPT="/sbin/iptables"

# flush
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X

# loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# allow forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
...

...
# FORWARD chain
# #########################################

# Форвардинг пакетов из внутренней сети "наружу"
# К нашему вопросу не относится, для общего понимания привел.
$IPT -A FORWARD -i $IF_INT -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_EXT -o $IF_INT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Маршрутизация пакетов VPN-клиентов
$IPT -A FORWARD -i $IF_INT -o $IF_VPN -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_VPN -o $IF_INT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s $VPN_NET -j ACCEPT
...

...
# NAT
# #########################################

# Веб-трафик клиентов внутренней сети предприятия автоматически "заворачиваем"
# на прокси-сервер Squid в прозрачном режиме. 
$IPT -t nat -A PREROUTING -i $IF_INT -p tcp --dport 80 -j DNAT --to 192.168.10.100:3128

# VPN-clients www via Squid
# Т.к. мы указали клиенту VPN взять маршрут по-умолчанию через сервер OpenVPN,
# то будет весьма неплохо дать ему возможность выходить в интернет без "головной боли",
# прозрачно перекинув его запросы на локальный прокси-сервер Squid в прозрачном режиме.
$IPT -t nat -A PREROUTING -i $IF_VPN -p tcp --dport 80 -j DNAT --to 10.8.0.1:3128

# SNAT - внутреняя сеть (за NAT) должна иметь возможность выхода в интернет
$IPT -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE
...

...
# INPUT chain
# #########################################
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешаем внешним клиентам соединяться с нашим сервером OpenVPN
$IPT -A INPUT -i $IF_EXT -p udp --dport 1194 -j ACCEPT

# ssh
$IPT -A INPUT -i $IF_INT -p tcp --dport 22 -j ACCEPT

# Разрешаем входящие соединения по виртуальной сети
$IPT -A INPUT -i $IF_VPN -j ACCEPT
...

...
# OUTPUT chain
# #########################################

# В принципе, нет смысла ставить здесь ограничения.
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

С этими конфигами клиент VPN может работать с компьютерами локальной сети. Если у вас есть свои соображения по поводу настроек iptables и маршрутизации — буду очень признателен. Да и читатели также. Ведь если вы читаете эту статью, вы наверняка знаете, что на эту тему сломано немало копий.

Команды для управления маршрутизацией

Обозначение: VPN-хост — удаленная сторона (удаленный хост)route < network > — устанавливает указанную маршрутизацию на VPN-хосте, после успешного запуска туннеля. Пример:
route 10.0.10.0 255.255.255.252route-gateway < IP > — устанавливает шлюз на VPN-хосте. Пример:
route-gateway 192.168.0.22
После успешного запуска виртуального туннеля клиенту будет задан шлюз 192.168.0.22route-delay < seconds > — указывает подождать n-секунд перед установкой маршрутов. Пример:
route-delay 5
Т.е. через 5 секунд после установки туннеля будут заданы маршруты.route-up < cmd > — выполнить скрипт или программу < cmd > после установки маршрутов. Пример:
route-up /script.shredirect-gateway — установить шлюзом по умолчанию удаленный сервер. Т.е. когда удаленный пользователь подключается к нашему серверу, то ему будет задан шлюз по умолчанию на наш сервер.

Опции в режиме сервера

push < options > — передача клиенту конфигурационных параметров. Пример:
push «route 192.168.0.0 255.255.255.0»
Аналогично с помощью push клиенту могут передаваться следующие параметры:route
route-gateway
route-delay
redirect-gateway
inactive
ping, ping-exit, ping-restart
persist-key, persist-tun
comp-lzo
dhcp-option
ip-win32

Последние две опции применимы только для Window-клиентов. Например передадим Windows-клиенту адрес DNS-сервера 11.11.11.11:
push «dhcp-option DNS 11.11.11.11»comp-lzo — параметр сжатия трафика, идущего через виртуальный туннель. Может принимать значения yes, no, adaptive. Последнее используется по умолчанию.
Например:
comp-lzo yes — принудительно включить сжатие
comp-lzo no — принудительно отключить сжатие
comp-lzo adaptive — адаптивный режим.

Несколько конфигурационных файлов

Позволит держать несколько конфигураций для подключения к различным VPN-серверам. Между последними можно переключаться из клиентской программы.

Для Windows:

В каталоге config создаем для каждого сервера свою папку и помещаем в нее рабочие файлы (файл конфигурации, сертификаты и так далее). В каждой папке называем конфигурационные файлы ovpn своими именами (даже если файлы будут находиться в разных папках, но с одинаковыми именами, клиент OpenVPN будет воспринимать их как один конфиг).

Пример каталога config:

Пример файлов в одном из каталогов:

Теперь при подключении клиентом к можно выбрать конкретный VPN-сервер:

Для Linux:

Также как для Windows, создаем для каждого сервера свой каталог, куда скопируем рабочие файлы:

mkdir /etc/openvpn/server1

А в каталоге /etc/openvpn создаем для каждого подключения свой конфиг:

vi /etc/openvpn/client1.conf

* в конфигурационном файле все пути до файлов должны вести в соответствующий каталог (в нашем примере, /etc/openvpn/server1).

Запускаем OpenVPN:

openvpn —config /etc/openvpn/server1/client.conf

Для автоматического запуска мы уже ранее применяли команду:

systemctl enable openvpn@client

… где @client — указатель на использование конфигурационного файла client внутри папки openvpn (/etc/openvpn). Таким образом, если мы создали 2 файла client1.conf и client2.conf, команды для разрешения автозапуска бelen такие:

systemctl enable openvpn@client1

systemctl enable openvpn@client2

Методы аутентификации

auth-user-pass-verify < script > < method > — указывается только на серверной стороне.
< script > — путь к скрипту, который будет производить авторизацию. Скрипт должен возвращать 0 если авторизация успешна, и соответственно, 1 если авторизация не успешна.
< method > — метод авторизации, может быть двух типов: via-env и via-fileauth-user-pass < file >— указывается на клиентской стороне. Параметр не обязателен, если он отсутствует то будет предложено ввести пару логин/пароль.должен содержать имя пользователя и пароль в двух строчках:
username
passwordclient-cert-not-required — отключает авторизацию по сертификатам.

Примеры настройки OpenVPN

Основные ресурсы с примерами настройки openVPN сервера и клиентов:

прежде всего официальный мануал:https://openvpn.net/index.php/open-source/documentation/manuals/openvpn-20x-manpage.html

теперь ряд русскоязычных ресурсов:

    • http://compkaluga.ru/articles/172/ — грамотный туториал с указанием основных возможных ошибок
    • http://www.sysadmin.in.ua/info/index/22/27/39 — простая и доходчивая статья, но в настройках допущена ошибка —

      # Эти параметры в среде windows — не дадут клиенту подключиться к серверу. их следует закоментировать или убрать.
      user nouser
      group nogroup

пойдем дальше

Эта статья незаслуженно низко находится в выдаче поисковиков http://interface31.ru/tech_it/2011/09/organizaciya-vpn-kanalov-mezhdu-ofisami.html — очень грамотная и доступная подробно разбирает процесс настройки сервера и клиента, а так же вопросы настройки маршрутизации трафика. Т.е. если у вас задача объединить несколько офисных сетей — то обязательна к изучению. Однако, вопрос генерации ключей дан вскользь, для этого стоит посмотреть один из мануалов дальше.

http://habrahabr.ru/post/233971/ — подробный разбор запуска на Linux системах. В конце материала описана процедура настройки для windows систем.

http://habrahabr.ru/sandbox/58689/ — по сути краткая шпаргалка по заведению openVPN на windows

полезна в том случае если подробный разбор вы уже изучили, но подзабыли отдельные детали процесса.А вот на это я бы обратил внимание:

http://geektimes.ru/post/197744/ Основная особенность этого мануала заключается в том что дан пример настройки OpenVPN под Windows, но без tls аутентификации — соответственно конфиг проще, ключей поменьше. Но и уровень безопасности пожиже

Однако главной фишкой для меня стало вот это: «Теперь о конфиге клиента. Можно не передавать файлы сертификатов, а вписать сразу в конфиг, только делать это лучше не с блокнота, а с AkelPad’а или Notepad++ например.» ну и дальше читайте на странице.От себя должен сказать, что у меня такой файл конфига клиента с вшитыми ключами создать пока не вышло. Но обязательно буду пытаться, о результатах доложу здесь же.

http://yakm.ru/Nastroyka-OpenVPN.html тут дан пример простенького конфига с одним секретным ключём на две машины. Т.е. использую данный конфиг, вы можете поднять сервер и подключить к нему одного клиента. Для более сложных конфигураций надо всё-таки генерить все ключи.

http://yakm.ru/Nastroyka-OpenVPN-chast-2.html продолжение туториала выше, где собран простенький но полноценный конфиг. Однако вопрос генерации ключей разобран вскользь.

http://www.freeproxy.ru/ru/vpn/windows-7/openvpn.htm простой но очень важный туториал по правильной установке и запуску OpenVpn в среде Windows. Особо хотелось бы обратить внимание на необходимость запускать openvpnGUI — от имени администратора. Без этой малости — ни один клиент не сможет подключиться к успешно работающему серверу.

 — огромная конференция по вопросам работы с OpenVPN. Наверное тут разобраны все возможные вопросы. Однако вкурить всю ветку форума — задача поистине титаническая.

  • http://suli-company.org.ua/it/unix/1063-prostaya-nastroyka-openvpn-s-fiksirovannymi-adresami-klientov.html еще один очень подробный разобор. В основном он посвещен настройки openVPN на Linux. Но разбор конфигов очень подробный. Дан частичный адаптированный русский перевод мануала из первой ссылки. И в конце статьи вариант настройки на Windows.  + решения для нескольких проблемм:»Получено сообщение Initialization Sequence Completed, но пинг не проходит — это означает, что брандмауэр на сервере или клиенте блокирует VPN сетевой трафик на TUN/TAP интерфейсе. Решение проблемы: запретите брандмауэру клиента (если есть) фильтрацию TUN/TAP интерфейса клиента.»
  • http://samag.ru/archive/article/318 — еще один разбор настройки OpenVPN —  тут упор сделан на кросс-платформенность.

Экспорт файла конфигурации OpenVPN для клиентов

Переходим в раздел «VPN / OpenVPN / Client Export», здесь мы настроим расширение для генерации автоматической конфигурации для клиентов:

  • Сервер удаленного доступа: мы выберем тот VPN-сервер, который мы настроили, у нас может быть несколько, поэтому мы выберем тот, который нас интересует.
  • Разрешение имени хоста: домен DDNS, который мы настроили в pfSense, или IP-адрес WAN, у нас будет несколько возможностей.
  • Проверить CN сервера: автоматически — используйте verify-x509-name
  • Блокировать вне DNS: мы включаем эту опцию.
  • Использовать случайный локальный порт: мы включаем эту опцию.

После того, как все вышеперечисленное было настроено, мы должны щелкнуть по клиентам для экспорта, наиболее нормальным является выбор «Встроенные конфигурации: большинство клиентов», и он будет экспортировать ЦС, открытый и закрытый ключи сертификата клиента и все в комплектации.

Мы рекомендуем выбрать эту опцию из «Встроенные конфигурации: большинство клиентов», но добавить зашифрованный закрытый ключ клиента, чтобы, если этот файл конфигурации попадет в чужие руки, он не сможет получить доступ к нашему VPN-серверу. Чтобы экспортировать зашифрованный закрытый ключ, мы должны перейти в раздел «System / Cert Manager» и перейти к «Edit» сертификата клиента, ввести кодовую фразу и нажать «Export private Key»:

Теперь с помощью текстового редактора мы открываем этот зашифрованный ключ и только что загруженный файл конфигурации:

  • В полном файле конфигурации OpenVPN удаляем все, что находится внутри « »
  • Копируем полное содержимое экспортированного приватного ключа внутрь « »И сохраните изменения.

Теперь при использовании закрытого ключа для подключения к серверу нам нужно будет ввести этот пароль, который защищает сертификат. Теперь мы собираемся проверить, работает ли служба, и подключимся к первому клиенту.

Настройка клиентов на сервер

Создайте клиентский конфигурационный файл OpenVPN, сохраните его с расширением для Windows или для *nix систем и отошлите его вашему клиенту:

Традиционный (TUN) Клиент

dev tun
proto udp

log openvpn.log
verb 3

ca /etc/openvpn/ca.crt
cert /etc/openvpn/my-client.crt
key /etc/openvpn/my-client.key

client
remote-cert-tls server
remote SERVER_IP_ADDRESS 1194

Клиент в режиме моста (TAP)

dev tap
proto udp

log openvpn.log
verb 3

ca /etc/openvpn/ca.crt
cert /etc/openvpn/my-client.crt
key /etc/openvpn/my-client.key

client
remote-cert-tls server
remote SERVER_IP_ADDRESS 1194

Примечания к конфигурационному файлу сервера OpenVPN

В данном конфиге будут только два различия в версиях сервера для Unix или для Windows.

1. Пути расположения файлов конфигурации, сертификатов и пр. в конфиге для Windows должны прописываться так:

а в Linux/FreeBSD так:

2. В конфиге для Windows следующие строки должны быть закомментированы:

а в Linux/FreeBSD (по желанию или по соображениям безопасности, но режиме отладки самого сервера OpenVPN можно сначала запускать сервер OpenVPN под админом, чтобы в случае проблем не грешить на права доступа, но потом обязательно сменить запуск на nobody!!!) раскомментированы:

С конфигом для сервера, в принципе, все. Для начала работы вполне достаточно того конфига, который указан выше.

Разные вопросы

В. Чем отличаются виртуальные устройства tun и tap?О. TUN — туннель, соединение по которому указывается по типу: локальный IP < — > удаленный IP. Например, при явном указании ifconfig:
—ifconfig 10.3.0.2 10.3.0.1
в этом примере 10.3.0.2 — локальный IP, 10.3.0.1 — удаленный IP
TAP — эмулирует виртуальную ethernet карточку, для которой требуется указывать локальный IP и маску подсети. Например:
—ifconfig 10.3.0.2 255.255.255.0

В. Для чего нужны файлы serial и index.txt при генерации ключей с easy-rsa?О. Эти два файла используются в качестве временной базы данных, используемой при генерации ключей. Должны находиться в том каталоге, где и ключи.

Авторизуйтесь для добавления комментариев!

Установите плагин OpenVPN Client, чтобы сгенерировать конфигурацию.

Хотя OpenVPN по умолчанию устанавливается в pfSense, либо в его серверном, либо в клиентском режиме, у нас нет предустановленного пакета, который позволяет нам автоматически генерировать конфигурацию для клиентов. Если мы перейдем в диспетчер пакетов в «Система / Диспетчер пакетов» и перейдем на вкладку «Доступные пакеты», мы сможем установить пакет «OpenVPN-client-export», который позволит нам выполнить именно это действие, что значительно облегчит конфигурация клиентов, импортирующая конфигурацию сервера с соответствующими цифровыми сертификатами.

После установки мы будем готовы перейти к следующему шагу — созданию цифровых сертификатов.

Настройте правила брандмауэра, чтобы разрешить доступ

В разделе «Брандмауэр / Правила» нажимаем WAN и создаем правило со следующими значениями:

Сохраняем и у нас будет правило, созданное в Интернете WAN.

Теперь нам нужно перейти в раздел «Брандмауэр / Правила / OpenVPN», в этом разделе мы собираемся определить доступ клиентов OpenVPN. Если мы хотим разрешить клиентам OpenVPN доступ к любой подсети pfSense, а также к Интернету, нам нужно будет создать правило «Пропустить все», определяющее следующее:

Если мы хотим создать определенные правила для запрета трафика в определенные подсети, то нам нужно будет создать правила, отвечающие этому условию.

Как только у нас будет доступ из глобальной сети Интернет, а также к любой подсети операционной системы и перенаправление в Интернет, мы собираемся экспортировать файл конфигурации OpenVPN для клиентов.

Трансляция сетевых адресов (NAT)

Командой firewall-cmd можно настроить NAT с маскарадингом или пробросом портов. Маскарадинг можно настроить только для IPv4, но не для IPv6.

Настройка маскарадинга в firewalld

Маскарадинг -это подмена ip адреса отправителя(маскарад) на внешний адрес нашего сервера, когда компьютер с неким внутренним ip адресом пытается получить к доступ к ресурсам в интернете. Ответы на эти пакеты также пойдут через наш сервер. И адрес сервера будет подменен на ip отправителя, чтобы трафик отправлялся на узел, который инициировал отправку.

Маскарадинг для зоны можно включить опцией —add-masquerade

$ firewall-cmd --permanent --zone=testing --add-masquerade
success

При помощи опции —query-masquerade мы можем убедиться, что маскарадинг успешно включен. В данном случае мы запросим постоянную конфигурацию, так как изменили только ее и еще не выполнили перезапуск.

$ firewall-cmd --permanent --query-masquerade
yes

В нашем примере маскарадингу будет подвергаться любой пакет, отправляемый на адреса, указанные в зоне ‘testing’. Для более тонкой настройки можно воспользоваться rich rules.

$ firewall-cmd --permanent --zone=testing --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 masquerade'
success

Здесь маскарадинг выполняется для всего трафика с диапазона адресов 192.168.1.0/24.

проброс портов в firewalld

Как следует из названия, при пробросе портов весь трафик, отправленный на конкретный порт, будет перенаправляться либо на другой порт локальной системы, либо на порт внешней системы. Если требуется проброс на внешнюю сеть, нужно также настроить маскарадинг.

В рассмотренном ниже примере локальная система будет перенаправлять весь трафик, отправленный на порт 22, на TCP-порт 2222 на адрес 10.0.0.10. Правило перенаправления портов будет применяться только для отправителей, указанных в зоне ‘testing’.

$ firewall-cmd --permanent --zone=testing --add-forward-port=port=22:proto=tcp:toport=2222:toaddr=10.0.0.10
success

Убедиться в успешной работе проброса портов можно при помощи опции —query-forward-port.

$ firewall-cmd --permanent --zone=testing --query-forward-port=port=22:proto=tcp:toport=2222:toaddr=10.0.0.10
yes

Целиком вводить запись, которую вы делали при добавлении проброса портов, достаточно неудобно. Лучше воспользоваться опцией —list-all, она покажет все перенаправляемые порты.

$ firewall-cmd --permanent --list-all --zone=testing
testing
  interfaces:
  sources:
  services:
  ports:
  masquerade: yes
  forward-ports: port=22:proto=tcp:toport=2222:toaddr=10.0.0.10
  icmp-blocks:
  rich rules:
        rule family="ipv4" source address="192.168.1.0/24" masquerade

Также эта команда показывает включен или отключен маскарадинг.

Для более тонкой настройки снова можно воспользоваться rich rules. В данном примере мы можем указать конкретный адрес отправителя в зоне testing, а не всю зону.

$ firewall-cmd --permanent --zone=testing --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 forward-port port=22 protocol=tcp to-port=2222 to-addr=10.0.0.10'
success

Также мы можем не использовать параметр to-addr, в этом случае перенаправление портов полностью будет выполняться на локальной системе. Действующие rich rules можно просмотреть, используя опцию —list-rich-rules.

$ firewall-cmd --permanent --zone=testing --list-rich-rules
rule family="ipv4" source address="192.168.1.0/24" masquerade
rule family="ipv4" source address="192.168.1.0/24" forward-port port="22" protocol="tcp" to-port="2222" to-addr="10.0.0.10"

Как настроить OpenVPN на Windows 10

Как работает OpenVPN

Протокол OpenVPN отвечает за поддержание коммуникации между клиентом и сервером. Как правило, он используется для создания защищённого туннеля между VPN-клиентом и сервером.

Для шифрования и аутентификации OpenVPN использует библиотеку OpenSSL. Кроме того, для передачи данных OpenVPN могут использоваться протоколы UDP или TCP.

  • TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение. Протокол TCP исключает потери данных, дублирование и перемешивание пакетов, задержки.
  • UDP всё это допускает, и соединение для работы ему не требуется. Протокол UDP доставляет пакеты данных гораздо быстрее, потому лучше подходит для приложений, которые рассчитаны на широкую пропускную способность и быстрый обмен.

Как подключиться OpenVPN

Перед подключением нужно выбрать бесплатный VPN сервер, загрузив на компьютер файл конфигурации определённого сервера. Его стоит выбирать исходя из расположения, качества линии, пропускной способности и пинга. 

Теперь запустите программу OpenVPN GUI от имени администратора в Windows 10. В противоположном случае просто не удастся подключиться к выбранному серверу.

  1. На панели задач в контекстном меню OpenVPN выберите Импорт конфигурации… В открывшемся окне проводника укажите расположение ранее загруженной конфигурации.
  2. После импорта можно смело выбирать пункт Подключиться. При необходимости можно импортировать несколько конфигураций. В таком случае подключений будет два или три.

Рекомендуем импортировать несколько разных конфигураций, после чего перейти к их тестированию. Для тестирования можно воспользоваться сервисами проверки скорости Интернета на компьютере Windows 10.

Если же перейти в расположение: C:\ Пользователи\ Имя_пользователя\ OpenVPN\ config, то можно увидеть, и при необходимости удалить, папки с ранее добавленными конфигурациями.

После подключения к определённому серверу весь трафик пользователя будет проходить через VPN. Таким образом, можно будет играть в игры или посещать сайты, заблокированные в регионе. Скорость — далеко не его сильная сторона, но если у Вас скоростной Интернет, то скорость будет приемлемой. Как правило, скорость интернета падает из-за сильного уровня шифрования в OpenVPN.

Заключение

При необходимости для работы сами используем OpenVPN. На данный момент OpenVPN считается лучшим VPN-протоколом. На практике все наши высказывания подтверждаются. После первого использования, даже бесплатных серверов, сложно использовать другие VPN-клиенты. В принципе и без дополнительного программного обеспечения можно настроить VPN соединение на Windows 10.

Работа с прокси

OpenVPN без проблем может работать через http и socks прокси.http-proxy < server port > — указываем адрес и порт прокси-сервера.
http-proxy 192.168.0.12 8080
Если требуется авторизация на прокси-сервере:http-proxy < server port authfile > — где authfile — файл содержащий две строки (имя пользователя и пароль) или stdin (будет запрошено имя пользователя и пароль).
Так же после authfile требуется указать метод авторизации. Можно оставить auto для автоматического выбора метода авторизации или указать явно через auth-method.
auth-method может быть трех видов «none», «basic» или «ntlm».
Используется в OpenVPN начиная с версии 2.1.http-proxy-retry — переподключаться, если соединение было разорвано.http-proxy-timeout < seconds > — считать соеденение с прокси-сервером разорванным после n-секунд неактивности. Например:
http-proxy-timeout 5socks-proxy < server port > — указываем сокс-прокси сервер. Пример:
socks-proxy 192.168.0.12 8080socks-proxy-retry — переподключаться, если соединение было разорвано.auto-proxy — автоматически определять прокси-сервер. Требуется версия OpenVPN 2.1 и выше. 

Конфиг OpenVPN Сервера, на Windows 7:

Ну и собственно мой конфиг. Он прямо скажем не идеален, но вполне годен.

port 1194
proto udp
dev tap2
dev-node «vpn»
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
client-to-client #разрешить общение клиентов между собой подробнее см.ниже
topology subnet
route-method exe
route-delay 5
route 10.8.0.0 255.255.255.0
#PUSH START те данные которые мы передаем на клиент.
#push «dhcp-option gateway 10.8.0.1» — имело бы смысл с windows клиентами, у нас linux
push «persist-key»
push «persist-tun»
#PUSH END
duplicate-cn #позволяем нескольким клиентам пользоваться одним ключом
keepalive 10 120
#cipher AES-128-CBC #закоментировали алгоритм шифрования будет использован по умолчанию
comp-lzo
persist-tun
persist-key
persist-local-ip
persist-remote-ip
status openvpn-status.log
log c:\\OpenVPN\\log\\openvpn.log
verb 5

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: