<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.rtzra.ru/lib/exe/css.php?s=feed" type="text/css"?>
<rss version="2.0">
    <channel xmlns:g="http://base.google.com/ns/1.0">
        <title>RTzRa&#039;s hive - software:openvpn</title>
        <description>Все работает</description>
        <link>https://wiki.rtzra.ru/</link>
        <lastBuildDate>Sun, 19 Jul 2026 21:04:01 +0000</lastBuildDate>
        <generator>FeedCreator 1.8</generator>
        <image>
            <url>https://wiki.rtzra.ru/_media/wiki/logo.png</url>
            <title>RTzRa&#039;s hive</title>
            <link>https://wiki.rtzra.ru/</link>
        </image>
        <item>
            <title>OpenVPN и маршруты в клиентские сети</title>
            <link>https://wiki.rtzra.ru/software/openvpn/openvpn-routes-to-client-network</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;openvpn_i_marshruty_v_klientskie_seti&quot;&gt;OpenVPN и маршруты в клиентские сети&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Иногда при использовании OpenVPN бывает необходимо попадать с сервера в клиентские сети. Например, к серверу OpenVPN подключается два клиента с подсетями 192.168.100.0/24 и 192.168.101.0/24 и с сервера необходимо добавить маршруты в подсети этих клиентов. Стандартными настройками это не делается, нужно прикручивать скрипты.
&lt;/p&gt;

&lt;p&gt;
Устанавливаем утилиту ipcalc:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install ipcalc&lt;/pre&gt;

&lt;p&gt;
Создаем скрипты /etc/openvpn/client-connect.sh и /etc/openvpn/client-disconnect.sh
&lt;/p&gt;

&lt;p&gt;
/etc/openvpn/client-connect.sh
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Скрипт выполняется при подключении каждого клиента&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Логируем запуск&lt;/span&gt;
logger &lt;span class=&quot;re5&quot;&gt;-t&lt;/span&gt; openvpn &lt;span class=&quot;st0&quot;&gt;&amp;quot;Client &lt;span class=&quot;es2&quot;&gt;$common_name&lt;/span&gt; connected with IP &lt;span class=&quot;es2&quot;&gt;$ifconfig_pool_remote_ip&lt;/span&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Проверяем CCD файл клиента&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/etc/openvpn/ccd/&lt;span class=&quot;es2&quot;&gt;$common_name&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;co0&quot;&gt;# Ищем iroute директивы&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;IFS&lt;/span&gt;= &lt;span class=&quot;kw3&quot;&gt;read&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-r&lt;/span&gt; line; &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$line&lt;/span&gt;&amp;quot;&lt;/span&gt; =~ ^iroute&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;:space:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;\.&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;:space:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;\.&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;re2&quot;&gt;network&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${BASH_REMATCH[1]}&lt;/span&gt;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;re2&quot;&gt;netmask&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${BASH_REMATCH[2]}&lt;/span&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;co0&quot;&gt;# Конвертируем в CIDR&lt;/span&gt;
            &lt;span class=&quot;re2&quot;&gt;cidr&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ipcalc &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$network&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$netmask&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Netmask&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;print $4&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$cidr&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
                &lt;span class=&quot;co0&quot;&gt;# Добавляем маршрут на сервере&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ip route&lt;/span&gt; add &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$network&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$cidr&lt;/span&gt;&amp;quot;&lt;/span&gt; via &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$ifconfig_pool_remote_ip&lt;/span&gt;&amp;quot;&lt;/span&gt; dev &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$dev&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;null
&amp;nbsp;
                &lt;span class=&quot;co0&quot;&gt;# Логируем действие&lt;/span&gt;
                logger &lt;span class=&quot;re5&quot;&gt;-t&lt;/span&gt; openvpn &lt;span class=&quot;st0&quot;&gt;&amp;quot;Added route &lt;span class=&quot;es2&quot;&gt;$network&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$cidr&lt;/span&gt; via &lt;span class=&quot;es2&quot;&gt;$ifconfig_pool_remote_ip&lt;/span&gt; (client: &lt;span class=&quot;es2&quot;&gt;$common_name&lt;/span&gt;)&amp;quot;&lt;/span&gt;
&amp;nbsp;
                &lt;span class=&quot;co0&quot;&gt;# Выводим в лог OpenVPN&lt;/span&gt;
                &lt;span class=&quot;kw3&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es4&quot;&gt;$(date)&lt;/span&gt;: Added route &lt;span class=&quot;es2&quot;&gt;$network&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$cidr&lt;/span&gt; via &lt;span class=&quot;es2&quot;&gt;$ifconfig_pool_remote_ip&lt;/span&gt; for client &lt;span class=&quot;es2&quot;&gt;$common_name&lt;/span&gt;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/etc/openvpn/ccd/&lt;span class=&quot;es2&quot;&gt;$common_name&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
