OpenVPN требуется проброс порта

Не написали DNAT правило. И порт нужно разрешать в FORWARD.
mky ★★★★★
( 18.11.21 10:35:29 MSK )
iptables -t nat -A POSTROUTING -o eth0 -p tcp –dport 8082 -d 192.168.10.100 -j SNAT –to-source 192.168.10.1:8081
давным давно, когда у меня не было еще поднят OpenVPN я так обычно ломился из дома на сервер офисный
/sbin/iptables -t nat -A PREROUTING -p tcp -s $HOME -d $OFFICE --dport 3389 -j DNAT --to-destination $SI-NEW:3389 /sbin/iptables -A FORWARD -p tcp -d $SI-NEW --dport 3389 -j ACCEPT
переменные понятны? Home и Office внешние IP, si-new внутренний ip сервера к которому пробрасываю.
alex_sim ★★★★
( 18.11.21 10:43:20 MSK )
Ответ на: комментарий от alex_sim 18.11.21 10:43:20 MSK

давным давно, когда у меня не было еще поднят OpenVPN я так обычно ломился из дома на сервер офисный
Во-во, давно, сейчас статический домашний IP даже за нормальные деньги заколебёшься получать 🙂
vodz ★★★★★
( 18.11.21 10:55:30 MSK )
Ответ на: комментарий от vodz 18.11.21 10:55:30 MSK
Во-во, давно, сейчас статический домашний IP даже за нормальные деньги заколебёшься получать 🙂
Ну видимо смотря где живешь, дома всегда был и сейчас есть белый IP за смешные деньги. Pоутер был DIR-300, поменял на микротик — поднял OpenVPN надобность в пробросе отпала.
alex_sim ★★★★
( 18.11.21 11:01:20 MSK )
Ответ на: комментарий от alex_sim 18.11.21 10:43:20 MSK
iptables -t nat -A PREROUTING -p tcp -d x.x.x.x --dport 8082 -j DNAT --to-destination 192.168.10.100:8081 iptables -A FORWARD -p tcp -d 192.168.10.100 --dport 8081 -j ACCEPT
Не канает, + $HOME не может быть статикой.
Так тоже не канет:
iptables -t nat -A PREROUTING -d x.x.x.x -p tcp -m tcp --dport 8082 -j DNAT --to-destination 192.168.10.100:8081 iptables -t nat -A POSTROUTING -d 192.168.10.100 -p tcp -m tcp --dport 8081 -j SNAT --to-source 192.168.10.1 iptables -t nat -A OUTPUT -d x.x.x.x -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.10.100 iptables -I FORWARD 1 -d 192.168.10.100 -p tcp -m tcp --dport 8081 -j ACCEPT
ramneak
( 18.11.21 11:09:04 MSK ) автор топика
Ответ на: комментарий от vodz 18.11.21 10:55:30 MSK
Во-во, давно, сейчас статический домашний IP даже за нормальные деньги заколебёшься получать 🙂
anc ★★★★★
( 18.11.21 11:23:18 MSK )
Ответ на: комментарий от ramneak 18.11.21 11:09:04 MSK
Не канает, + $HOME не может быть статикой.
HOME статика — мой конкретный случай
порты в POSTROUTING не надо указать (–to-source 192.168.10.1:8082) там NAT наверное
я правильно понимаю с 8082 бросается на 8081 значит и обратно надо указать, не?
alex_sim ★★★★
( 18.11.21 11:24:26 MSK )
Ответ на: комментарий от anc 18.11.21 11:23:18 MSK
Это еще Москва, у меня помоему 20 руб в месяц за белый
alex_sim ★★★★
( 18.11.21 11:27:57 MSK )
Ответ на: комментарий от ramneak 18.11.21 11:09:04 MSK
Показывайте все правила, выхлоп iptables-save
anc ★★★★★
( 18.11.21 11:53:46 MSK )
Ответ на: комментарий от alex_sim 18.11.21 11:27:57 MSK
Могу предположить, что зато у вас с юриков три шкуры дерут, а у нас нахаляву/почти-нахаляву 🙂 Я про белую статику.
anc ★★★★★
( 18.11.21 11:59:45 MSK )
Ответ на: комментарий от anc 18.11.21 11:59:45 MSK

