sonyps4.ru

Linux mint vpn объединение офисов. Настраиваем VPN соединение в Linux

Казалось бы — про VPN не говори, про него все сказано. В сети выложено огромное количество настроек и HOW-TO на любой вкус. Скрупулезный анализ показал, что основные проблемы новичков возникают на этапах аутентификации клиента и VPN-сервера, а также настройки роутинга. На них мы остановимся подробно. Попутно выяснилось что настройки VPN-соединения можно сильно упростить и тем самым облегчить понимание ключевых параметров.

Именно для облегчения понимания мы рекомендуем всем новичкам настраивать VPN из командной строки и не пользоваться (полу)автоматическими конфигураторами VPN — как показывает практика, от их непрозрачных настроек одни неприятности. Как вы увидите ниже, этих настроек очень небольшое количество, так что незачем вставать на костыли, чтобы бежать стометровку. К тому же командная строка вам сослужит добрую службу, когда пойдет что-то не так. Вы всегда можете запостить свои конфиги и вывод консольных команд, и суровые бородатые дядьки, которые давно на «ты» с линуксом, вам помогут. Потому что вы говорите с ними на одном языке. И наоборот, что-нибудь вроде «в этом окошке я отмечаю галочкой второй снизу пункт» практически гарантирует отсутствие обратной связи.

Настраивать VPN-соединение мы будем по шагам. В конце каждого шага — шаг проверки. Все команды в командной строке вводятся от имени суперпользователя (root). Готовы? Тогда вперед!

Что нам нужно для работы

Для поднятия и настройки VPN-соединения нам потребуются всего две программы — ppp и pptp . Программа ppp с вероятностью 99% уже стоит в вашем дистрибутиве, пакет, содержащий pptp , в разных дистрибутивах называется по-разному, в основном pptp-linux . После установки в системе должны присутствовать два исполняемых файла/usr/sbin/pppd и /usr/sbin/pptp . Вкратце — pptp создает туннель к VPN-серверу, через который ppp соединяется и работает как обычное модемное соединение.

Естественно, для поднятия соединения нам необходима рабочая локальная сеть и данные провайдера об IP (или имени) VPN-сервера, VPN-логине и VPN-пароле. Также пригодится информация об используемом протоколе аутентификации и о наличии шифрования траффика. Если ее нет — ничего страшного. Подавляющее большинство провайдеров используют протокол аутентификации MS-CHAP v2, а о наличии шифрования нам подскажут логи ошибок pppd . Подсказка: если у вас стоит MS Windows и там поднято VPN-соединение, его параметры можно посмотреть на вкладке соединения «Сведения». Нас интересуют параметры «Проверка подлинности» и «Шифрование».

Все манипуляции мы будем проводить на имеющейся под рукой домашней сети Корбина телеком. Итак, провайдер снабдил нас следующей информацией:
Локальная сеть:

IP: 10.167.17.38
Маска подсети: 255.255.0.0.
Шлюз (gateway): 10.167.0.17
DNS1: 195.14.50.1
DNS2: 195.14.50.21

VPN параметры:

Имя VPN-сервера: vpn.corbina.net
Логин: VPN_LOGIN
Пароль: VPN_PASSWORD

Проверка работоспособности локальной сети

Если сеть уже настроена, мы должны увидеть примерно следующее

# ifconfig eth0




RX packets:2884 errors:0 dropped:0 overruns:0 frame:0
TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:243742 (238.0 Kb) TX bytes:2242 (2.1 Kb)
Interrupt:19

# ip a sh dev eth0
3: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:13:D4:68:B2:3E brd ff:ff:ff:ff:ff:ff
inet 10.167.17.38/16 brd 10.167.255.255 scope global eth0
<# route -n
Kernel IP routing table


0.0.0.0 10.167.0.17 0.0.0.0 UG 0 0 0 eth0

# ip r
10.167.0.0/16 dev eth0 proto kernel scope link src 10.167.17.38
default via 10.167.0.17 dev eth0 scope link

Если ничего подобного не выводится,поднимаем сеть и указываем в качестве шлюза по умолчанию наш шлюз

Ifconfig eth0 10.167.17.38 netmask 255.255.0.0 up

Ip a a 10.167.17.18/16 dev eth0
ip l s up dev eth0
ip r a default via 10.167.0.17

Прописываем IP DNS-серверов в файл /etc/resolv.conf Он должен выглядень следующим образом:

# cat /etc/resolv.conf
nameserver 195.14.50.1
nameserver 195.14.50.21

Если сеть работоспособна, должны пинговаться шлюз и VPN-сервер. Проверяем

# ping -c5 10.167.0.17
PING 10.167.0.17 (10.167.0.17) 56(84) bytes of data.
64 bytes from 10.167.0.17: icmp_seq=1 ttl=255 time=3.95 ms
64 bytes from 10.167.0.17: icmp_seq=2 ttl=255 time=0.526 ms
64 bytes from 10.167.0.17: icmp_seq=3 ttl=255 time=0.528 ms
64 bytes from 10.167.0.17: icmp_seq=4 ttl=255 time=3.31 ms
64 bytes from 10.167.0.17: icmp_seq=5 ttl=255 time=0.534 ms
# ping -c5 vpn.someserver.net

64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=1 ttl=248 time=1.17 ms
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=2 ttl=248 time=1.16 ms
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=3 ttl=248 time=1.19 ms
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=4 ttl=248 time=1.17 ms
64 bytes from vpn8-l0.msk.corbina.net (195.14.38.8): icmp_seq=5 ttl=248 time=1.00 ms

Предварительная настройка роутинга

Примечание: Предварительная настройка роутинга необходима в том случае, когда VPN и/или DNS-сервера находятся в других подсетях. Если это не так (да вы счастливчик!) — смело пропускайте этот шаг.

Для начала узнаем IP нашего VPN-сервера с помощью команды ping .

# ping -c5 vpn.corbina.net
PING vpn.corbina.net (195.14.38.8) 56(84) bytes of data.