/etc/openvpn/client-disconnect.sh
&lt;/p&gt;
&lt;pre class=&quot;code bash&quot;&gt;&lt;span class=&quot;co0&quot;&gt;#!/bin/bash&lt;/span&gt;
&lt;span class=&quot;co0&quot;&gt;# Скрипт выполняется при отключении клиента&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;co0&quot;&gt;# Проверяем CCD файл клиента&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/etc/openvpn/ccd/&lt;span class=&quot;es2&quot;&gt;$common_name&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;re2&quot;&gt;IFS&lt;/span&gt;= &lt;span class=&quot;kw3&quot;&gt;read&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-r&lt;/span&gt; line; &lt;span class=&quot;kw1&quot;&gt;do&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$line&lt;/span&gt;&amp;quot;&lt;/span&gt; =~ ^iroute&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;:space:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;\.&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;:space:&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;-&lt;span class=&quot;nu0&quot;&gt;9&lt;/span&gt;\.&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
            &lt;span class=&quot;re2&quot;&gt;network&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${BASH_REMATCH[1]}&lt;/span&gt;&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;re2&quot;&gt;netmask&lt;/span&gt;=&lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es3&quot;&gt;${BASH_REMATCH[2]}&lt;/span&gt;&amp;quot;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;re2&quot;&gt;cidr&lt;/span&gt;=$&lt;span class=&quot;br0&quot;&gt;&amp;#40;&lt;/span&gt;ipcalc &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$network&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$netmask&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;grep&lt;/span&gt; &lt;span class=&quot;st_h&quot;&gt;&#039;Netmask&#039;&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span class=&quot;st_h&quot;&gt;&#039;print $4&#039;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
            &lt;span class=&quot;kw1&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span class=&quot;re5&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$cidr&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;br0&quot;&gt;&amp;#93;&lt;/span&gt;; &lt;span class=&quot;kw1&quot;&gt;then&lt;/span&gt;
                &lt;span class=&quot;co0&quot;&gt;# Удаляем маршрут&lt;/span&gt;
                &lt;span class=&quot;kw2&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;kw2&quot;&gt;ip route&lt;/span&gt; del &lt;span class=&quot;st0&quot;&gt;&amp;quot;&lt;span class=&quot;es2&quot;&gt;$network&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$cidr&lt;/span&gt;&amp;quot;&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;sy0&quot;&gt;&amp;gt;/&lt;/span&gt;dev&lt;span class=&quot;sy0&quot;&gt;/&lt;/span&gt;null
&amp;nbsp;
                &lt;span class=&quot;co0&quot;&gt;# Логируем&lt;/span&gt;
                logger &lt;span class=&quot;re5&quot;&gt;-t&lt;/span&gt; openvpn &lt;span class=&quot;st0&quot;&gt;&amp;quot;Removed route &lt;span class=&quot;es2&quot;&gt;$network&lt;/span&gt;/&lt;span class=&quot;es2&quot;&gt;$cidr&lt;/span&gt; (client: &lt;span class=&quot;es2&quot;&gt;$common_name&lt;/span&gt; disconnected)&amp;quot;&lt;/span&gt;
            &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
        &lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
    &lt;span class=&quot;kw1&quot;&gt;done&lt;/span&gt; &lt;span class=&quot;sy0&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;st0&quot;&gt;&amp;quot;/etc/openvpn/ccd/&lt;span class=&quot;es2&quot;&gt;$common_name&lt;/span&gt;&amp;quot;&lt;/span&gt;
&lt;span class=&quot;kw1&quot;&gt;fi&lt;/span&gt;
&amp;nbsp;
&lt;span class=&quot;kw3&quot;&gt;exit&lt;/span&gt; &lt;span class=&quot;nu0&quot;&gt;0&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;
Так же необходимо добавить в конфиг OpenVPN несколько строк, которые добавят вызов скриптов при подключении/отключении клиента.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;script-security 3  # или 2, если 3 не работает
client-connect /etc/openvpn/client-connect.sh
client-disconnect /etc/openvpn/client-disconnect.sh&lt;/pre&gt;

&lt;p&gt;
Добавляем в конфигурационный файл клиента:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ifconfig-push 172.16.1.10 255.255.255.0
iroute 192.168.100.0 255.255.255.0&lt;/pre&gt;

&lt;p&gt;
172.16.1.10 - IP который будет назначен клиенту при подключении
&lt;/p&gt;