Не знаю как у них, а у нас у юриков халява. Да и у физиков тоже, кроме пары провайдеров. У одного из них 1 рубль в день. Я тоже про белую статитку.
turtle_bazon ★★★★★
( 18.11.21 12:03:44 MSK )
Ответ на: комментарий от anc 18.11.21 11:59:45 MSK
Могу предположить, что зато у вас с юриков три шкуры дерут, а у нас нахаляву/почти-нахаляву 🙂 Я про белую статику.
В офисе платим 40 тыс сразу за год, нам включают максимальную скорость (85 Mps), на заводе тоже что то 4 тыс в месяц, но там помесячно и скорость (10Mps должна быть заводчанам хватало, но залез проверил тоже 85 админы лоханулись похоже)
Для юрика разве это 3 шкуры. Это вообще цена инета, сколько там статика стоит не знаю.
Чикагинск Челябинск, если что. 😉
alex_sim ★★★★
( 18.11.21 12:11:55 MSK )
Последнее исправление: alex_sim 18.11.21 12:15:43 MSK (всего исправлений: 2)
Ответ на: комментарий от turtle_bazon 18.11.21 12:03:44 MSK
Раньше, лет 5-12 назад также было?
anc ★★★★★
( 18.11.21 12:22:53 MSK )
Ответ на: комментарий от alex_sim 18.11.21 12:11:55 MSK
Я только про белую статику 🙂 Три шкуры забыл в кавычки взять, подразумевал что она платная 🙂
anc ★★★★★
( 18.11.21 12:27:34 MSK )
Ответ на: комментарий от anc 18.11.21 12:22:53 MSK

Я, если честно, плохо во времени ориентируюсь, но помню, что для юриков халява по белым адресам всегда была. Точнее даже не так — у юриков вообще не было серых нестатичных адресов.
turtle_bazon ★★★★★
( 18.11.21 12:28:11 MSK )
Последнее исправление: turtle_bazon 18.11.21 12:28:31 MSK (всего исправлений: 1)
Ответ на: комментарий от turtle_bazon 18.11.21 12:28:11 MSK
Я про года не случайно написал, сталкивались с вариантами: «выделение адреса? дайте нцать денег». Причем именно за выделение.
anc ★★★★★
( 18.11.21 12:50:20 MSK )
Ответ на: комментарий от anc 18.11.21 11:53:46 MSK
ramneak
( 18.11.21 13:04:37 MSK ) автор топика
Ответ на: комментарий от anc 18.11.21 12:50:20 MSK

Я про года не случайно написал, сталкивались с вариантами: «выделение адреса? дайте нцать денег». Причем именно за выделение.
Скорее всего там было «дополнительного».
vodz ★★★★★
( 18.11.21 13:13:56 MSK )
Ответ на: комментарий от vodz 18.11.21 13:13:56 MSK
Нет. Один из примеров как ша помню был в Владике.
anc ★★★★★
( 18.11.21 13:16:09 MSK )
Ответ на: комментарий от ramneak 18.11.21 13:04:37 MSK
1. На будушее выкладывайте текстовый выхлоп сюда, а не скриншотами, отвечать на скриншот никакого удовольствия.
2. Я правильно догадался, это выхлоп с VPS ? Если да, то последнее правило SNAT ну совсем не по месту.
anc ★★★★★
( 18.11.21 13:21:06 MSK )
Ответ на: комментарий от anc 18.11.21 13:21:06 MSK
root@vps:~# iptables-save # Generated by iptables-save v1.8.4 on Thu Nov 18 17:36:48 2021 *filter :INPUT ACCEPT [105:7104] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [96:15328] -A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT -A INPUT -p tcp -m tcp --dport 8082 -j ACCEPT -A INPUT -p udp -m udp --dport 8082 -j ACCEPT -A FORWARD -d 192.168.10.100/32 -p tcp -m tcp --dport 8081 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 172.17.0.0/24 -j ACCEPT COMMIT # Completed on Thu Nov 18 17:36:48 2021 # Generated by iptables-save v1.8.4 on Thu Nov 18 17:36:48 2021 *nat :PREROUTING ACCEPT [17:995] :INPUT ACCEPT [16:796] :OUTPUT ACCEPT [6:456] :POSTROUTING ACCEPT [8:560] -A PREROUTING -d x.x.x.x/32 -p tcp -m tcp --dport 8082 -j DNAT --to-destination 192.168.10.100:8081 -A OUTPUT -d x.x.x.x/32 -p tcp -m tcp --dport 8081 -j DNAT --to-destination 192.168.10.100 -A POSTROUTING -s 172.17.0.0/24 ! -d 172.17.0.0/24 -j SNAT --to-source x.x.x.x COMMIT # Completed on Thu Nov 18 17:36:48 2021 root@vps:~#
Почему не получается открыть порт для OpenVPN?
Недавно, после попытки установить VestaCP и её кривого удаления(осталось много пакетов, которые установились с ней) перестал работать OpenVPN(на порту 1194). Сканер портов показывает, что порт 1194 «filtered». Перепробовал уже кучу всего, не знаю что еще делать. Хелп, плс.
Вот правила файрвола AWS(виртуальная машина хостится там):