Как видно из команды ping, IP VPN сервера 195.14.38.8

Примечание: Чтобы не копаться в частностях, мы допускаем в данном примере, что vpn.corbina.net имеет только один IP. Ситуацию, когда хост vpn.corbina.net имеет не один а несколько IP адресов (на самом деле их 20) мы рассмотрим в шаге «Автоматизация».

Добавляем в нашу таблицу роутинга статические маршруты на VPN и DNS сервера:

Route add -host 195.14.50.1 gw 10.167.0.17
route add -host 195.14.50.21 gw 10.167.0.17
route add -host 195.14.38.8 gw 10.167.0.17

Ip r a 195.14.50.1 via 10.167.0.17
ip r a 195.14.50.21 via 10.167.0.17
ip r a 195.14.38.8 via 10.167.0.17

Удаляем маршрут по умолчанию

Таблица маршрутизации будет выглядеть так:

# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
195.14.50.21 10.167.0.17 255.255.255.255 UGH 0 0 0 eth0
195.14.50.1 10.167.0.17 255.255.255.255 UGH 0 0 0 eth0
195.14.38.8 10.167.0.17 255.255.255.255 UGH 0 0 0 eth0
10.167.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0

# ip r
195.14.50.21 via 10.167.0.17 dev eth0
195.14.50.1 via 10.167.0.17 dev eth0
195.14.38.8 via 10.167.0.17 dev eth0
10.167.0.0/16 dev eth0 proto kernel skope link src 10.167.17.38

Проверка: мы должны успешно пинговать DNS и VPN сервера.

# ping -c5 195.14.50.1
PING 195.14.50.1 (195.14.50.1) 56(84) bytes of data.
64 bytes from 195.14.50.1: icmp_seq=1 ttl=56 time=4.45 ms
64 bytes from 195.14.50.1: icmp_seq=2 ttl=56 time=1.30 ms
64 bytes from 195.14.50.1: icmp_seq=3 ttl=56 time=1.22 ms
# ping -c5 195.14.50.21
PING 195.14.50.21 (195.14.50.21) 56(84) bytes of data.
64 bytes from 195.14.50.21: icmp_seq=1 ttl=56 time=0.982 ms
64 bytes from 195.14.50.21: icmp_seq=2 ttl=56 time=0.954 ms
64 bytes from 195.14.50.21: icmp_seq=3 ttl=56 time=1.02 ms
# ping -c5 195.14.38.8
PING 195.14.38.8 (195.14.38.8) 56(84) bytes of data.
64 bytes from 195.14.38.8: icmp_seq=1 ttl=248 time=1.34 ms
64 bytes from 195.14.38.8: icmp_seq=2 ttl=248 time=2.60 ms
64 bytes from 195.14.38.8: icmp_seq=3 ttl=248 time=1.09 ms

Настройка параметров VPN-соединения. Тестовый запуск

Все параметры нашего VPN соединения мы запишем в файле /etc/ppp/peers/corbina . Создадим его и наполним следующим содержанием:

Pty "pptp 195.14.38.8 --nolaunchpppd"
user VPN_LOGIN
password "VPN_PASSWORD"
nodeflate
nobsdcomp
noauth

Параметры user и password в комментариях не нуждаются, значение остальных можно посмотреть в файле справки man pppd . Обратим внимание на то, что пароль забран в кавычки.

Убеждаемя, что в файлах /etc/ppp/options , ~/.ppprc , /etc/ppp/options.ppp0 нет незакомментированных параметров, которыми бы система могла затереть наши настройки. Если есть — комментируем

Поднимаем VPN соединение

Pppd call corbina debug nodetach

Появятся логи соединения. Если все прошло успешно, они будут выглядеть примерно так:

# pppd call corbina debug nodetach
using channel 2
Using interface ppp0
Connect: ppp0 <--> /dev/pts/0
sent
rcvd
sent
sent
rcvd
sent
rcvd
sent
rcvd
rcvd

CHAP authentication succeeded
sent
rcvd
sent
rcvd
sent
rcvd
sent
rcvd
Cannot determine ethernet address for proxy ARP
local IP address 89.178.77.182
remote IP address 195.14.38.8
Script /etc/ppp/ip-up started (pid 4072)
Script /etc/ppp/ip-up finished (pid 4072), status = 0x0

На соседнем терминале убедимся, что VPN-соединение установлено. Должен появиться сетевой интерфейс ppp0 :

# ifconfig
eth0 Link encap:Ethernet HWaddr 00:13:D4:68:B2:3E
inet addr:10.167.17.38 Bcast:10.167.255.255 Mask:255.255.0.0
inet6 addr: fe80::213:d4ff:fe68:b23e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24990 errors:0 dropped:0 overruns:0 frame:0
TX packets:97 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2327027 (2.2 Mb) TX bytes:8516 (8.3 Kb)
Interrupt:19

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:13496 errors:0 dropped:0 overruns:0 frame:0
TX packets:13496 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1387313 (1.3 Mb) TX bytes:1387313 (1.3 Mb)

ppp0 Link encap:Point-to-Point Protocol
inet addr:89.178.77.182 P-t-P:195.14.38.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:40 (40.0 b) TX bytes:46 (46.0 b)

Если VPN сервер использует шифрование, соединение закончится ошибкой [ЗДЕСЬ ДОЛЖНЫ БЫТЬ ЛОГИ ОШИБКИ]. В этом случае добавим в файл /etc/ppp/peers/corbina строчку

и загрузим соответствующий модуль ядра командой

Запускаем снова. Все должно заработать.

Обратите внимание на параметр MTU интерфейса ppp0 . По умолчанию он равен 1500. Если ваш провайдер использует другую величину MTU (допустим, 1492) — в тот же файл конфигурации etc/ppp/peers/corbina добавляем строчку

Окончательная настройка роутинга

