Настройка OpenVPN сервера (CentOS)

Итак, стоит следующая задача: установить и настроить OpenVPN сервер с сертификатной аутентификацией. Весь трафик пользователя ( веб, icq, почта и т.д. ), при подключении VPN, должен автоматически направляться через защищенный канал, без каких либо дополнительных настроек приложений. На выходе получаем трафик с IP адреса OpenVPN сервера.
Сервер стоит на операционной системе CentOS.

OpenVPN - свободная реализация технологии VPN ( виртуальная частная сеть ) для создания шифрованных каналов связи. Для обеспечения безопасности управляющего канала и канала данных используется библиотека OpenSSL. Сфера применения довольно обширна, безопасное удаленное администрирование, организация удаленных рабочих мест, и, как в данном случае, обеспечение анонимной работы в интернет.
OpenVPN поддерживает несколько видов аутентификации.

  • Предустановленный ключ — самый простой вариант.
  • Аутентификация по сертификатам — наиболее гибкий в настройках метод.
  • Аутентификация по логину и паролю — клиентский сертификат при этом можно не использовать ( сертификат сервера обязателен ).

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

Включаем форвардинг пакетов

Важный шаг, поскольку если этого не сделать, работать данная схема не будет.
Подправляем файл конфигурации ядра /etc/sysctl.conf, в строке:

net.ipv4.ip_forward = 0

меняем 0 на 1

net.ipv4.ip_forward = 1

и выполняем команду:

[root@localhost /]# sysctl -p

это загрузит переменные ядра из обновленного файла sysctl.conf.
В CentOS, как и в большинстве дистрибутивов Linux, в качестве стандартного фаервола выступает iptables, добавляем в фаервол следующее правило:

[root@localhost /]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source ВНЕШНИЙ_IP

Вообще, вместо SNAT, можно использовать MASQUERADE, как рекомендует мануал по OpenVPN, но SNAT работает быстрей.
Не забудьте сделать что-бы оно загружалось при запуске системы.

[root@localhost ~]# mkdir /etc/iptables
[root@localhost ~]# /sbin/iptables-save > /etc/iptables/rules
[root@localhost ~]# echo "/sbin/iptables-restore < /etc/iptables/rules" >> /etc/rc.d/rc.local

Установка OpenVPN сервера

В стандартных репозитариях CentOS, пакет OpenVPN отсутствует, поэтому сначала нужно добавить репозитарий в котором есть OprnVPN, я использую EPEL.