Вот вывод ufw status
To Action From -- ------ ---- Postfix ALLOW Anywhere 1194/udp ALLOW Anywhere OpenSSH ALLOW Anywhere 22 ALLOW Anywhere 443 ALLOW Anywhere 8083 ALLOW Anywhere 80 ALLOW Anywhere Postfix (v6) ALLOW Anywhere (v6) 1194/udp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6) 22 (v6) ALLOW Anywhere (v6) 80 (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) 1194/tcp (v6) ALLOW Anywhere (v6)
Вот вывод netstat -ntulp
Здесь почему-то напротив порта 1194 нет строки LISTEN, может дело в этом? Если да, то почему и как исправить?
tcp 0 0 127.0.0.1:12301 0.0.0.0:* LISTEN 1555/opendkim tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 1441/dovecot tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 1441/dovecot tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 1954/exim4 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1512/vsftpd tcp 0 0 172.31.41.165:53 0.0.0.0:* LISTEN 1418/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1418/named tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1954/exim4 tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1418/named tcp 0 0 0.0.0.0:2525 0.0.0.0:* LISTEN 1954/exim4 tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 1441/dovecot tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1440/zabbix_agentd tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 1441/dovecot tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 1954/exim4 tcp6 0 0 . 110 . * LISTEN 1441/dovecot tcp6 0 0 . 143 . * LISTEN 1441/dovecot tcp6 0 0 . 80 . * LISTEN 1660/apache2 tcp6 0 0 . 53 . * LISTEN 1418/named tcp6 0 0 . 3128 . * LISTEN 743/(squid-1) tcp6 0 0 ::1:953 . * LISTEN 1418/named tcp6 0 0 . 443 . * LISTEN 1660/apache2 tcp6 0 0 . 2236 . * LISTEN 1446/sshd tcp6 0 0 . 993 . * LISTEN 1441/dovecot tcp6 0 0 . 10050 . * LISTEN 1440/zabbix_agentd tcp6 0 0 . 995 . * LISTEN 1441/dovecot tcp6 0 0 . 3306 . * LISTEN 1518/mysqld udp 0 0 0.0.0.0:37120 0.0.0.0:* 743/(squid-1) udp 0 0 10.8.0.1:53 0.0.0.0:* 1418/named udp 0 0 172.31.41.165:53 0.0.0.0:* 1418/named udp 0 0 127.0.0.1:53 0.0.0.0:* 1418/named udp 0 0 0.0.0.0:68 0.0.0.0:* 1144/dhclient udp 0 0 0.0.0.0:1194 0.0.0.0:* 1492/openvpn udp6 0 0 . 55121 . * 743/(squid-1) udp6 0 0 . 53 . * 1418/named
Вывод iptables -L : https://pastebin.com/ApMia7fB
Заранее спасибо за ответы.
- Вопрос задан более трёх лет назад
- 1710 просмотров
2 комментария
Простой 2 комментария
Как настроить OpenVPN на Debian 11. Часть 1
Когда вы настраиваете удалённый доступ, важно не только предоставить всем сотрудникам подключение к нужным сервисам, но и позаботиться о безопасности. В этом помогает VPN — виртуальная частная сеть. VPN‑сервер действует как единая точка входа: он аутентифицирует пользователей и создаёт зашифрованный туннель между их устройствами и частной сетью. А ещё он считается более гибким решением, чем, например, SSH Jump Server.
Вы можете использовать платный VPN или создать и администрировать собственный. В этой статье разбираем, как настроить OpenVPN на Debian 11.

Вам понадобится
- два сервера Debian 11: один — для размещения OpenVPN, второй — для центра сертификации (Certificate Authority или CA);
- пользователь с привилегиями sudo на обоих серверах;
- Easy‑RSA на обоих серверах (это утилита, которую мы будем использовать для управления сертификатами VPN).
Хотя технически можно запустить CA с вашего OpenVPN‑сервера или локального компьютера, безопаснее хранить CA на отдельном сервере, который не подключен к интернету постоянно. Так у злоумышленников меньше шансов получить доступ к закрытому ключу и использовать его для подписания новых сертификатов.
Также обращаем внимание, что если вы отключите аутентификацию по паролю при настройке серверов, в дальнейшем можете столкнуться с трудностями при передаче файлов между ними. Чтобы решить эту проблему, вы можете повторно включить аутентификацию по паролю на каждом сервере. Или в качестве альтернативы — сгенерировать пару SSH‑ключей для каждого сервера, а затем добавить открытый SSH‑ключ OpenVPN‑сервера в файл authorized_keys и наоборот. Здесь подробнее о том, как настроить SSH‑ключи в Debian 11 для любого из этих решений.