Итак, мы подняли VPN соединение, но в интернет выйти не можем — машина пока не знает, где искать интернет-хосты. Для этого мы должны добавить маршрут по умолчанию через интерфейс ppp0 в нашу таблицу маршрутизации (помните — старый маршрут по умолчанию мы удалили). В качестве шлюза по умолчанию теперь выступает remote IP address, который нам любезно предоставил VPN сервер — 195.14.38.8 (да-да, в нашем случае он совпадает с IP VPN сервера!). Этот remote IP address присутствует как в логах pppd (remote IP address 195.14.38.8), так и в параметрах интерфейса ppp0 , которые выводятся на экран командой ifconfig (P-t-P:195.14.38.8). Вводим:

Route add default gw 195.14.38.8

Route add default dev ppp0

что в данном контексте — одно и то же Теперь попробуем пропинговать какой-нибудь интернет-хост

# ping -c5 www.ya.ru
PING ya.ru (213.180.204.8) 56(84) bytes of data.
64 bytes from ya.ru (213.180.204.8): icmp_seq=1 ttl=61 time=2.11 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=2 ttl=61 time=2.23 ms
64 bytes from ya.ru (213.180.204.8): icmp_seq=3 ttl=61 time=2.39 ms

Работает!

Автоматизация

Теперь, когда соединение оттестировано, можно подумать и об автоматизации. Когда pppd устанавливает соединение, он автоматически выполняет скрипт /etc/ppp/ip-up , когда соединение рвется — выполняется скрипт /etc/ppp/ip-down . Значит, в эти файлы и надо забить весь роутинг, который в предыдущих пунктах мы вводили руками.

Мы не случайно сначала рассмотрели идеальный вариант, когда VPN сервер провайдера представлен в единственном числе и имеет один IP. В этом случае именем хоста (vpn.corbina.net ) можно пренебречь и использовать в настройках только его IP, что мы и сделали. Однако если провайдер большой, под именем VPN сервера скрывается несколько серверов с разными IP, что позволяет провайдеру динамически регулировать нагрузку на них. Для того, чтобы выяснить, какие IP имеет хост vpn.corbina.net , воспользуемся командой host из пакета dnsutils

# host vpn.corbina.net
vpn.corbina.net has address 195.14.38.19
vpn.corbina.net has address 195.14.38.20
vpn.corbina.net has address 195.14.38.1
vpn.corbina.net has address 195.14.38.2
vpn.corbina.net has address 195.14.38.3
vpn.corbina.net has address 195.14.38.4
vpn.corbina.net has address 195.14.38.5
vpn.corbina.net has address 195.14.38.6
vpn.corbina.net has address 195.14.38.7
vpn.corbina.net has address 195.14.38.8
vpn.corbina.net has address 195.14.38.9
vpn.corbina.net has address 195.14.38.10
vpn.corbina.net has address 195.14.38.11
vpn.corbina.net has address 195.14.38.12
vpn.corbina.net has address 195.14.38.13
vpn.corbina.net has address 195.14.38.14
vpn.corbina.net has address 195.14.38.15
vpn.corbina.net has address 195.14.38.16
vpn.corbina.net has address 195.14.38.17
vpn.corbina.net has address 195.14.38.18

Роутинг на всю эту прорву серверов нам нужно один раз внести в файл /etc/ppp/ip-up и привести файл к следующему виду:

#!/bin/sh
#
# This script is run by pppd when there"s a successful ppp connection.
#
route add -host 195.14.38.1 gw 10.167.0.17
route add -host 195.14.38.2 gw 10.167.0.17
route add -host 195.14.38.3 gw 10.167.0.17
....
route add -host 195.14.38.19 gw 10.167.0.17
route add -host 195.14.38.20 gw 10.167.0.17
route del default

а в скрипт /etc/ppp/ip-down мы запишем всего одну строчку, которая вернет нам шлюз по умолчанию после обрыва соединения:

#!/bin/sh
#
# This script is run by pppd after the connection has ended.
#
route add default gw 10.167.0.17

Вы, наверное, уже заметили, что мы не вписали в файл /etc/ppp/ip-up строчку route add default dev ppp0 . Это не нужно — после успешного коннекта pppd сам впишет шлюз по умолчанию, если мы дадим ему команду defaultroute . В результате наш файл настроек /etc/ppp/peers/corbina будет выглядеть следующим образом:

Pty "pptp vpn.corbina.net --nolaunchpppd"
user VPN_LOGIN
password "VPN_PASSWORD"
nodeflate
nobsdcomp
noauth
defaultroute

Pon corbina
poff corbina

Если есть необходимость запускать соединение от простого пользователя, установите программу sudo и в файл /etc/sudoers впишите:

Sergo myhost = NOPASSWD: /usr/bin/pon, /usr/bin/poff

Соответственно, замените sergo и myhost на имя вашего пользователя и его машины. Он сможет запускать и прерывать соединение командами

Sudo pon corbina
sudo poff corbina

На этом настройка подключения завершена.
Источник

Предположим, вы не доверяете VPN-сервисам, либо вас не устраивают высокие тарифы, либо хотите иметь полный контроль над сервером, с возможностью подключать сколько угодно клиентом и использовать любые протоколы. Для вас и предназначен данный раздел! Здесь мы рассмотрим процесс настройки VPN-сервера на Linux, на машине с Debian 7 64bit на борту и OpenVPN, в качестве реализации.

Процесс настройки VPN вручную состоит из нескольких этапов:

  1. Организация сертификационного центра
  2. Настройка VPN-сервера, выдача сертификата
  3. Настройка VPN клиента/ов, выдача сертификататов

Прежде всего стоит сказать, две вещи:

  1. Мы выбрали наиболее простой метод настройки - не идеальный, в плане безопасности, но чуть более универсальный и быстрый в развертывании. В любом случае, в конце данного руководства вы получите защищенную VPN-сеть, которую, при легком “допиливании напильником” можно подстроить под любые потребности и к которой легко подключать новых клиентов (ведь для большинства пользователей, это приоритет).
  2. Всё же, отдавая предпочтение самостоятельной настройке, вы теряете в географической гибкости - быстро менять IP не получится (хотя, при наличии нескольких серверов, клиент легко может между ними переключаться).