&lt;p&gt;
iroute 192.168.100.0 255.255.255.0 - добавляет адрес подсети клиента, который и будет добавляется в маршруты
&lt;/p&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Fri, 26 Dec 2025 14:11:00 +0000</pubDate>
        </item>
        <item>
            <title>OpenVPN: дополнительные настройки</title>
            <link>https://wiki.rtzra.ru/software/openvpn/openvpn-server-settings</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;openvpndopolnitelnye_nastrojki&quot;&gt;OpenVPN: дополнительные настройки&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Отключить получение настроек &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt; от сервера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;pull-filter ignore &amp;quot;dhcp-option  DNS&amp;quot;
pull-filter ignore &amp;quot;register-dns&amp;quot;
pull-filter ignore &amp;quot;block-outside-dns&amp;quot;&lt;/pre&gt;

&lt;p&gt;
Максимально совместимые протоколы шифрования:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;data-ciphers AES-256-GCM:AES-128-GCM:CHACHA20-POLY1305
data-ciphers-fallback AES-256-CBC
auth SHA256&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/openvpn?do=showtag&amp;amp;tag=openvpn&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:openvpn&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; openvpn&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/nastrojki?do=showtag&amp;amp;tag=%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:nastrojki&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; настройки&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 12 Nov 2023 18:24:29 +0000</pubDate>
        </item>
        <item>
            <title>OpenVPN - эффект Стрейзанд</title>
            <link>https://wiki.rtzra.ru/software/openvpn/openvpn-streisand</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;openvpn_-_ehffekt_strejzand&quot;&gt;OpenVPN - эффект Стрейзанд&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Одной командой поднимается мега-монстр - полностью автоматизированный скрипт, ставит OpenVPN, Shadowsocks, stunnel и множество других прекрасных плюшек. Также настраивает фаервол. После установки есть вебморда (защищена https!) для выдачи ключей openvpn клиентам.
&lt;/p&gt;

&lt;p&gt;
Стрейзанд поддерживает создание новых серверов в Amazon EC2, Azure, DigitalOcean, Google Compute Engine, Linode, и Rackspace. В скором времени ожидается поддержка также и других облачных хостеров. Стрейзанд также можно запускать на любом сервере с операционной системой Ubuntu 16.04 вне зависимости от хостера, и сотни серверов могут быть одновременно сконфигурированы с применением этого метода.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;https://github.com/StreisandEffect/streisand/blob/master/README-ru.md&quot; class=&quot;urlextern&quot; title=&quot;https://github.com/StreisandEffect/streisand/blob/master/README-ru.md&quot; rel=&quot;ugc nofollow&quot;&gt;https://github.com/StreisandEffect/streisand/blob/master/README-ru.md&lt;/a&gt;
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/openvpn?do=showtag&amp;amp;tag=openvpn&quot; class=&quot;wikilink1&quot; title=&quot;tag:openvpn&quot; rel=&quot;tag&quot;&gt;openvpn&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/streizand?do=showtag&amp;amp;tag=streizand&quot; class=&quot;wikilink1&quot; title=&quot;tag:streizand&quot; rel=&quot;tag&quot;&gt;streizand&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/vpn?do=showtag&amp;amp;tag=vpn&quot; class=&quot;wikilink1&quot; title=&quot;tag:vpn&quot; rel=&quot;tag&quot;&gt;vpn&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Wed, 11 Apr 2018 09:14:00 +0000</pubDate>
        </item>
        <item>
            <title>OpenVPN и stunnel</title>
            <link>https://wiki.rtzra.ru/software/openvpn/openvpn-stunnel</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;openvpn_i_stunnel&quot;&gt;OpenVPN и stunnel&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
В некоторых случаях необходимо обернуть OpenVPN во что-то для прохода через фаерволы. Отличным вариантом является stunnel.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;OpenVPN \u0438 stunnel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;openvpn_i_stunnel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-248&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ustanavlivaem_stunnel&quot;&gt;Устанавливаем stunnel&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Устанавливаем на сервер и на клиенте:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt install stunnel4&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c stunnel&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ustanavlivaem_stunnel&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;249-402&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;nastraivaem_server&quot;&gt;Настраиваем сервер&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Создаем ключи:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd /etc/stunnel
openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 3650
cat key.pem cert.pem &amp;gt;&amp;gt; stunnel.pem&lt;/pre&gt;

&lt;p&gt;
Создаем файл конфигурации /etc/stunnel/stunnel.conf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;chroot = /var/lib/stunnel4
pid = /stunnel.pid
output = /stunnel.log
setuid = stunnel4
setgid = stunnel4
socket = l:TCP_NODELAY=1

[openvpn]
accept = XX.XX.XX.XX:YYYY
connect = 127.0.0.1:1194
cert=/etc/stunnel/cert.pem
key=/etc/stunnel/key.pem&lt;/pre&gt;