[root@localhost ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Retrieving http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
warning: /var/tmp/rpm-xfer.FQI0km: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

Репозитарий добавлен, можно приступать к установке и настройке openvpn.

[root@localhost ~]# yum install openvpn

После установки OpenVPN, появляется ее домашняя папка, /etc/openvpn, это справедливо как минимум для CentOS, в других операционных системах папка может располагаться в другом месте, например во операционной системе FreeBSD ее принято держать в /usr/local/etc/openvpn/.

При установке, кроме самого OpenVPN сервера, будет установлен набор скриптов, для простой генерации ключей и сертификатов, расположено все это добро в /usr/share/openvpn/easy-rsa/2.0/. Кроме того в /usr/share/doc/openvpn-( версия )/, можно найти различные скрипты и примеры конфигов, которые могут пригодиться при построении различных вариантов VPN соединений.
Теперь можно приступать к настройке OpenVPN сервера.

Создание ключей и сертификатов

Структуру папок для ключей можно настроить как вам удобней, я буду делать по своему. В папке /usr/share/openvpn/easy-rsa/2.0/, создаем папку keys:

[root@localhost /]# cd /usr/share/openvpn/easy-rsa/2.0/
[root@localhost /]# mkdir ./keys

Далее настраиваем переменные в файле /usr/share/openvpn/easy-rsa/2.0/vars. Тут опять-же зависит от того, какую структуру папок вы выбрали для создания ключей и сертификатов и от прочих личных предпочтений. У меня получилось так:

export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"		# папка для ключей

echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR

export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"

export KEY_SIZE=1024  # длина ключа, можно поставить 2048

export CA_EXPIRE=3650	# срок действия корневого сертификата
export KEY_EXPIRE=3650   # срок действия ключа
export KEY_COUNTRY="ME"  
export KEY_PROVINCE="ME"
export KEY_CITY="MORDOR"
export KEY_ORG="DARKSIDE"
export KEY_EMAIL="darkside@nordor.buu"

Этот файл вызывается перед запуском скриптов генерации для установки необходимых значений переменных окружения. Что-бы лишний раз не заморачиваться с этим, я прописал вызов vars, в начало каждого скрипта, который мы будем использовать. Например файл build-ca будет выглядеть так:

#!/bin/bash
# Build a root certificate
. ./vars	# это будет срабатывать только если запускать build-ca находясь в той-же папке, можно прописать и абсолютный путь
export EASY_RSA="${EASY_RSA:-.}"
"$EASY_RSA/pkitool" --interact --initca $*

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

[root@localhost 2.0]# touch /usr/share/openvpn/easy-rsa/2.0/keys/index.txt
[root@localhost 2.0]# echo "00" > /usr/share/openvpn/easy-rsa/2.0/keys/serial

Кроме того, рекомендую заглянуть в файл openssl.cnf, это конфиг openssl, значения из которого так-же будут использоваться в процессе создания сертификатов и ключей. В частности там можно настроить названия, получаемых на выходе файлов.

Теперь создадим самоподписной корневой сертификат с приватным ключом, в процессе отвечаем на вопросы:

[root@localhost 2.0]# ./build-ca
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/openvpn/easy-rsa/2.0/keys
Generating a 1024 bit RSA private key
............................................++++++
...................++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [ME]:
State or Province Name (full name) [ME]:
Locality Name (eg, city) [MORDOR]:
Organization Name (eg, company) [DARKSIDE]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [DARKSIDE CA]:openvpn-ca  
Name []:openvpn-ca
Email Address [darkside@mmordor.buu]:

Теперь создадим сертификат и приватный ключ сервера:

[root@localhost 2.0]# [root@localhost 2.0]# ./build-key-server server
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/openvpn/easy-rsa/2.0/keys
Generating a 1024 bit RSA private key
.......................................................................................++++++
.....++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [ME]:
State or Province Name (full name) [ME]:
Locality Name (eg, city) [MORDOR]:
Organization Name (eg, company) [DARKSIDE]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [server]:
Name []:
Email Address [darkside@mmordor.buu]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:	# для сервера пароль ставить не нужно, просто жмем Enter
An optional company name []:
Using configuration from /usr/share/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'ME'
stateOrProvinceName   :PRINTABLE:'ME'
localityName          :PRINTABLE:'MORDOR'
organizationName      :PRINTABLE:'DARKSIDE'
commonName            :PRINTABLE:'server'
emailAddress          :IA5STRING:'darkside@mmordor.buu'
Certificate is to be certified until Jan 15 10:51:17 2021 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Генерируем ключ Диффи-Хелмана. Алгоритм Диффи-Хелмана позволяет получить двум сторонам общий секретный ключ, использующийся для дальнейшего симметричного шифрования данных.

[root@localhost 2.0]# ./build-dh
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/openvpn/easy-rsa/2.0/keys
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.....................+...............................+.........................+.........................+..............................+..................................................+.......................................+...+.....................................................................................................................+........................................................................................+.......................................+..............................................................+...........................................................++*++*++*

Напоследок генерируем ключ для TLS аутентификации.

[root@localhost 2.0]# openvpn --genkey --secret keys/tls.key

Теперь создадим каталог /etc/openvpn/keys и скопируем туда необходимые серверу ключи и сертификаты:

[root@localhost 2.0]# mkdir /etc/openvpn/keys
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/keys/ca.crt
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/server.crt /etc/openvpn/keys/server.crt
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/server.key /etc/openvpn/keys/server.key
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/tls.key /etc/openvpn/keys/tls.key
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/dh1024.pem /etc/openvpn/keys/dh1024.pem

Настало время определиться с конфигом. Я взял готовый файл server.conf из /usr/share/doc/openvpn-2.1.1/sample-config-files/, и привел к необходимому виду.
Получилось следующее:

port 1194 # Порт на котором vpn сервер будет принимать соединения
local 111.111.111.111 # Адрес, на котором будет висеть наш vpn сервер
proto tcp # Протокол. Можно поставить tcp или udp. Вопрос что выбрать, не однозначный и зависит от конкретных условий. Протокол udp работает побыстрей, но не всегда применим.
dev tun0 # Устройство туннеля
server 10.8.0.0 255.255.255.0 # Виртуальная сеть, которая будет установлена между клиентом и vpn сервером

# Ключи и сертификаты
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh2048.pem
tls-auth keys/tls.key 0 # На стороне сервера 0, на стороне клиента 1

cipher AES-256-CBC # Алгоритм шифрования, в данном случае 256-битный AES
user nobody # Пользователь от которого будет работать OpenVPN сервер 
group nobody # Группа
status openvpn-status.log
log-append openvpn.log
verb 3 # Уровень логгирования 
mute 20 # Не выводить повторять сообщение после 20 повторов
max-clients 30 # Максимальное количество клиентов
keepalive 10 120 # Каждые 10 секунд слать пинг, по истечении таймаута 120 секунд, перезапустить туннель
client-config-dir /etc/openvpn/servers/server/ccd # Директория для индивидуальных настроек каждого клиента
tls-server # Явное указание, что данный хост является TLS сервером
comp-lzo # Сжатие трафика
persist-key # Не трогать tun устройство при перезапуске openvpn сервера
persist-tun # Не перечитывать файлы ключей при перезапуске туннеля
push "redirect-gateway def1" # Протолкнуть клиенту новый шлюз по умолчанию
push "dhcp-option DNS 8.8.8.8" # Назначить для клиента DNS сервер, в данном случае публичный DNS от гугла

Собственно теперь можно пробовать запустить серверную часть и проверить, все-ли в норме.

[root@localhost openvpn]# service openvpn start
Starting openvpn:                                          [  OK  ]

Проверяем, появилось-ли устройство для туннеля.

[root@localhost openvpn]# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Занял-ли OpenVPN сервер, отведенный ему адрес и порт.

[root@localhost openvpn]# netstat -tupln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
.............
udp        0      0 192.168.50.135:1194         0.0.0.0:*                               3315/openvpn
.............

Вроде все на месте.
Если что-то пошло не так, смотрим /etc/openvpn/openvpn.log, при необходимости можно увеличить уровень логгирования с помощью опции конфига verb.

Настраиваем OpenVPN клиента

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

[root@localhost openvpn]# cd /usr/share/openvpn/easy-rsa/2.0
[root@localhost 2.0]# ./build-key client01
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/share/openvpn/easy-rsa/2.0/keys
Generating a 1024 bit RSA private key
.........++++++
..................++++++
writing new private key to 'client01.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [ME]:
State or Province Name (full name) [ME]:
Locality Name (eg, city) [MORDOR]:
Organization Name (eg, company) [DARKSIDE]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [client01]:
Name []:
Email Address [darkside@mmordor.buu]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: # Если установить пароль, он будет запрашиваться при подключении
An optional company name []:
Using configuration from /usr/share/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'ME'
stateOrProvinceName   :PRINTABLE:'ME'
localityName          :PRINTABLE:'MORDOR'
organizationName      :PRINTABLE:'DARKSIDE'
commonName            :PRINTABLE:'client01'
emailAddress          :IA5STRING:'darkside@mmordor.buu'
Certificate is to be certified until Jan 16 12:38:32 2021 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Rопируем все необходимые клиенту файлы.

[root@localhost 2.0]# mkdir /root/ovpn
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/ca.crt /root/ovpn/ca.crt
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/client01.crt /root/ovpn/client01.crt
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/client01.key /root/ovpn/client01.key
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/tls.key /root/ovpn/tls.key
[root@localhost 2.0]# cp /usr/share/openvpn/easy-rsa/2.0/keys/dh1024.pem /root/ovpn/dh1024.pem

Стандартный файл конфигурации vpn клиента можно взять все там-же, /usr/share/doc/openvpn-2.1.1/sample-config-files/client.conf.
Приводим конфиг к следующему виду:

client
remote 188.116.32.161 1194 # Адрес и порт OpenVPN сервера
proto tcp # Протокол, должен совпадать с сервером
dev tun # Устройство
# Сертификаты и ключи
ca ca.crt
dh dh2048.pem
cert admin.crt
key admin.key
tls-auth tls.key 1
cipher AES-256-CBC #Алгоритм шифрования vpn, должен совпадать с серверным
verb 3
mute 20
keepalive 10 120
comp-lzo
persist-key
persist-tun
resolv-retry infinite
nobind

Кидаем получившийся файл конфигурации в папку с ключами:

[root@localhost 2.0]# cp /usr/share/doc/openvpn-2.1.1/sample-config-files/client.conf /root/client01.conf # Для *nix клиентов
[root@localhost 2.0]# cp /usr/share/doc/openvpn-2.1.1/sample-config-files/client.conf /root/client01.ovpn # Для Windows клиентов

Для добавления программ в автозапуск, в CentOS, используется команда chkconfig. При запуске без параметров выведет возможные ключи. Добавим необходимые сервисы:

[root@localhost ~]# chkconfig --level 2345 openvpn on

Проверяем:

[root@localhost ~]# chkconfig --list

С CentOS закончили.

Клиентская часть OpenVPN, коротко

Тут все просто, со страницы ]]>официальный клиент openvpn]]> качаем клиент под нужную операционную систему, устанавливаем. У меня на рабочей машине WinXP, поэтому рассказываю на его примере. Что-бы все заработало, нужно добавить в Win виртуальное TAP устройство, сделать это можно с помощью bat файла из комплекта OpenVPN ( C:\Program Files (x86)\OpenVPN\bin\addtap.bat ).
Клиентские ключи и конфиг, которые мы копировали в папку /root/ovpn, нужно скинуть на машину-клиента и скопировать в папку C:\Program Files (x86)\OpenVPN\config\client01. Далее запускаете OpenVPN GUI, в трее появится значок, по правому клику вылезем менюшка со списком возможных соединений, там можно обнаружить и наш client01. Соединение берет имя файла конфигурации клиента, в нашем случае это client01.ovpn.