Разворачиваем сертификационный центр

Настройка VPN начинается с построения (Public Key Infrastructure) на основе x.509 сертификатов и открытых ключей - это программный комплекс, включающий в себя сам СА со списком отзыва сертификатов и софт для генерации ключей. Выдавать сертификаты можно несколькими способами:

  1. Безопасный метод Создается PKI и сертификационный центр, аналогичный софт ставится на машины клиентов. Чтобы получить сертификат, клиент должен сформировать запрос и закрытый ключ - запрос передается СА - СА подписывает его или отклоняет - подписанный сертификат передается клиенту. Передача происходит вручную, или по защищенным каналам.
  2. Сертификационный центр самостоятельно генерирует закрытый ключ и сертификат, или оные вместе в зашифрованном пакете PKCS12 - пакет передается на машину клиента — клиент может подключаться к VPN.

Мы говорили об этом выше, но повторим - сертификаты и ключи нужны для ограничения круга лиц, имеющих доступ к серверу; передавать закрытые ключи по сети крайне нежелательно (по крайней мере, в незашифрованном виде), открытый ключ распространяется свободно и математически связан с закрытым - он служит для расшифровки данных, зашифрованных закрытым ключом. А сертификаты объединяют в себе функции открытого ключа и подтверждают, что такой-то ключ принадлежит такому-то хосту, действует столько-то, и с этим ключом можно получить доступ к серверу. Проще говоря, x.509 сертификат - это улучшенный открытый ключ из философии ассиметричного шифрования.

Для настройки OpenVPN потребуется пакет openvpn - он лежит в репозиториях большинства Linux-систем.

# apt-get update

# apt-get install openvpn

После установки, по пути “/usr/share/doc/openvpn/examples/” должна появиться директива /easy-rsa/2.0. Если её нет - дополнительно установите пакет easy-rsa:

# apt-get install easy-rsa

И тогда нужная папка появится по пути “/ush/share/easy-rsa”

Настройку СА не стоит производить из под root [в идеале - это вообще должна быть отдельная машина, не подключенная к сети], но так как в нашем случае СА и VPN-сервер - одна и та же машина, то будем работать под root. В противном случае, лучше создать для СА отдельного пользователя без рутовых прав.

# useradd - s /bin/bash -m ca

# passwd ca

Дабы избежать удаления всех конфигов при очередном обновлении, перенесем утилиту easy-rsa в директиву конфигов openvpn:

# sudo cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn

# sudo cp -R /usr/share/easy-rsa/ /etc/openvpn

И перейдем в директорию easyrsa:

# cd /etc/openvpn/easy-rsa/2.0

В данной директории лежат скрипты для генерации сертификатов и формирования запросов на сертификаты, примеры конфига openssl, и главное - подробный файл README, объясняющий, как это всё работает. Распакуйте его утилитой gzip:

# gzip -d README.gz

И, желательно, изучите.

Файл vars - своеобразный шаблон, на основании которого заполняются поля сертификатов - его мы и отредактируем в первую очередь. Нас интересуют лишь следующие строки:

# Битовая длина алгоритма шифрования, которым шифруется закрытый ключ. Если вы параноик - измените значение на 2048 - это замедлит взлом, но и скорость VPN-соединения слегка упадет.

export KEY_SIZE=1024

# Срок годности в днях по умолчанию, для корневого сертификата сертификационного центра.

export CA_EXPIRE=3650

# Срок годности по умолчанию для всех сертификатов.

export KEY_EXPIRE=3650

# Информация о владельце сертификата. Ни на что, особо, не влияет, если вы разворачиваете сеть VPN для себя.

export KEY_COUNTRY="RU" #Код страны владельца

export KEY_PROVINCE="RU" #Код области владельца

export KEY_CITY="Moscow" #Город

export KEY_ORG="cs-companion" #Организация

export KEY_EMAIL=" Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. " #контактный email

export KEY_EMAIL= Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. #контактный email 2

Сохраним, применим изменения и очистим папку.keys скриптом./clean-all:

source ./vars

source ./clean-all

(Важно: если после изменений файл vars не запускается - сделайте его исполняемым: “chmod +x ./vars”)

Шаблон готов - можно создавать корневой сертификат СА, и на его основе создавать сертификаты остальных пользователей. Для генерации корневого сертификата выполним:

# ./build-ca

Во время генерации вам предложат самостоятельно заполнить поля, хотя можно просто жать Enter - тогда они заполнятся на основании шаблона.

Итак, после генерации в папке./keys появилось два ключа:

  • ca.crt - открытый
  • ca.key - закрытый.

Наверняка вам будет интересно, как же выглядит этот сертификат изнутри - как-то так:

Или на человеческом:

Посмотреть содержимое сертификата в виде текста можно средствами openssl, вот такой командой:

# openssl x509 -in [путь/к/сертификату] -noout -text

В сгенерированный нами сертификат входит:

  1. Версия
  2. Уникальный серийный номер
  3. Информация о держателе (организация, имя, контакты).
  4. Сроки начала и конца действия сертификата
  5. Информация о использумых алгоритмах.
  6. Открытый ключ
  7. Цифровая подпись сертификата

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

Немного теории.

Файл ca.key должен лежать только на машине самого сертификационного центра, а вот открытый - напротив, должен передаваться на каждую машину, которая собирается сделать запрос на сертификат и затем получить доступ к VPN-серверу.

Попробуем объяснить, как это работает:

У СА есть свой сертификат и закрытый ключ. С помощью закрытого ключа трафик шифруется, с помощью открытого - расшифровывается - это значит, что у VPN-сервера должен быть:

  1. свой открытый и закрытый ключ
  2. открытый ключ СА
  3. открытые ключи всех клиентов,

У СА должен быть:

  1. свой закрытый и открытый ключ,
  2. открытый ключ сервера и всех клиентов.