&lt;p&gt;
где XX.XX.XX.XX - адрес на котором stunnel будет слушать, а YYYY - порт
&lt;/p&gt;

&lt;p&gt;
Для того, чтобы сервис stunnel стартовал автоматически необходимо отредактировать файл /etc/default/stunnel4
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ENABLED=1&lt;/pre&gt;

&lt;p&gt;
Открываем порт на фаерволе (в моем случае это ufw):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo ufw allow YYYY&lt;/pre&gt;

&lt;p&gt;
Теперь перезапустим службу stunnel, сервис должен полноценно заработать и начать принимать входящие соединения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo /etc/init.d/stunnel4 restart&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0441\u0435\u0440\u0432\u0435\u0440&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nastraivaem_server&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;403-1664&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;nastraivaem_klienta&quot;&gt;Настраиваем клиента&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Копируем stunnel.pem - сертификат с сервера в /etc/stunnel
&lt;/p&gt;

&lt;p&gt;
Создаем файл конфигурации /etc/stunnel/stunnel.conf
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;output = /stunnel.log
client = yes

[openvpn]
cert = /etc/stunnel/stunnel.pem
accept = ZZ.ZZ.ZZ.ZZ:1194
connect = XX.XX.XX.XX:YYYY&lt;/pre&gt;

&lt;p&gt;
где
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; XX.XX.XX.XX - адрес сервера к которому stunnel будет подключаться, а YYYY - порт&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ZZ.ZZ.ZZ.ZZ - адрес сервера OpenVPN&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Теперь перезапустим службу stunnel, клиент должен подключиться:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# sudo /etc/init.d/stunnel4 restart&lt;/pre&gt;

&lt;p&gt;
Далее в OpenVPN со стороны клиента настраиваем подключение к ZZ.ZZ.ZZ.ZZ:1194 и проверяем работу
&lt;/p&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/openvpn?do=showtag&amp;amp;tag=openvpn&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:openvpn&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; openvpn&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/stunnel?do=showtag&amp;amp;tag=stunnel&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:stunnel&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; stunnel&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/vpn?do=showtag&amp;amp;tag=vpn&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:vpn&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; vpn&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nastraivaem_klienta&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:6,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1665-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 15 Sep 2024 11:15:58 +0000</pubDate>
        </item>
        <item>
            <title>OpenVPN Установка в Ubuntu</title>
            <link>https://wiki.rtzra.ru/software/openvpn/ubuntu-openvpn-installation</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;openvpn_ustanovka_v_ubuntu&quot;&gt;OpenVPN Установка в Ubuntu&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Пакеты идущие по умолчанию могут быть не всегда свежими (особенно если версия Ubuntu не последняя). Поэтому ставим из репозитория OpenVPN.
&lt;/p&gt;

&lt;p&gt;
Страница с описанием: &lt;a href=&quot;https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos&quot; class=&quot;urlextern&quot; title=&quot;https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos&quot; rel=&quot;ugc nofollow&quot;&gt;https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Все делаем под админом:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo -s&lt;/pre&gt;

&lt;p&gt;
Импортируем ключ, которым подписаны пакеты:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;# mkdir -p /etc/apt/keyrings # directory does not exist on older releases
# curl -fsSL https://swupdate.openvpn.net/repos/repo-public.gpg | gpg --dearmor &amp;gt; /etc/apt/keyrings/openvpn-repo-public.gpg&lt;/pre&gt;

&lt;p&gt;
Добавляем репозиторий:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ echo &amp;quot;deb [arch=&amp;lt;arch&amp;gt; signed-by=/etc/apt/keyrings/openvpn-repo-public.gpg] https://build.openvpn.net/debian/openvpn/&amp;lt;version&amp;gt; &amp;lt;osrelease&amp;gt; main&amp;quot; &amp;gt; /etc/apt/sources.list.d/openvpn-aptrepo.list&lt;/pre&gt;

&lt;p&gt;
Где &amp;lt;arch&amp;gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    amd64
    arm64 &lt;/pre&gt;

&lt;p&gt;
Где &amp;lt;version&amp;gt;:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    stable: stable releases only - no alphas, betas or RCs
    testing: latest releases, including alphas/betas/RCs
    release/2.3: OpenVPN 2.3 releases
    release/2.4: OpenVPN 2.4 releases, including alphas/betas/RCs
    release/2.5: OpenVPN 2.5 releases, including alphas/betas/RCs
    release/2.6: OpenVPN 2.6 releases, including alphas/betas/RCs&lt;/pre&gt;