Шаг 1: установка OpenVPN
Для начала обновите индекс пакета VPN‑сервера и установите OpenVPN. OpenVPN доступен в репозиториях Debian по умолчанию, поэтому вы можете использовать apt для установки:
sudo apt update sudo apt install openvpn
Поскольку мы уже установили Easy‑RSA на оба сервера в качестве предварительного условия и инициализировали CA, мы готовы сгенерировать сертификат VPN‑сервера.
Шаг 2: создание сертификата сервера, ключа и файлов шифрования
На сервере OpenVPN перейдите в каталог /easy-rsa и запустите сценарий easyrsa с параметром gen-req , за которым идёт общее имя компьютера. Хорошо, если вы сделаете это описательно. В рамках этой статьи общее имя OpenVPN‑сервера — «server». Не забудьте включить опцию nopass . В противном случае файл запроса будет защищен паролем, что впоследствии приведёт к проблемам с правами доступа:
Примечание: если выберете имя, отличное от «server», вам придётся изменить некоторые из приведенных ниже инструкций. Например, при копировании сгенерированных файлов в каталог /etc/openvpn придётся заменить имена. Позже также придётся изменить файл /etc/openvpn/server.conf , чтобы указать правильные .crt и .key .
cd ~/easyrsa ./easyrsa gen-req server nopass
Скрипт предложит ввести общее имя, которое вы хотите отобразить в запросе на подписание сертификата (CSR). По умолчанию в нём будет отображаться любое имя, которое вы передали в ./easyrsa gen-req . Введите ENTER , чтобы принять имя по умолчанию, или укажите другое.
Это создаст закрытый ключ для сервера и файл запроса сертификата с именем server.req . Скопируйте ключ сервера в каталог /etc/openvpn/ :
sudo cp ~/easy-rsa/pki/private/server.key /etc/openvpn/
Используя безопасный метод (например, SCP), перенесите файл server.req на свою машину CA:
scp ~/easy-rsa/pki/reqs/server.req sammy@your_CA_ip:/tmp
Затем на машине CA перейдите в каталог ~/easy-rsa :
cd ~/easy-rsa
Используя скрипт easyrsa , импортируйте файл server.req , следуя пути к файлу с общим именем, которое вы ввели при создании CSR:
./easyrsa import-req /tmp/server.req server
Затем подпишите запрос, запустив параметр easyrsa с помощью sign-req . Тип запроса может быть либо client , либо server . Для запроса сертификата OpenVPN-сервера обязательно используйте тип запроса server :
./easyrsa sign-req server server
В выходных данных вам предложат подтвердить, что запрос исходит из надёжного источника. Введите yes и нажмите ENTER , чтобы подтвердить это:

Если вы зашифровали ключ CA, следуя перечисленным в начале статьи инструкциям, на этом этапе вам будет предложено ввести пароль.
Далее нужно передать подписанный сертификат обратно на VPN-сервер с помощью безопасного метода:
scp pki/issued/server.crt sammy@your_server_ip:/tmp
Также нужно перенести на VPN-сервер файл ca.crt :
scp pki/ca.crt sammy@your_server_ip:/tmp
ca.crt нужен, чтобы OpenVPN знал, что может доверять сущности, подписавшей server.crt.
Затем на OpenVPN-сервере скопируйте файлы server.crt и ca.crt в каталог /etc/openvpn/ :
sudo cp /tmp/ /etc/openvpn/
Перейдите в каталог ~/easy-rsa :
cd ~/easy-rsa
Оттуда создайте надёжный ключ Diffie-Hellman, набрав:
./easyrsa gen-dh
Это может занять несколько минут. Далее сгенерируйте подпись HMAC, чтобы усилить возможности проверки TLS-сервера:
sudo openvpn --genkey secret ta.key
Когда команда завершится, скопируйте два новых файла в каталог /etc/openvpn/ :
sudo cp ~/easy-rsa/ta.key /etc/openvpn/ sudo cp ~/easy-rsa/pki/dh.pem /etc/openvpn/
Все файлы сертификатов и ключей, необходимые серверу, сгенерированы. Теперь можем переходить к созданию сертификатов и ключей, которые клиентский компьютер будет использовать для доступа к OpenVPN-серверу.
Шаг 3: генерация клиентского сертификата и пары ключей
Вы можете сгенерировать закрытый ключ и запрос сертификата на клиентской машине, а затем отправить его в CA для подписи, но в этой статье разберём процесс генерации запроса сертификата на VPN-сервере. Преимущество данного способа в том, что мы можем создать серверный скрипт, который автоматически сгенерирует файлы конфигурации клиента, содержащие все необходимые ключи, сертификаты и параметры в одном файле.
На этом шаге сначала сгенерируем пару клиентского ключа и сертификата. Если у вас более одного клиента, можете повторить этот процесс для каждого из них. Но, обратите внимание, что вам нужно будет передать скрипту уникальное значение имени для каждого клиента. На протяжении всей статьи первая пара сертификат/ключ упоминается как client1 .
На VPN-сервере начните с создания структуры каталогов в домашнем каталоге для хранения клиентского сертификата и файлов ключей:
mkdir -p ~/client-configs/keys
Поскольку вы будете хранить пары сертификатов/ключей ваших клиентов и файлы конфигурации в этом каталоге, следует заблокировать его разрешения в качестве меры безопасности:
chmod -R 700 ~/client-configs
Затем нужно вернуться в каталог ~/easy-rsa и запустить скрипт easyrsa с параметрами gen-req и nopass , а также общим именем для клиента:
cd ~/easy-rsa ./easyrsa gen-req client1 nopass
Нажмите ENTER , чтобы подтвердить общее имя. Затем скопируйте файл client1.key в каталог /client-configs/keys/ , который создали ранее:
cp pki/private/client1.key ~/client-configs/keys/
Перенесите файл client1.req на машину CA, используя безопасный метод:
scp pki/reqs/client1.req sammy@your_CA_ip:/tmp
На машине CA перейдите в каталог ~/easy-rsa и импортируйте запрос сертификата:
cd ~/easy-rsa ./easyrsa import-req /tmp/client1.req client1
Затем подпишите запрос, как делали это на предыдущем шаге. Но на этот раз обязательно укажите тип запроса client :
./easyrsa sign-req client client1
В командной строке введите yes , чтобы подтвердить, что вы готовы подписать запрос на сертификат и что он поступил из надёжного источника:

Если вы зашифровали свой ключ CA, вам будет снова предложено ввести пароль.
Это создаст файл сертификата клиента с именем client1.crt . Перенесите этот файл обратно на сервер:
scp pki/issued/client1.crt sammy@your_server_ip:/tmp
На OpenVPN-сервере скопируйте сертификат клиента в каталог /client-configs/keys/ :
cp /tmp/client1.crt ~/client-configs/keys/
Файлы ca.crt и ta.key также скопируйте в каталог /client-configs/keys/ :
sudo cp ~/easy-rsa/ta.key ~/client-configs/keys/ sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/
Все сертификаты и ключи сгенерированы и хранятся в соответствующих каталогах. Есть ещё несколько действий, которые необходимо выполнить с этими файлами, но они появятся в следующих шагах. А пока перейдём к настройке OpenVPN на сервере.
Шаг 4: настройка OpenVPN
Начните с копирования образца файла конфигурации OpenVPN в каталог конфигурации, который будет использоваться в качестве основы для вашей настройки:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Откройте файл конфигурации сервера в текстовом редакторе:
sudo nano /etc/openvpn/server.conf
Найдите раздел HMAC, выполнив поиск по директиве tls-auth . Эта строка уже должна быть раскомментирована, но если это не так, то удалите «;»:

Далее найдите раздел о криптографических шифрах, выполнив поиск закомментированных строк шифра. Шифр AES-256-CBC предлагает хороший уровень шифрования и хорошо поддерживается. Опять же, эта строка уже должна быть раскомментирована, но если это не так, просто удалите «;»:

Добавьте директиву auth для выбора алгоритма обработки сообщений HMAC. Неплохой выбор — SHA256 :

Найдите строку, содержащую директиву dh , которая определяет параметры Diffie-Hellman. Из-за изменений, внесенных в Easy-RSA, имя файла для ключа Diffie-Hellmanможет отличаться от того, что указано в примере файла конфигурации сервер. При необходимости измените указанное здесь имя файла, удалив 2048 , чтобы оно соответствовало ключу, сгенерированному на предыдущем шаге:

Наконец, найдите настройки user и group и удалите «;» в начале каждого, чтобы раскомментировать строки:

Изменения, которые вы внесли в образец файла server.conf до этого момента, необходимы для работы OpenVPN. Изменения, описанные ниже, являются необязательными, хотя они также необходимы для многих распространенных случаев использования.
Отправка изменений DNS для перенаправления трафика через VPN (необязательно)
Приведенные выше настройки создадут VPN-соединение между двумя машинами, но не заставят их использовать туннель. Чтобы применить VPN для маршрутизации всего трафика, нужно передать настройки DNS на клиентские компьютеры.
В файле server.conf есть несколько директив, которые нужно изменить, чтобы включить эту функциональность. Найдите раздел redirect-gateway и удалите точку с запятой «;» из начала строки redirect-gateway :

Найдите раздел dhcp-option . Снова уберите «;» перед обеими строками, чтобы раскомментировать их:

Это поможет клиентам перенастроить конфигурацию DNS, чтобы использовать VPN-туннель в качестве шлюза по умолчанию.
Настройка порта и протокола
По умолчанию сервер OpenVPN использует порт 1194 и протокол UDP для приема клиентских подключений. Если вам нужно использовать другой порт из-за ограниченных сетевых сред, вы можете изменить параметр port . Если вы не размещаете веб-контент на сервере OpenVPN, порт 443 — оптимальный выбор, поскольку обычно он разрешён правилами брандмауэра.

Часто протокол также ограничен этим портом. Если это так, измените proto с UDP на TCP:

Если вы все-таки переключите протокол на TCP, нужно изменить значение директивы explicit-exit-notify с 1 на 0 , поскольку эта директива используется только UDP. Невыполнение этого требования при использовании TCP приведёт к ошибкам при запуске службы OpenVPN:

Если у вас нет необходимости использовать другой порт и протокол, лучше всего оставить эти настройки по умолчанию.
Учетные данные не по умолчанию
Если во время команды . /easyrsa gen-req вы выбрали другое имя для сертификата сервера на шаге 2, измените строки cert и key , чтобы они указывали на соответствующие файлы .crt и .key . Если вы использовали имя по умолчанию, оно уже задано правильно:

Когда закончите, сохраните и закройте файл.
Шаг 5: настройка сетевой конфигурации сервера
Есть некоторые аспекты сетевой конфигурации сервера, которые нужно настроить, чтобы OpenVPN мог правильно направлять трафик через VPN. Первым из них является IP-переадресация — метод определения, куда следует направлять IP-трафик.
Настройте параметры переадресации IP вашего сервера по умолчанию, изменив файл /etc/sysctl.conf :
sudo nano /etc/sysctl.conf
Внутри найдите строку с комментариями, которая устанавливает net.ipv4.ip_forward . Удалите символ «#» из начала строки, чтобы раскомментировать этот параметр:

Сохраните и закройте файл, когда закончите.
Чтобы прочитать файл и скорректировать значения для текущего сеанса, введите:
sudo sysctl -p
Output net.ipv4.ip_forward = 1
Если вы следовали инструкции по настройке сервера Debian 11, у вас должен быть установлен брандмауэр UFW. В рамках этой статьи нам понадобится брандмауэр для управления частью трафика, поступающего на сервер. Некоторые правила брандмауэра должны быть изменены, чтобы включить masquerading и концепцию iptables, обеспечивающую динамическую трансляцию сетевых адресов для правильной маршрутизации клиентских подключений.
Прежде чем открывать файл конфигурации брандмауэра для добавления правил masquerading, нужно найти общедоступный сетевой интерфейс компьютера. Для этого введите:
ip route | grep default
Ваш публичный интерфейс — это строка, следующая за «dev» в выходных данных команды. Например, приведенный ниже вывод показывает интерфейс с именем eth0 :

Когда у вас есть интерфейс, связанный с вашим маршрутом по умолчанию, откройте файл /etc/ufw/before.rules , чтобы добавить соответствующую конфигурацию:
sudo nano /etc/ufw/before.rules
Правила UFW обычно добавляются с помощью команды ufw . Однако правила, перечисленные в файле before.rules , считываются и применяются до загрузки обычных правил UFW. Ближе к началу файла добавьте выделенные ниже строки. Это установит политику по умолчанию для цепочки POSTROUTING в таблице nat и замаскирует любой трафик, поступающий из VPN. Не забудьте заменить eth0 в строке -A POSTROUTING :
# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # END OPENVPN RULES # Don't delete these required lines, otherwise there will be errors *filter . . .
Сохраните и закройте файл, когда закончите.
Затем укажите UFW, чтобы он также разрешал переадресацию пакетов по умолчанию. Для этого откройте файл /etc/default/ufw :
sudo nano /etc/default/ufw
Внутри найдите директиву DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT :
DEFAULT_FORWARD_POLICY="ACCEPT"
Сохраните и закройте файл, когда закончите.
Затем настройте брандмауэр так, чтобы он пропускал трафик через OpenVPN. Если вы не изменили порт и протокол в файле /etc/openvpn/server.conf , нужно открыть UDP-трафик на порт 1194 . Если вы изменили порт и/или протокол, замените выбранные значения.
Если вы не добавили SSH-порт, добавьте его также здесь:
sudo ufw allow 1194/udp sudo ufw allow OpenSSH
После добавления этих правил отключите и снова включите UFW, чтобы перезапустить его и загрузить изменения из всех файлов, которые вы изменили:
sudo ufw disable sudo ufw enable
Теперь ваш сервер настроен на корректную обработку трафика OpenVPN.
Шаг 6: запуск и включение службы OpenVPN
Наконец-то вы готовы запустить службу OpenVPN на своем сервере. Делается это с помощью утилиты systemctl :
sudo systemctl start openvpn@server
Команда запустит службу openvpn , используя /etc/openvpn/server.conf в качестве файла конфигурации.
Дважды проверьте, что служба успешно запущена, введя:
sudo systemctl status openvpn@server
Если все прошло хорошо, ваш результат будет выглядеть примерно так:
Output ● openvpn@server.service - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2022-12-21 03:39:24 UTC; 29s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 3371 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 3587) Memory: 1.2M CGroup: /system.slice/system-openvpn.slice/openvpn@server.service └─3371 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.conf --writepid /run/openvpn/
Вы также можете проверить, доступен ли интерфейс OpenVPN tun0 , набрав:
ip addr show tun0
Это выведет сконфигурированный интерфейс:

После запуска сервиса включите его, чтобы он автоматически запускался при загрузке:
sudo systemctl enable openvpn@server
Коротко о главном
Теперь ваш сервис OpenVPN запущен и работает. Однако, прежде чем вы сможете начать его использовать, вы должны сначала создать файл конфигурации для клиентской машины. В этой части мы разобрали, как создавать пары сертификат/ключ для клиентов, а в следующей расскажем, как создать инфраструктуру, которая будет генерировать файлы конфигурации клиента. Также отдельно рассмотрим, как установить клиентский VPN-профиль на Windows, macOS, Linux, iOS и Android.
Настройка OpenVPN сервера и клиента на Mikrotik
Бывают случаи, когда необходимо настроить удалённый доступ на mikrotik, или даже на несколько.
Особенно это актуально, если вы обслуживаете несколько объектов и нет возможности физически постоянно присутствовать возле оборудования.
В этом статье мы разберём, как настроить OpenVPN сервер на mikrotik, а также клиенты на mikrotik и компьютере под управлением Windows.
Для работы нам понадобиться Белый IP адрес (он и будет адресом сервера в наших настройках), для доступа к серверу из интернета и сертификаты безопасности.
Краткий план данной статьи:
- Создание сертификатов и ключей OpenVPN
- Создание сервера OpenVPN на Mikrotik
- Создание клиента OpenVPN на ПК
- Создание клиента OpenVPN на Mikrotik
Создание сертификатов и ключей OpenVPN
1) Скачаем программу OpenVPN с официального сайта

2) Устанавливаем программу, выбрав все галочки.
EasyRSA Certificate Management Scripts (специально созданная программа по созданию ключей и сертификатов,которая использует openssl для выполнения действий с ключами и сертификатами) нам обязательно понадобится для генерации ключей и сертификатов.

3) Указываем путь. В дальнейшем он нам понадобиться. В нашем случае используем стандартный C:\Program Files\OpenVPN
4) После установки заходим в C:\Program files\OpenVPN\easy-rsa
Открываем vars.bat (если его нет, то vars.bat.sample) блокнотом или NotePad++ и редактируем его.
set KEY_COUNTRY=RU
set KEY_PROVINCE=MoscowRegion
set KEY_CITY=MOSCOW
set KEY_ORG=OpenVPN
set KEY_EMAIL=mail@mail.com
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=OU
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234
В строках set KEY_CN и set KEY_NAME указываем server
Последние 2 строки — параметры по умолчанию. Остальное можете редактировать под себя.
Сохраняем файл как vars.bat на рабочий стол, а затем копируем в папку C:\Program files\OpenVPN\easy-rsa
Чаще всего сохранить напрямую в исходную папку не получится — не хватает прав.
5) Отредактируем файл openssl-1.0.0.cnf
Так же открываем с помощью блокнота или notepad++
Нас интересует строка
default_days = 3650 # how long to certify for
Она отвечает за время жизни сертификата. Если значение отличается — то указываем 3650 (10 лет).
Сохраняем.
6) Запускаем командную строку от имени администратора:
Пуск — Все программы — Стандартные
Правой кнопкой мыши на «Командная строка» и в меню — Запустить от имени администратора
Командную строку не закрываем до конца процесса генерации сертификатов.

7) По очерёдно выполняем следующие три команды
cd: C:\Program files\OpenVPN\easy-rsa
vars
clean-all
В итоге мы должны увидеть сообщение «Скопировано файлов: 1» дважды.

В папке C:\Program files\OpenVPN\easy-rsa появится папка keys с двумя файлами index.txt и serial

8) Генерируем ключ Диффи Хельмана — команда build-dh
Генерация займёт некоторое время. Дождитесь окончания.
9) Генерируем ключ центра сертификации (CA) — build-ca
Нажимаем Enter пока не закончатся вопросы.
Вы увидите в командной строке путь C:\Program files\OpenVPN\easy-rsa

Нет смысла менять заданные значения. Вы ранее прописали эти параметры в файле vars.bat
10) Генерируем сертификат сервера — команда build-key-server server
Нажимаем Enter (оставляем параметры по умолчанию, прописанные в vars.bat) пока не дойдём до вопросов.
Sign the certificate? (Создание сертификата на 3650 дней)
1 out of 1 certificate requests certified, commit? (Запись сертификата в базу)
На вопросы отвечаем нажатием Y

11) Генерируем сертификат клиента build-key client
Нажимаем Enter (оставляем параметры по умолчанию, прописанные в vars.bat) пока не дойдём до вопросов Common Name и Name.
На эти вопросы отвечаем client — это название создаваемого сертификата.
На вопросы Sign the certificate? и 1 out of 1 certificate requests certified, commit? отвечаем нажатием Y
12) Генерация сертификатов окончена.
В папке C:\Program files\OpenVPN\easy-rsa\keys можно увидеть следующие файлы