А у всех клиентов, которые будут взаимодействовать с сервером:

  1. свои закрытые и открытые ключи
  2. открытый ключ сервера и СА

Но всё это - в идеале, то есть в случае, если сертификаты выдаются по запросу. Мы же используем протокол PKCS12, значительно упрощающий развертывание OpenVPN сети — пакеты с сертификатами мы будем генерировать самостоятельно, а клиенту нужно только прописать путь к нему в конфигах, и IP-адрес сервера.

Сертификационный центр готов, теперь сгенерируем сертификат для самого сервера:

# ./build-key-server [имя-сертификата-сервера]

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

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

./build-dh

Итак, вернемся в папку./keys, и что мы видим:

  1. dh1024.pem - Файл Диффи-Хеллмана
  2. ca.crt - открытый ключ (сертификат) СА
  3. ca.key - закрытый ключ СА
  4. vpnserver.key - закрытый ключ сервера
  5. vpnserver.crt - сертификат сервера.

Все они, кроме закрытого ключа СА, должны быть перемещены в главную директорию VPN-сервера - /etc/openvpn.

Если вы дошли до этого этапа - значит наш СА работает как часы. Следующим шагом будет настройка самого VPN-сервера и клиентов, а пока подробнее остановимся на том, как генерировать и удалять сертификаты.

Работа с CRL и выдача сертификатов.

Как генерировать сертификаты:

build-key [имя] - сгенерировать пару закрытый/открытый сертификат.

build-key-pass [имя] - аналогично, но сертификат защищен паролем, который спрашивается каждый раз при использовании.

build-key-pkcs12 - сгенерировать сертификаты в виде pkcs12-пакета.

Что же такое этот pkcs12-пакет? Цитируя руководство openssl - “Some would argue that the PKCS#12 standard is one big bug:-)” - и, тем не менее, это наиболее удобный способ распространения сертификатов. Как уже говорилось - это своеобразный пакет, зашифрованный на стороне сервера, и включающий в себя связку сертификатов - открытый СА; закрытый и открытый клиента. Поступая к клиенту, софт OpenVPN посылает с ним запрос на VPN-сервер, а сервер, если такой пакет был сгененерирован подходящим центром сертификации, распознает его и пускает клиента в свою сеть. С p12 пакетами вы получаете дополнительный слой шифрования пакетов и больше нет необходимости пересылать каждый сертификат отдельно.

Сгенерируем такой пакет для нашего клиента:

# ./build-key-pkcs12 lain.iwakura.Vorona

Во время генерации вы должны ввести пароли [пароль закрытого ключа и пароль экспорта], последний из которых будет спрашиваться при каждом подключении, а также заполнить данные сертификата. После этого - можно передавать пакет на машину клиента - отправим пакет lain.iwakura.Vorona.p12 на машину клиента под Arch Linux, через scp.

# scp ./keys/lain.iwakura.Vorona.p12 user@ip:/home/

Позже, при настройке клиента, он нам понадобится.

Как отзывать сертификаты

Выполните “./list-crl” - результатом выполнения будет создание списка отзыва сертификатов - CRL. CRL необходим для того, чтобы администратор СА смог в любой момент запретить какому-либо хосту доступ к серверу со своим сертифкатом.

Отозвать сертификат предельно просто - командой:

./revoke-full [имя]

К примеру, сгенерируем pkcs12 сертификат iwakuralain и тут же отзовем:

./revoke-full iwakuralain

Посмотреть список отозванных сертификатов можно командой:

./list-crl

А самой базой данных отозванных сертификатов является файл crl.pem из папки keys. После отзыва очередного сертификата необходимо скопировать его в папку /etc/openvpn VPN-сервера и перезагрузить, для обновления базы данных:

# /etc/init.d/openvpn restart

Настройка с помощью Network Manager"а

Как бы там ни было, но все таки опиши настройку впн с помощью network-manager"а. Эта настройка вполне подойдет тем, у кого в подключении к сети используется автоматическое получение IP адреса с помощью DHCP.