&lt;p&gt;
а &amp;lt;osrelease&amp;gt; зависит от используемого дистрибутива:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;    buster (Debian 10.x)
    bullseye (Debian 11.x)
    bookworm (Debian 12.x)
    focal (Ubuntu 20.04 LTS)
    jammy (Ubuntu 22.04 LTS)
    noble (Ubuntu 24.04 LTS) &lt;/pre&gt;

&lt;p&gt;
Примеры:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;echo &amp;quot;deb http://build.openvpn.net/debian/openvpn/stable focal main&amp;quot; &amp;gt; /etc/apt/sources.list.d/openvpn-aptrepo.list
echo &amp;quot;deb http://build.openvpn.net/debian/openvpn/stable buster main&amp;quot; &amp;gt; /etc/apt/sources.list.d/openvpn-aptrepo.list&lt;/pre&gt;

&lt;p&gt;
Обновляем список пакетов и устанавливаем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;apt update &amp;amp;&amp;amp; apt-get install openvpn&lt;/pre&gt;
&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ubuntu?do=showtag&amp;amp;tag=ubuntu&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ubuntu&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; ubuntu&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/openvpn?do=showtag&amp;amp;tag=openvpn&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:openvpn&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; openvpn&lt;/a&gt;,
	&lt;a href=&quot;https://wiki.rtzra.ru/tag/ustanovka?do=showtag&amp;amp;tag=%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:ustanovka&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; установка&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;/div&gt;
</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 05 Jan 2025 13:28:09 +0000</pubDate>
        </item>
        <item>
            <title>OpenVPN Настройка сервера</title>
            <link>https://wiki.rtzra.ru/software/openvpn/ubuntu-openvpn-server</link>
            <description>
&lt;h1 class=&quot;sectionedit1&quot; id=&quot;openvpn_nastrojka_servera&quot;&gt;OpenVPN Настройка сервера&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Зачем 100500 статейка на одну и ту же тему? Просто для себя!
&lt;/p&gt;

&lt;p&gt;
Задача:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Сервер OpenVPN на Ubuntu (настройки пойдут на любом другом дистрибутиве, вся разница только в установке пакетов)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Разумные (но не параноидальные) настройки безопасности, больше информации можно найти тут: &lt;a href=&quot;https://blog.securityevaluators.com/hardening-openvpn-in-2020-1672c3c4135a&quot; class=&quot;urlextern&quot; title=&quot;https://blog.securityevaluators.com/hardening-openvpn-in-2020-1672c3c4135a&quot; rel=&quot;ugc nofollow&quot;&gt;https://blog.securityevaluators.com/hardening-openvpn-in-2020-1672c3c4135a&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Скорость работы через соединение должна быть приемлемой. Чем сильнее затянуты гайки в плане безопасности - тем неудобнее работать&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Что будет в итоге:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Авторизация по сертификатам&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Согласование ключей на основе эллиптических кривых ECDH (Elliptic Curve Diffie-Hellmann), а не на привычных DH. Что это и чем лучше можно посмотреть тут: &lt;a href=&quot;https://habr.com/ru/post/335906/&quot; class=&quot;urlextern&quot; title=&quot;https://habr.com/ru/post/335906/&quot; rel=&quot;ugc nofollow&quot;&gt;https://habr.com/ru/post/335906/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; TSL-криптование соединения&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Списки отзыва сертификатов&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Пуш клиентам необходимых настроек&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Что нужно:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Сервер с операционной системой Linux (в моем случае это Ubuntu)&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Белый IP -  в примере это XXX.XXX.XXX.XXX&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Крайне желательна &lt;abbr title=&quot;Domain Name System&quot;&gt;DNS&lt;/abbr&gt;-запись для данного IP (но можно обойтись) - в примере это vpn.mysite.com&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;OpenVPN \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;openvpn_nastrojka_servera&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;1-1760&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;ustanovka_openvpn&quot;&gt;Установка OpenVPN&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Подробно процесс установки описан тут: &lt;a href=&quot;https://wiki.rtzra.ru/software/openvpn/ubuntu-openvpn-installation&quot; class=&quot;wikilink1&quot; title=&quot;software:openvpn:ubuntu-openvpn-installation&quot; data-wiki-id=&quot;software:openvpn:ubuntu-openvpn-installation&quot;&gt;OpenVPN Установка в Ubuntu&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Так же для создания сертификатов нам понадобится пакет easy-rsa:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sudo apt install easy-rsa&lt;/pre&gt;

&lt;p&gt;
Примечание: нижеследующее описание для easy-rsa 2.x, в версии 3.x команды другие
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 OpenVPN&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;ustanovka_openvpn&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;1761-2249&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;sozdanie_direktorii_centra_sertifikacii&quot;&gt;Создание директории центра сертификации&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
OpenVPN использует сертификаты для шифрования трафика между сервером и клиентами. Для выпуска доверенных сертификатов нам потребуется создать наш собственный центр сертификации.
&lt;/p&gt;