Если все было сделано правильно, после установки соединения с OpenVPN сервером, весь трафик, без каких-либо дополнительных телодвижений, пойдет через созданный шифрованный туннель, в том числе и трафик skype, icq и пр.

Где проверить свою анонимность, думаю найдете.

Комментарии

Спасибо

Очень!!! Ценная статья! Все ясно и понятно! Спасибо огромное!

Поставил на свой VPS (CentOS release 5.5, ядро 2.6.18-194)
Не хочет запускаться хоть тресни. В логах вот это:

Tue May 10 18:10:42 2011 OpenVPN 2.1.1 i386-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Jan 26 2010
Tue May 10 18:10:42 2011 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Tue May 10 18:10:42 2011 Diffie-Hellman initialized with 1024 bit key
Tue May 10 18:10:42 2011 Control Channel Authentication: using 'keys/tls.key' as a OpenVPN static key file
Tue May 10 18:10:42 2011 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue May 10 18:10:42 2011 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue May 10 18:10:42 2011 TLS-Auth MTU parms [ L:1560 D:168 EF:68 EB:0 ET:0 EL:0 ]
Tue May 10 18:10:42 2011 ROUTE default_gateway=192.0.2.1
Tue May 10 18:10:42 2011 Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
Tue May 10 18:10:42 2011 Note: Attempting fallback to kernel 2.2 TUN/TAP interface
Tue May 10 18:10:42 2011 TUN/TAP device /dev/tun0 opened
Tue May 10 18:10:42 2011 /sbin/ip link set dev tun0 up mtu 1500
SIOCSIFMTU: No such device
Tue May 10 18:10:42 2011 Linux ip link set failed: external program exited with error status: 255
Tue May 10 18:10:42 2011 Exiting