Сертификаты для сервера и клиентов готовы.
Настройке OpenVPN сервера на Mikrotik
Подключимся к Mikrotik с помощью программы Winbox.
Загрузим 3 файла: ca.crt, server.crt, server.key
Для этого в меню нажмём Files и перетащим их из папки C:\Program files\OpenVPN\easy-rsa\keys

13) Далее необходимо их импортировать.
Откроем System – Certificates — Import и поочерёдно выберем сертификаты в этом порядке:
ca.crt
server.crt
server.key

После импорта появится две записи

14) Создадим пул адресов для VPN клиентов
IP — Pool — add (+)
Введём название openvpn-pool
Диапазон 172.30.0.2-172.30.0.253

15) Создадим PPP профиль.
PPP — Profiles — add (+)
Введём название openvpn
Локальный адрес 172.30.0.1
Созданный Пул openvpn-pool
Остальные настройки оставляем по умолчанию
Нажимаем ОК

16) Создадим непосредственно сам OpenVPN сервер
PPP — Interface — OVPN Server
Включаем Enable
Указываем порт 1194
Выбираем наш профиль openvpn
Поставим галочку Require Client Certificate
Выберем наш сертификат server.crt

17) Создадим пользователя для подключения.
PPP — Secrets — add (+)
Введём имя пользователя и пароль ovpn_user1
Выбираем Сервис ovpn и профиль openvpn

Создадим 2 пользователя:
ovpn_user1 для клиента на компьютере
ovpn_mikrotik1 для клиента на Mikrotik
Рекомендуется для каждого VPN клиента создавать отдельное уникальное имя пользователя.
В дальнейшем это упростит работу и позволит отслеживать всех подключенных VPN клиентов.
18) Настроим фаервол
IP — Firewall — add(+)
Во вкладке General указываем:
Chain — input
Protocol — tcp
Порт 1194
Интерфейс — ether1 (Если интернет идёт через него)
Вкладка Action:
Action — accept
Затем ОК

Сервер настроен, теперь приступим к настройке VPN клиентов.
Настройка VPN клиента на компьютере под управлением Windows
19) Копируем в папку C:\Program files\OpenVPN\config\
из C:\Program files\OpenVPN\easy-rsa\keys следующие файлы
ca.crt, client.crt, client.key.
из C:\Program files\OpenVPN\simple-config\
client.ovpn
Создадим текстовый файл pass, где укажем логин и пароль от созданного VPN клиента на сервере.
В нашем случае это ovpn_user1

20) Откроем файл client.ovpn с помощью блокнота или notepad++
Изменяем следующие строки:
#Протокол
proto tcp
#Адрес и порт сервера
remote ваш.ip.адрес.сервера 1194
#Проверяем правильность названия ключей
ca ca.crt
cert client.crt
key client.key
И в самом конце добавим строчку
auth-user-pass «C:\\Program files\\OpenVPN\\config\\pass.txt»
В общем итоге у нас получатся следующие настройки в этом файле:
client
dev tun
proto tcp
remote адрес_сервера 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert user.crt
key user.key
remote-cert-tls server
cipher AES-128-CBC
verb 3
auth-user-pass «c:\\Program Files\\OpenVPN\\config\\pass.txt»
Остальные настройки закоментированы решеткой «#» или точкой с запятой «;»
21) Сохраняем файл. Если сохранить в папку не получается — сохраняем на рабочий стол, а затем копируем с заменой.
Запускаем OpenVPN и подключаемся.

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

Настройка VPN клиента на Mikrotik
Имея настроенный OpenVPN сервер, можно настроить доступ на Mikrotik даже там, где нет белого IP адреса.
22) Подключимся к Mikrotik с помощью программы Winbox.
Загрузим 2 файла: client.crt, client.key
Для этого в меню нажмём Files и перетащим их из папки C:\Program files\OpenVPN\easy-rsa\keys

23) Далее необходимо их импортировать.
Откроем System – Certificates — Import и поочерёдно выберем сертификаты в этом порядке:
client.crt
client.key

24) Настроим параметры сервера:
PPP — add(+) — OVPN client

Во вкладке General указываем имя
Name — openVPN1 (любое, на ваше усмотрение)
Вкладка Dial Out:
Connect To — Адрес сервера(Внешний IP адрес главного hjenthf Mikrotik)
Port 1194
Указываем пользователя и пароль, который мы создали на VPN сервере
В нашем случае это пользователь ovpn_mikrotik1
Сертификат Client.crt
Нажимаем ОК

25) В терминале набираем /interface ovpn-client monitor openVPN1
Должно появиться сообщение со статусом connected

Теперь к этому mikrotik можно подключиться через VPN по адресу, который он поулчил от VPN сервера

Посмотреть адрес можно:
В Mikrotik-клиенте в IP-Adresses строка с нашим интерфейсом openVPN1

В Mikrotik-сервере PPP-Active Connections