&lt;p&gt;
Для начала скопируем шаблонную директорию easy-rsa в нашу домашнюю директорию с помощью команды make-cadir и перейдем в нее:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;make-cadir ~/openvpn-ca
cd ~/openvpn-ca&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sozdanie_direktorii_centra_sertifikacii&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:1,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;2250-2935&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit4&quot; id=&quot;nastrojka_peremennyx_centra_sertifikacii&quot;&gt;Настройка переменных центра сертификации&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Настройка переменных нужна для ускорения и упрощения создания сертификатов.
&lt;/p&gt;

&lt;p&gt;
Необходимо отредактировать файл vars и установить переменные как указано ниже:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;...
export KEY_SIZE=2048 # Длина ключа. Чем больше, тем безопаснее, но и меньше производительность
...
export CA_EXPIRE=3650 # Срок жизни сертификата центра авторизации. 3650 - 10 лет
...
export KEY_EXPIRE=3650 # Срок жизни сертификатов пользователей
export KEY_COUNTRY=&amp;quot;RU&amp;quot;  # Наименование страны
export KEY_PROVINCE=&amp;quot;YourRegion&amp;quot;  # Название региона
export KEY_CITY=&amp;quot;YourCity&amp;quot;  # Название города
export KEY_ORG=&amp;quot;YourCompany&amp;quot;  # Название компании
export KEY_EMAIL=&amp;quot;your@email.com&amp;quot;  # Адрес почты
export KEY_OU=&amp;quot;YourOU&amp;quot;  # Наименование подразделения
export KEY_CN=&amp;quot;CommonName&amp;quot; # Это имя сертификата и он меняется при создании или его нужно будет вводить руками
...
# X509 Subject Field
export KEY_NAME=&amp;quot;vpn.mysite.com&amp;quot;  # Имя ключа, необязательно. Можно указать что угодно, но лучше или DNS-имя или белый IP
...&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nastrojka_peremennyx_centra_sertifikacii&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:2,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;2936-4502&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit5&quot; id=&quot;kak_rabotat_s_sertifikatami&quot;&gt;Как работать с сертификатами&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
При любых операциях с сертификатами желательно начинать работу с применения переменных из файла vars:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~/openvpn-ca
source vars&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;kak_rabotat_s_sertifikatami&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:3,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;4503-4799&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;sozdanie_sertifikata_centra_sertifikacii_ca&quot;&gt;Создание сертификата центра сертификации (CA)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Убедитесь, что вы находитесь в директории центра сертификации и применим настройки из файла vars:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~/openvpn-ca
source vars&lt;/pre&gt;

&lt;p&gt;
Вы должны увидеть следующий вывод:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/fireball/openvpn-ca/keys&lt;/pre&gt;

&lt;p&gt;
Убедимся, что мы работаем в “чистой среде” выполнив следующую команду:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./clean-all&lt;/pre&gt;

&lt;p&gt;
Теперь мы можем создать наш корневой центр сертификации командой:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./build-ca&lt;/pre&gt;

&lt;p&gt;
Эта команда запустит процесс создания ключа и сертификата корневого центра сертификации. Поскольку мы задали все переменные в файле vars, все необходимые значения будут введены автоматически. Нажимайте ENTER для подтверждения выбора. По окончании процесса у нас появится сертификат центр сертификации (CA), который мы сможем использовать для создания всех остальных необходимых нам сертификатов.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0446\u0435\u043d\u0442\u0440\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 (CA)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sozdanie_sertifikata_centra_sertifikacii_ca&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:4,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;4800-6320&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;sozdanie_sertifikatov_servera&quot;&gt;Создание сертификатов сервера&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Создаем сертификат, в примере я выбрал наименование ServerVPN
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./build-key-server ServerVPN&lt;/pre&gt;

&lt;p&gt;
Согласитесь со всеми значениями по умолчанию (кроме Common Name, оно должно быть ServerVPN), нажимая ENTER. Не задавайте challenge password. В конце процесса два раза введите «Y» для подписи и подтверждения создания сертификата.
&lt;/p&gt;

&lt;p&gt;
Ключ протокола Диффи-Хеллмана, используемые при обмене ключами &lt;strong&gt;НЕ ДЕЛАЮ&lt;/strong&gt;, т.к. будет использоваться согласование ключей на основе эллиптических кривых ECDH (Elliptic Curve Diffie-Hellmann).
&lt;/p&gt;

&lt;p&gt;
Но если вдруг понадобится, вот команда:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./build-dh&lt;/pre&gt;