Как побороть кто-нибудь подскажет?

попробуйте руками tun0 создать, даст ?
возможно на VPSке запрещено создание туннелей

знать бы еще как создать туннель руками... Подскажите какие кнопки нажимать :)

Предлагаю вариант попроще: https://sites.google.com/site/smkuzmin/home/openvpn

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

Да незачто. А хорошо продуманные и откомментированные конфиги править недолго - счет на минуты... Тем более, что все настраивается автоматически, включая маршруты. И если сразу после установки не заработало, то можно лезть в конфиг - проверять настройки.

Все сделал, openvpn запустилась, но с клиентом проблемы. Выдает
Mon Nov 05 11:33:36 2012 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Mon Nov 05 11:33:36 2012 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables

Даже не проходит соединение с сервером. Как исправить?

"....requires --script-security 2...."
Я сильно не вникал, просто вставил этот параметр в строку запуска и всё...

А не лучше ли в centos правила iptables писать в /etc/sysconfig/iptables?

возможно, но я привел такой вариант

Здравствуйте. Статья хорошая, спасибо вам за неё. Но у меня немного другая проблема, может быть и с ней подскажите. У нас подразделение внутри организации и AD сервер выделили внутри, а почту и корпоративные порталы располагаются на внешних (арендованных) серверах. Внутренняя сеть вся закрыта, т.е. снаружи к ней не пробиться ни через какой порт и админы не хотят ничего открывать. Как мне правильно настроить OpenVPN на арендованном сервере так, чтобы при создании туннеля с W2K8 из внутренней сети, внешний нормально видел AD. Или мне это нужно делать с помощью какого-то другого туннеля.