1. Устанавливаем два необходимых нам пакета:
#apt-get install pptp-linux network-manager-pptp
Так как этих пакетов по умолчанию нет на диске с убунтой, а впн часто приходится настраивать на машине, у которой больше нет другого выхода в интернет, то советую заранее припастись этими пакетами с официального репозитория. Для этого заходим на сайт packages.ubuntu.com/ , там ищем два эти пакета, закачиваем их и в дальнейшем устанавливаем на нужной нам машине.
2. Если в аплете Network Manager не появился пункт «VPN соединения»(VPN Connections) или он не будет открываться, то надо перелогиниться или даже лучше - перезагрузиться.
3. Нажимаем левой клавишей мыши (по правой кнопке вызывается другое меню) по значку Network Manager"а и в выпавшем меню выбираем «VPN соединения» - «Настройка VPN»(Configure VPN). Добавляем новое соединение и выставляем все нужные опции для этого соединения.
4. После этого, ваше соединение должно появиться в меню «VPN соединения», если оно вдруг не появилось - перелогиньтесь или перезагрузитесь (ну что я могу поделать, на столько, все еще, сырой этот network-manager).
5. Все теперь можете подключаться к созданному вами впн соединению (а также и отключаться, выбрав пункт меню в Network Manager"е).

#apt-get install pptp-linux

Как я уже описывал выше в разделе установки с помощью network-manager"а, впн часто приходится настраивать на машине, у которой больше нет другого выхода в интернет, поэтому советую заранее припастись этим пакетом с официального репозитория packages.ubuntu.com/.

2. Редактируем файл options.pptp:
#nano /etc/ppp/options.pptp


lock noauth nobsdcomp nodeflate persist

Не буду описывать каждый из параметров, опишу лишь некоторые:
persist - этот парметр пытается по новой открыть соединение, когда оно закрывается;
nodeflate - не использовать deflate сжатие (хотя говорят с ним работает быстрее, не знаю - не проверял).
Также, если у вас в соединении используется шифрование, то добавляем одну из строк, в зависимости от типа шифрования - require-mschap-v2, require-mppe-40, require-mppe-128, require-mppe.

3. Создаем файл подключения /etc/ppp/peers/vpn (название vpn можете заменить на любое другое, но если замените, не забывайте менять его дальше в этой статье)

#nano /etc/ppp/peers/vpn

Вставляем туда следующие строки:
maxfail 0 lcp-echo-interval 60 lcp-echo-failure 4 defaultroute pty "pptp vpn.ava.net.ua --nolaunchpppd" name sukochev remotename PPTP +chap file /etc/ppp/options.pptp ipparam vpn

Внимание!!! Обязательно замените следующие опции на ваши:
Вместо vpn.ava.net.ua впишите адрес вашего впн сервера (можно использовать IP сервера). Вместо sukochev вставляете ваш логин подключения.
Опишу некоторые параметры:
maxfail 0 - всегда пытаться подключиться при отсутствии связи;
lcp-echo-interval - интервал времени, по прошествии которого, происходит опрос удаленной стороны;
lcp-echo-failure - количество не отвеченных запросов удаленной стороны, после чего система считает, что нас отключили;
defaultroute - устанавливаем маршрут по умолчанию;
+chap - тип аутентификации. Помимо +chap может использоваться тип +pap.
file - читать дополнительные настройки из заданного файла.
Также можно добавить, если нужно, следующие параметры:
deflate 15,15 - использовать deflate сжатие (в файле options.pptp не должно быть параметра nodeflate);
mtu - максимальный размер передаваемого пакета (изменяют этот параметр обычно тогда, когда часто отключается соединение или не открываются некоторые сайты);
mru - максимальный размер получаемого пакета.

4. Редактируем файл /etc/ppp/chap-secrets (если используется тип аутентификации PAP, то /etc/ppp/pap-secrets соответственно)

#nano /etc/ppp/chap-secrets

Вставляем туда строку, типа:

Sukochev PPTP password *

Внимание!!! Замените sukochev на свой логин, а password на ваш пароль для подключения.
5. Если это необходимо, то прописываем в файл /etc/network/interfaces нужные роуты. Например у меня роуты прописаны для того, чтобы при включенном впн-подключении я мог пользоваться местной локальной сетью. Вот пример моих роутов (те что начинаются на up route), у вас они естественно будут отличаться:

Auto eth1 iface eth1 inet dhcp up route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.1.45.1 dev eth1 up route add -net 10.3.0.0 netmask 255.255.0.0 gw 10.1.45.1 dev eth1

Не забываем после изменения файла /etc/network/interfaces перезапустить сетевые подключения:

#/etc/init.d/networking restart

6. Теперь можете включать и выключать впн подключение с помощью следующих команд:
Включение

Выключение

Автоматическое подключение VPN при загрузке системы

Для этого редактируем файл /etc/network/interfaces
#nano /etc/network/interfaces

И вставляем в конец фйла следующие строки:
auto ppp0 iface ppp0 inet ppp provider vpn pre-up ip link set eth1 up up route del default up route add default dev ppp0

Где eth1 - это интерфейс сетевого устройства, через которое подключается впн-соединение, а vpn - название впн-соединения, которое вы создали в папке /etc/ppp/peers/.

Не является эталоном безопасности и плохо дружит с фаерволами, но является одним из самых простых способов построения изолированной локальной сети и установки защищённого соединения с ней. При том, что протокол PPTP достаточно дырявый, чтоб не использовать его в корпоративных сетях и там, где нужна гарантия конфиденциальности, он вполне приемлем для построения частных сетей для обмена информацией, либо выхода в Интернет через такие сети. В любом случае, уязвимость протокола не останавливает многих интернет-провайдеров от подключения своих клиентов именно через PPTP.

При определённых настройках между клиентом и сервером устанавливается прямое шифрованное соединение в стандартной, незащищённой сети. Таким образом данный тип соединения может быть использован для выхода в Интернет из публичных Wi-Fi сетей и интернет-кафе.

И так, для начала нам нужен сервер. Для VPN сетей с небольшой нагрузкой виртуального сервера (VPS) более чем достаточно. Проблема в том, что порог вхождения на рынок интернет-услуг, мягко говоря не высок. Соответственно качество этих услуг часто оставляет желать лучшего. В любом случае, перед покупкой необходимо уточнит разрешены ли у хост-провайдера VPN сети вообще и включены ли на их VPS NAT и TUN/TAP .

На правах рекламы я рекомендую провайдера . Я пользуюсь их услугами с момента открытия ими второго дата-центра в Нью-Йорке (почти 2 года) и за это время нареканий к их работе у меня не возникло. За почти десять лет я сменила множество провайдеров и мне есть с чем сравнить. То есть это действительно современный сервис «для людей». В случае с DigitalOcean, поддержка VPN включается в один клик клиентом при создании VPS. После регистрации и внесения минимального месячного платежа клиент сам выбирает конфигурацию своего VPS (Droplet, в терминологии DigitalOcean), которая варьируется от 512 MB RAM и 20 GB дискового пространства, до тех мощностей, которые клиенту по карману. Система виртуализации - KVM , накопители - SSD диски. Деньги со счёта клиента списываются ежедневно из расчёта почасовой оплаты. Клиент в любое время может пересоздать, изменить или уничтожить свой Droplet, а так же создать новый. Они гордятся своими 55-ю секундами и по факту, действительно, между нажатием кнопки «создать» и получением письма с IP-адресом и паролем для root-доступа проходит не больше минуты. DigitalOcean так же продают услуги в Амстердаме, что для европейских и восточноевропейских клиентов, возможно, более предпочтительно из-за расстояния и пинга между сервером и аудиторией этого сервера. В любом случае, при создании VPS нужно поставить галку напротив «Private Networking», чтоб включить в конфигурацию NAT и TUN/TAP.

Я настоятельно не рекомендую без острой необходимости использовать 32-х битные дистрибутивы современных операционных систем в виду устаревшей архитектуры и того, что сами разработчики уделяют им гораздо меньшее внимание, по сравнению с 64-х битными. Таким образом в природе существует 32-х битная серверная версия Ubuntu 14.04, но на официальном сайте Ubuntu она не представлена там, где предлагается загрузка образа этой ОС.

И так, после того как с сервером мы определились, то приступаем к установке. В моём случае это VPS с 1024 RAM и 64-х битной Ubuntu 14.04 в качестве ОС.

Aptitude install pptpd

Разрешаем IP-forwarding. Для этого редактируем файл /etc/sysctl.conf и в нём либо расскоментируем, либо добавляем следующую строку, если таковая отсутствует:

Net.ipv4.ip_forward = 1

Для принятия изменений в терминале командуем:

Правим файл /etc/pptpd.conf и приводим его к следующему виду:

Option /etc/ppp/pptpd-options logwtmp localip 10.30.1.1 remoteip 10.30.1.30-40,10.30.1.15

Где localip - IP виртуального сетевого интерфейса ppp0. Не нужно прописывать сюда внешний IP сервера, или IP других сетевых интерфейсов сервера.
Remoteip - диапазон клиентских адресов в количестве десяти (от 10.30.1.30 и до 10.30.1.40), а так же (через запятую) выделенные адреса (если таковые необходимы). В моём случае выделенный адрес один. Вы можете указать здесь любое приемлемое значение.
Например:

Localip 10.10.1.1 remoteip 10.10.1.100-200,10.10.1.25,10.10.1.26

В таком случае динамичные адреса, раздаваемые клиентам присутствуют в количестве ста штук и два адреса зарезервированы.

User1 pptpd password "*" user2 pptpd password "10.30.1.15"

В файле у нас два пользователя user1 и user2, password - пароли пользователей, звёздочка в кавычках говорит о том, что user1 получит свободный IP из указанного в /etc/pptpd.conf диапозона, а за user2 закреплён выделенный адрес. Соблюдение синтаксиса обязательно.

Редактируем файл /etc/ppp/pptpd-options
name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 require-mppe-128 ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp nodefaultroute lock nobsdcomp novj novjccomp nologfd noipx mtu 1400 mru 1400

Где ms-dns - DNS сети. Указаны публичные адреса Google, но можно выставить свои, если таковые имеются. MTU и MRU по умолчанию установлены в значение 1500. Если удалить эти две строки, то будет использоваться значение по умолчанию. В моём случае при значениях по умолчанию наблюдается большая потеря пакетов. То есть к этим строкам подход индивидуальный. Всё зависит от настроек клиентской стороны и от скорости соединения в целом.

Перезагружаем pptp сервер

Service pptpd restart

Проверяем.

Netstat -alpn | grep:1723

Если получаем нечто похожее на то, что на скриншоте, то всё работает как надо.

Создаём правила NAT для iptables

Iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

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

Iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT iptables --append FORWARD --in-interface eth0 -j ACCEPT

Сохраняем

Iptables-save

Если вы используете стороннюю программу для настроек фаервола, то перед тем как вносить через неё изменения, следует убедиться, что принятые только что правила отображаются в этой программе. Я использую панель управления Webmin и фаервол обычно настраиваю через неё. Соответственно там отображаются лишь те правила, которые были внесены через неё. Если добавить правило и применить, то изменения, принятые через терминал в процессе настройки PPTP сервера перезапишутся. Чтоб этого не произошло, в Webmin, в настройках фаервола нужно вернуть текущую конфигурацию iptables. Убеждаемся, что принятые изменения присутствуют в списке правил и только тогда жмём «сохранить».

На этом всё. Ниже два скриншота с настройками подключения на стороне клиента (Windows и Linux).

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

Поскольку PPTP не является примером безотказности ввиду своих сложных отношений с фаерволом, то можно слегка ускорить Сеть, завернув трафик через прокси сервер. То есть клиенты локальной сети будут выходить из неё в Интернет через прокси сервер. Как установить и настроить Squid я . Ниже конфигурация Squid 3.3 для Ubuntu 14.04, позволяющая клиентам локальной сети выходить в Интернет.

Http_port 8085 icp_port 0 cache_mem 256 MB memory_replacement_policy lru maximum_object_size_in_memory 512 KB cache_swap_low 90 cache_swap_high 95 access_log /var/log/squid3/access.log squid logfile_rotate 12 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 dns_nameservers 8.8.8.8 8.8.4.4 positive_dns_ttl 6 hours negative_dns_ttl 1 minutes #auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwords #auth_param basic children 5 #auth_param basic realm Please provide your username and password. #auth_param basic credentialsttl 24 hour #acl ncsa_users proxy_auth REQUIRED acl localnet src 10.0.0.0/8 # RFC 1918 possible internal network acl localnet src 172.16.0.0/12 # RFC 1918 possible internal network acl localnet src 192.168.0.0/16 # RFC 1918 possible internal network acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 # https acl SSL_ports port 22 # ssh acl All_ports port 1-65535 # unregistered ports acl CONNECT method CONNECT http_access allow localnet #http_access allow ncsa_users http_access allow All_ports http_access allow CONNECT SSL_ports http_access deny all coredump_dir /var/spool/squid3 request_header_access Cache-Control deny all

В данной конфигурации Squid будет обслуживать клиентов локальной сети без пароля, из внешних сетей доступ к нему будет закрыт. Если раскомментировать закомментированые строки конфигурации, то клиенты локальной сети по прежнему смогут обращаться к нему без пароля, но так же будет возможен доступ из вне, но уже с паролями, указанными в файле «passwords».

Для клиентов локальной сети адрес прокси должен быть локальным. Смотрите скриншот выше с выводом команды «ifconfig». У меня на сервере два физических сетевых интерфейса: eth0, который смотрит в Интернет и eth1 - интерфейс, смотрящий в локальную сеть. Таким образом в моём случае адрес прокси будет 10.128.9.55. Для клиентов из внешних сетей в качестве адреса должен служить внешний IP сервера.

Таким образом PPTP нет необходимости пробрасывать трафик от клиента во внешнюю сеть через фаервол. Этим будет заниматься Squid.

На этом всё. Наша сеть работает.

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

Но когда в Ubuntu, Fedora, OpenSUSE или других дистрибутивах Linux доходит дело до VPN, у пользователей могут возникнуть проблемы. Для разработчиков важнее пользователи Windows, а Linux до сих пор еще не в приоритете. В этой статье мы рассмотрим лучшие VPN для Linux, которые вам обязательно будут полезными. В списке будут как платные так и бесплатные сервисы.

Обычно, для подключения VPN в Linux используются такие технологии, как OpenVPN, OpenConnect или NetworkManager. Но будет намного лучше, если VPN провайдер выпускает свой клиент для Linux. Его намного проще настроить, и здесь есть намного больше функций. Большинство VPN в этом списке имеют свой клиент для операционной системы Linux.

1. PIA - Private Internet Access

Провайдер Private Internet Access - это один из лучших и самых распространенных VPN на сегодняшний день. Он доступный, позволяет подключить сразу несколько устройств, предлагает приемлемую скорость работы сети, а также полностью безопасен. В том числе, это один из самых популярных VPN сервисов для Linux. Это вполне заслужено. Здесь используется OpenVPN с шифрованием с помощью 256 битного AES ключа. У сервиса есть свой клиент как для Debian, так и для Red Hat систем. Но учитывая все преимущества сервиса, стоит он не дешево - 3,33 $ в месяц.

2. ExpressVPN

Компания ExpressVPN выпустила свой официальный клиент для Linux совсем недавно, в апреле 2016. К сожалению, графического интерфейса пока нет и программа работает только из командной строки. Но это все еще намного проще чем настройка отдельных конфигурационных файлов.

Список серверов всегда будет в актуальном состоянии, а пользователи могут переключиться между протоколами UDP и TCP при работе по OpenVPN. Самым большим недостатком этого VPN для Linux есть цена. Сервис стоит вдвое больше чем PIA. В течение 30 дней сервис возвращает деньги, так что вы можете попробовать VPN бесплатно. Но у серверов более внушительные характеристики, а скорость сети намного больше.

ExpressVPN работает на Ubuntu, Fedora, Debian и CentOS. Одновременно вы можете подключить до трех устройств, а также теперь вы можете работать с netflix.

3. AirVPN

AirVPN предлагает официальные клиенты для дистрибутивов Linux - Debian, Ubuntu, OpenSUSE и Fedora. Вы можете использовать его как из командной строки, так и через графический интерфейс. Здесь больше всего настроек безопасности. Вы можете подключиться с помощью OpenVPN, SSH или SSL, а также пересылать трафик через ряд альтернативных портов. Этот сервис тоже платный, цена как и у PIA.

4. Buffered

Это новый VPN сервис, основанный в Венгрии. Вы можете подключить одновременно три устройства, а трафик неограничен. Сервис дорогой, но есть гарантия возврата денег в течение 30-ти дней. Интересной вещью есть то, что клиент может искать открытые порты на защищенных серверах. Это отличная возможность обойти страницы входа в систему, которые часто встречаются в гостиницах и аэропортах. Серверы находятся в 16-ти странах, но скорость работы очень быстрая. Клиент работает в большинстве дистрибутивов Linux.

5. Mullvad

Сервис Mullvad пошел еще дальше и предлагает клиент с открытым исходным кодом для Debian и Ubuntu. Поддерживаются такие функции, как отключение интернета, защита от утечки DNS, маршрутизация ipv6. Сервис ведет журналы, но не логи соединений, поэтому в плане безопасности он надежный. Одновременно можно использовать три соединения. Также доступно перенаправление портов. Выбор сервера ограничен, но это допустимо. На официальном сайте есть пакеты для Debian и Ubuntu, но программа будет работать в большинстве дистрибутивов. Дальше рассмотрим лучшие бесплатные VPN 2016.

6. Itshidden

Это уже бесплатный VPN Linux. Все сервисы, что мы рассматривали выше - платные, но они более надежны. Ни один из них не ведет логов подключений, а это значит, что к вашей информации никто не сможет получить доступ: ни злоумышленники, ни правоохранительные органы. В бесплатных сервисах все намного по-другому. Многие из них ведут логи, а также используют небезопасные протоколы связи.

Например, этот VPN сервис использует протокол PPTP, так что она не совсем безопасна, но если аналогов нет, то использовать можно. Политика конфиденциальности заявляет, что никакие логи посещений не ведутся, так что к вашим данным по-прежнему не могут получить доступ, по крайней мере, со стороны сервера VPN.

7. SecurityKISS

Это еще один лучший бесплатный VPS для Linux, у которого есть официальный клиент для этой операционной системы. Поддерживаются различные протоколы работы в том числе SSH, FTP, RDP, Telnet и так далее. Но как и у других бесплатных VPS здесь есть несколько минусов. Компания хранит журналы и IP адреса пользователей, а это не желательно для тех, кто хочет защитить свою конфиденциальность. Также в бесплатной версии количество доступного трафика ограничено 300 мегабайт в сутки, а это очень мало.

Выводы

Даже если провайдер VPN не предоставляет официального клиента для Linux, почти все они могут быть настроены с помощью OpenVPN. В этой статье мы рассмотрели лучшие VPN для Linux, причем как бесплатные, так и платные, поэтому вы сможете выбрать то что вам нужно. Бесплатные VPN для Linux имеют свои ограничения, но в некоторых ситуациях с этим можно мириться. А вы используете VPN для работы в сети? Какие бесплатные сервисы могли бы посоветовать другим пользователям? Напишите в комментариях!

На завершение небольшая лекция, о том, что такое VPN и как работает эта технология:



Загрузка...