&lt;p&gt;
Создаем подпись HMAC для проверки целостности TLS:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;openvpn --genkey --secret keys/ta.key&lt;/pre&gt;

&lt;p&gt;
В результате в папке keys должно быть несколько файлов, из которых 4 нужные для дальнейшей работы:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ca.crt - сертификат центра авторизации
ServerVPN.crt - сертификат сервера
ServerVPN.key - приватный ключ сервера
ta.key - ключ для проверки TLS&lt;/pre&gt;
&lt;div title=&quot;Внимание&quot; class=&quot;bs-wrap bs-callout bs-callout-danger&quot;&gt;&lt;h4&gt;Внимание&lt;/h4&gt;&lt;strong&gt;Важно:&lt;/strong&gt; все файлы с расширением key являются приватными и должны быть доступны только их владельцам&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sozdanie_sertifikatov_servera&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:8,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;6321-8138&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit8&quot; id=&quot;sozdaem_fajl_otzyva_sertifikatov&quot;&gt;Создаем файл отзыва сертификатов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Файл отзыва нужен в ситуации когда какой-то сертификат «утек» и требуется запретить подключение с ним.
&lt;/p&gt;

&lt;p&gt;
Для создания файла необходимо создать сертификат и тут же отозвать его.
&lt;/p&gt;

&lt;p&gt;
Создаем, отвечая на все вопросы и в конце два раза «Y»:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./build-key empty-crl&lt;/pre&gt;

&lt;p&gt;
Отзываем:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./revoke-full empty-crl&lt;/pre&gt;

&lt;p&gt;
В папке keys появится файл crl.pem - нужно сделать на него символическую ссылку или каждый раз после отзыва сертификатов копировать в папку откуда его увидит OpenVPN.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u043e\u0442\u0437\u044b\u0432\u0430 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sozdaem_fajl_otzyva_sertifikatov&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:12,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;8139-9015&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;sozdaem_sertifikaty_polzovatelej&quot;&gt;Создаем сертификаты пользователей&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Создаем сертификат пользователя с именем client1, отвечая на все вопросы и в конце два раза «Y»:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;./build-key client1&lt;/pre&gt;

&lt;p&gt;
Итак, все готово и вот какие файлы для подключения будут нам нужны:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ca.crt&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; client1.crt&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; client1.key&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; ta.key&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;sozdaem_sertifikaty_polzovatelej&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:14,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;9016-9472&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;konfiguracionnyj_fajl_servera_openvpn&quot;&gt;Конфигурационный файл сервера OpenVPN&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Копируем наши сертификаты в папку:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;cd ~/openvpn-ca/keys
sudo cp ca.crt ServerVPN.crt ServerVPN.key ta.key /etc/openvpn&lt;/pre&gt;