Как добавить/изменить пароль подключения клиенту?

операционной системе CentOS

Дистрибутиве Linux.

откуда взялся?
admin.crt и admin.key

Отличная статья, получилось настроить на vps сервере рипнета.

рад что пригодилось ))

Годный мануал, спасибо!
P.S. капча супер

Опечатки в статье:
1) Вместо
[root@localhost /]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source ВНЕШНИЙ_IP
должно быть
[root@localhost /]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source ВНЕШНИЙ_IP
2) Если export KEY_SIZE=1024, то в конфигах должно быть dh1024.pem, а не dh2048.pem.
3) Как уже комментировали раньше, вместо admin.crt и admin.key дожно быть client01.
4) Вместо local 111.111.111.111 надо либо указать корректный IP, либо лучше просто не писать.

Спасибо за пост. В некоторых случаях нужно быстро поднять тунель между двома точками. И самый быстрый способ с минимальной безопасностью, это общий ключ, как пишут, к примеру здесь - http://sysadm.pp.ua/linux/shifrovanie/openvpn-point-to-point.html . Генерацию ключей через OpenSSL никто не подскажет как делать?

А у меня ругается "Bad IP address "ВНЕШНИЙ_IP" на команду iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source ВНЕШНИЙ_IP. Правда у меня Manjaro Linux, но для него я такой подробной статьи не нашел. Что можно сделать?

Для VPN подойдет хосте зомро. Цены нормальные и опыт у них есть. Вот [url=http://cp.zomro.com/mancgi/partnerprogram?partner=10353&project=4]моя ссылка[/url].

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
Регистр имеет значение
             oooooooooooo    .oooo.                                     
d'""""""d888' .dP""Y88b
.ooooo. .888P ]8P' oooo d8b oooo ooo .ooooo.
d88' `"Y8 d888' .d8P' `888""8P `88. .8' d88' `"Y8
888 .888P .dP' 888 `88..8' 888
888 .o8 d888' .P .oP .o 888 `888' 888 .o8
`Y8bod8P' .8888888888P 8888888888 d888b `8' `Y8bod8P'


Введите код, изображенный в стиле ASCII-арт.