&lt;p&gt;
Создаем файл /etc/openvpn/server.conf:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;port 1194 # Порт 1194
proto udp # Протокол UDP
dev tun # Тип интерфейса: TUN - L3, TAP - L2
ca /etc/openvpn/ca.crt # Сертификат ЦА (CA) 
cert /etc/openvpn/ServerVPN.crt # Сертификат сервера
key /etc/openvpn/ServerVPN.key  # Ключ сервера
crl-verify /etc/openvpn/crl.pem # Список отозванных сертификатов
dh none # Не используем Diffie-Hellmann
ecdh-curve secp384r1 # Используем эллиптические кривые
topology subnet # Топология
server 10.8.0.0 255.255.255.0 # Адрес сервера и /24 подсеть
ifconfig-pool-persist ipp.txt # перед тем как выдать клиенту свободный адрес из пула сервер должен свериться с файлом ipp.txt в котором прописывается привязка имени пользователя к ip-адресу
client-config-dir /etc/openvpn/ccd # Директория для индивидуальных настроек пользователей (IP, маршруты и т.д.)
push &amp;quot;dhcp-option DNS 10.8.0.1&amp;quot; # Принудительная отправка DNS-сервера клиентам
client-to-client # Разрешить клиеентам подключаться друг к другу
float # позволять пользователям менять IP
keepalive 10 60 # Проверка таймаутов каждый 10 сек и переподключение через 60 секунд неактивности
persist-key # не перечитывать файлы ключей при перезапуске туннеля
persist-tun # оставлять без изменения устройства tun/tap при перезапуске OpenVPN
explicit-exit-notify 1 # Уведомлять клиентов о необходимости переподключения
tls-crypt /etc/openvpn/ta.key # Ключ TLS
tls-version-min 1.2 # Минимальная версия TLS
remote-cert-tls client # Требовать сертификат клиента
verify-client-cert require # Запретить подключения без сертификата
cipher AES-256-GCM # Протокол шифрования. AES-128-GCM менее безопасно, зато быстрее на 40% - решать вам
auth SHA256 # Протокол аутентификации
opt-verify #не разрешать подключение клиентов с отличающимися настройками
verify-client-cert require #не разрешать подключение без сертификатов
compress lz4-v2 # Режим сжатия
push &amp;quot;compress lz4-v2&amp;quot; # Уведомить клиента об используемом режиме сжатия
user nobody # Запуск процесса под непривелегированным пользователем
group nogroup # Запуск процесса под непривелегированным пользователем
status openvpn-status.log # путь к статус-файлу, в котором содержится информация о текущих соединениях и информация о интерфейсах TUN/TAP
verb 3 # уровень логирования
mute 20 # кол-во записей в каждой из категорий&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0441\u0435\u0440\u0432\u0435\u0440\u0430 OpenVPN&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;konfiguracionnyj_fajl_servera_openvpn&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:15,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;9473-13216&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit11&quot; id=&quot;fajly_individualnyx_nastroek_dlja_opredelennyx_klientov&quot;&gt;Файлы индивидуальных настроек для определенных клиентов&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если требуется каким-то клиентам выдавать индивидуальные настройки, должно быть сделано:
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Должна существовать папка ccd (можно назвать как угодно), например /etc/openvpn/ccd&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; Включена настройка client-config-dir /etc/openvpn/ccd в файле конфигурации&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt; В папке создан файл для конкретного клиента с его именем&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Содержимое файла client1 для примера:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;ifconfig-push 10.8.0.101 255.255.255.0
push &amp;quot;route 10.10.10.0 255.255.255.0&amp;quot;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u0430\u0439\u043b\u044b \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fajly_individualnyx_nastroek_dlja_opredelennyx_klientov&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:17,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;13217-14020&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;fajl_nastroek_klienta_ovpn&quot;&gt;Файл настроек клиента (*.ovpn)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Пример файла клиента:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;client # Режим работы Клиент
proto udp # Протокол UDP
dev tun # Тип интерфейса: TUN - L3, TAP - L2
nobind # использовать динамический порт для подключени
remote vpn.mysite.com 1194 # Сервер к которому подключаемся и порт
resolv-retry infinite # Бесконечное кол-во попыток подключения
keepalive 10 60 # Проверка таймаутов каждый 10 сек и переподключение через 60 секунд неактивности
persist-key # не перечитывать файлы ключей при перезапуске туннеля
persist-tun # оставлять без изменения устройства tun/tap при перезапуске OpenVPN
cipher AES-256-GCM # Протокол шифрования. AES-128-GCM менее безопасно, зато быстрее на 40% - решать вам
auth SHA256 # Протокол аутентификации
tls-version-min 1.2 # Минимальная версия TLS
tls-client # Режим клиента TLS
remote-cert-tls server # Проверять TLS от сервера
verify-x509-name vpn.mysite.com name # Проверять кем выдан сертификат
comp-lzo # Уровень сжатия
float # позволять менять IP
verb 3 # Уровель логирования
auth-nocache # Не кэшировать аутентификационные данные
&amp;lt;ca&amp;gt;
=== Сертификат центра авторизации (ca.crt) ===
&amp;lt;/ca&amp;gt;
&amp;lt;cert&amp;gt;
=== Сертификат пользователя (client1.crt) ===
&amp;lt;/cert&amp;gt;
&amp;lt;key&amp;gt;
=== Приватный ключ пользователя (client1.key) ===
&amp;lt;/key&amp;gt;
&amp;lt;tls-crypt&amp;gt;
=== Ключ HMAC для TLS (ta.key) ===
&amp;lt;/tls-crypt&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0424\u0430\u0439\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u043b\u0438\u0435\u043d\u0442\u0430 (*.ovpn)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;fajl_nastroek_klienta_ovpn&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:18,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;14021-16002&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit13&quot; id=&quot;nastrojka_firewall_uproschennyj_variant&quot;&gt;Настройка firewall (упрощенный вариант)&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Для начала необходимо разрешить прохождение трафика между интерфейсами в файле /etc/sysctl.conf:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;net.ipv4.ip_forward=1&lt;/pre&gt;

&lt;p&gt;
и применить изменения:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;sysctl -p&lt;/pre&gt;

&lt;p&gt;
Разрешаем клиентам ходить куда угодно (eth0 - основной шлюз):
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 firewall (\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;nastrojka_firewall_uproschennyj_variant&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:19,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;16003-&amp;quot;} --&gt;</description>
            <author>anonymous@undisclosed.example.com (Anonymous)</author>
            <pubDate>Sun, 11 Oct 2020 18:51:18 +0000</pubDate>
        </item>
    </channel>
</rss>
