Настройка сервера
Для начала качаем дистрибутив с официально сайта. Запускаем установщик openvpn-install-2.3.8-I001-x86_64. В компонентах включаем следующее:
Указываем путь установки (Все дальнейшие действия будут ориентироваться на данный путь указанный в примере):
В процессе установке потребуется установить виртуальный сетевой адаптер, соглашаемся с установкой.
После успешной установки переходим в каталог “C:\Programm Files\OpenVPN” где создаем директорию “SSL” (каталог может называться как угодно, в последующих настройках будет использоваться именно этот каталог), в данном каталоге будут располагаться сертификаты сервера, алгоритмы шифрования и проверка подлинности клиента.
Переходим в каталог “C:\Programm Files\OpenVPN\easy-rsa”, открываем с помощью notepad или notepad++ (более правильный вариант) "vars.bat" (скрипт, содержащий в себе параметры ответов для создания и генерации клиентских/серверных сертификатов и последующих настроек сервера).
В самом низу файла есть следующие параметры, которые нужно настроить под себя:
set KEY_COUNTRY=RU
set KEY_PROVINCE=MO
set KEY_CITY=MOSCOW
set KEY_ORG=OpenVPN
set KEY_EMAIL=local@mos.local
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=OU
set PKCS11_MODULE_PATH=changeme rem Параметр по умолчанию
set PKCS11_PIN=1234 rem Параметр по умолчанию
Сохраняем.
В этом же каталоге “C:\Programm Files\OpenVPN\easy-rsa”, есть конфигурационный файл “openssl-1.0.0.cnf”, открываем его с помощью notepad или notepad++ (более правильный вариант) и изменяем настройку, отвечающую за срок жизни сертификатов, по умолчанию 365 дней, продлим срок жизни до 3650 дней.
default_days = 3650 # how long to certify for
Сохраняем.
Далее будем генерировать следующее:
ca.crt — Собственный доверенный сертификат (Certificate Authority — далее CA) для подписи клиентских сертификатов и для их проверки при авторизации клиента.
dh1024.pem — ключ Диффи Хельмана позволяющий двум и более сторонам получить общий секретный ключ
server.crt — сертификат сервера
server.key — ключ сервера
ta.key — дополнительный ключ для tls-аутентификации (повышение безопасности соединения), сервер и каждый клиент должны иметь копию этого ключа
Открываем командную строку и переходим в каталог “C:\Program Files\OpenVPN\easy-rsa”
cd C:\Program Files\OpenVPN\easy-rsa
Вводим команду “vars” нажимаем Enter (инициируем работу со скриптами, в случае закрытия командной строки, команду “vars” придется вводить заного)
Вводим команду “clean-all” (Очищаем каталог “C:\Program Files\OpenVPN\easy-rsa\keys” c последующим созданием файла“index.txt” (база клиентов, она же database) и “serial” (ключ))
Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должны создаться файлы “index.txt и serial”.
Вводим команду “openvpn --genkey --secret %KEY_DIR%\ta.key”
Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должен создаться файл “ta.key”.
Вводим команду “build-dh” — генерация ключа Диффи Хельмана.
Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должен создаться файл “dh1024.pem”.
Вводим команду “build-ca” — генерация ключа центра сертификации (CA)
На все вопросы отвечаем по умолчанию нажатием клавиши Enter, эти параметры мы прописали в “vars.bat”
Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должны создаться файлы “ca.crt и ca.key”.
Вводим команду “build-key-server server” — генерация сертификата сервера.
На вопросы Country Name, State Name, Locality Name и т.д. отвечаем по умолчанию нажатием клавиши Enter до самого конца, эти параметры мы прописали в “vars.bat”, далее будет предложено создание сертификата сроком на 3650 дней (данный параметр мы указывали в openssl-1.0.0.cnf) нажимаем “Y”, будет предложено записать сертификат сервера в базу, нажимаем “Y”.
Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должены создаться файлы “server.crt, server.key, server.csr”.
Вводим команду “build-key revokecrt” — команда для создания пользовательского сертификата, но в данном случае мы создаем произвольный сертификат “revokecrt” для последующей генерации файла “crl.pem”, который отвечает за проверку и последующий отзыв сертификатов. Теоретически данную процедуру можно проделать в самом конце и даже жить без нее, но тогда не сможем отзывать сертификаты и конфигурационный файл “server.ovpn” будет выглядеть иначе.
На вопросы Country Name, State Name, Locality Name и т.д. отвечаем по умолчанию нажатием клавиши Enter до вопросов Common Name и Name, на эти вопросы нужно отвечать согласно названию создаваемого сертификата пользователя, в нашем случае это произвольный сертификат “revokecrt” на оставшиеся вопросы нажимаем Enter, далее будет предложено создание сертификата сроком на 3650 дней (данный параметр мы указывали в openssl-1.0.0.cnf) нажимаем “Y”, будет предложено записать сертификат сервера в базу, нажимаем “Y”.
Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должны создаться файлы “revokecrt.crt, revokecrt.key, revokecrt.csr”
Вводим команду “revoke-full revokecrt” – команда отвечает за отзыв сертификата и последующего создания файла “crl.pem”
Не закрывая командную строку, проверяем содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должен создаться файл “crl.pem”
Теперь создадим сертификат пользователя, аналогично сертификату “revokecrt” см. выше.
Вводим команду “build-key user1” – создаем сертификат пользователя с именем user1
.
На данном этапе работа с консолью закончена, можно закрыть окно и проверить содержимое каталога “ C:\Program Files\OpenVPN\easy-rsa\keys”, должны создаться файлы “user1.crt, user1.key, user1.csr”
Рекомендую создать папку “Clients” в любом удобном для Вас месте и скопировать туда необходимые файлы для передачи пользователям:
1 — ca.crt
2 — user1.crt
3 — user1.key
4 — ta.key
Также хочу обратить Ваше внимание на то, что содержимое папки “keys” удалять нельзя, при создании пользовательских сертификатов или любых изменениях в консоли, делайте копию данного каталога во избежание потерь или случайных генераций сертификатов сервера и обновления базы данных.
Копируем файлы сервера в раннее созданную папку “ssl” в каталоге “ C:\Program Files\OpenVPN\ssl”:
1 — ca.crt
2 — server.crt
3 — server.key
4 — dh1024.pem
5 — ta.key
Переходим в каталог “C:\Program Files\OpenVPN\config” и создадим файл конфигурации сервера “server.ovpn” со следующим содержимым:
# Создаем маршрутизируемый IP туннель.
dev tun
# Указываем протокол для подключения.
proto udp
# Указываем порт на котором будем слушать.
port 1194
# Указываем что это TLS сервер.
tls-server
# Указываем путь к доверенному сертификату.
ca «C:\\Program Files\\OpenVPN\\ssl\\ca.crt»
# Указываем путь к сертификату сервера.
cert «C:\\Program Files\\OpenVPN\\ssl\\Server.crt»
# Указываем путь к ключу сервера.
key «C:\\Program Files\\OpenVPN\\ssl\\Server.key»
# Указываем путь к ключю Диффи Хельмана
dh «C:\\Program Files\\OpenVPN\\ssl\\dh1024.pem»
# Указываем адресацию сети.
server 10.8.0.0 255.255.255.0
# Указываем алгоритм шифрования должен быть одинаковый клиент/сервер.
cipher AES-128-CBC
# Указываем не перечитавать файлы ключей при перезапуске туннеля.
persist-key
# Указываем путь к ключу безопасности и устанавливаем параметр сервера 0
tls-auth «C:\\Program Files\\OpenVPN\\ssl\\ta.key» 0
# Разрешаем общаться клиентам внутри тоннеля.
client-to-client
# Указываем каталог с описаниями конфигураций каждого из клиентов.
client-config-dir «C:\\Program Files\\OpenVPN\\ccd»
# Указываем файл с описанием сетей между клиентом и сервером.
ifconfig-pool-persist «C:\\Program Files\\OpenVPN\\ccd\\ipp.txt»
# Указывает сверку по отозванным сертификатам.
crl-verify «C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\crl.pem»
# Указываем путь к логу со статусом.
status «C:\\Program Files\\OpenVPN\\log\\logopenvpn-status.log»
# Указываем путь к логу.
log «C:\\Program Files\\OpenVPN\\log\\openvpn.log»
# Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер.
tun-mtu 1500
# Включаем сжатие.
comp-lzo
# Устранение проблем с передачей MTU.
mssfix
# Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд,
# если по туннелю не передавался никакой трафик.
# Указывает, если в течении 120 секунд не было получено ни одного пакета,
# то туннель будет перезапущен.
keepalive 10 120
# Указываем уровень логирования.
verb 3
Сохраняем.
На сервере где будет крутиться OpenVPN необходимо проделать следующее:
1 – Если вы используете встроенный Брандмауэр Windows, создайте разрешающее правило для входящих и исходящих подключений по протоколу UDP на порт 1194.
2 – В службах сервера найдите OpenVPN Service и установите запуск на автоматический, это позволит автоматически запускаться сервису при перезагрузке сервера.
C рабочего стола сервера запускаем “OpenVPN GUI”, в трее дважды щелкаем по значку “OpenVPN GUI” откроется окно лога, если после запуска сервиса в пункте 2 нечего не произошло, нажимаем слева внизу подключиться и если все хорошо, мы должны увидеть следующее содержимое:
Сервис VPN на сервере запущен и готов принимать клиентов.
Настройка клиента
Запускаем ранее скаченный установщик openvpn-install-2.3.8-I001-x86_64, выбор компонентов оставляем по умолчанию, путь сохраняется прежний.
После успешной установки переходим в каталог “C:\Program Files\OpenVPN\config” и создаем файл конфигурации клиента “test.ovpn” со следующим содержимым:
# Создаем маршрутизируемый IP туннель.
dev tun
# Указываем протокол для подключения.
proto udp
# Указываем IP аддрес сервера с портом.
remote X.X.X.X 1194
# Указываем задержку в секундах для построения маршрута.
route-delay 3
# Указываем чтобы клиент забирал информацию о маршрутизации с сервера.
client
# Указываем что мы являемся TLS клиентом.
tls-client
# Параметр защиты от MitM атак.
ns-cert-type server
# Указываем путь к доверенному сертификату.
ca «C:\\Program Files\\OpenVPN\\ssl\\ca.crt»
# Указываем путь к клиентскому сертификату.
cert «C:\\Program Files\\OpenVPN\\ssl\\user1.crt»
# Указываем путь к клиентскому ключу.
key «C:\\Program Files\\OpenVPN\\ssl\\user1.key»
# Указываем путь к ключу безопасности и устанавливаем параметр клиента 1
tls-auth «C:\\Program Files\\OpenVPN\\ssl\\ta.key» 1
# Указываем алгоритм шифрования должен быть одинаковый клиент/сервер.
cipher AES-128-CBC
# Включаем сжатие.
comp-lzo
# Устранение проблем с передачей MTU.
mssfix
# Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер.
tun-mtu 1500
# Указываем, сли в течении 60 секунд не было получено ни одного пакета,
# то туннель будет перезапущен.
ping-restart 60
# Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд,
# если по туннелю не передавался никакой трафик.
ping 10
# Указываем уровень логирования.
verb 3
Сохраняем.
C рабочего стола запускаем “OpenVPN GUI”, в трее дважды щелкаем по значку “OpenVPN”, откроется окно лога, нажимаем подключиться и если все хорошо, то мы увидим следующее:
Запускаем пинг на 10.8.0.1 и видим что сеть доступна (10.8.0.1 адрес, который получил виртуальный сетевой адаптер на сервере).
На сервере мы увидим лог подключения:
Собственно на этом этапе можно закончить и все в дальнейшем будет работать. Но я хотел бы еще кое-что добавить. Для уменьшения количества файлов у клиента и добавление еще одного пункта в безопасности (пароль на подключение), можно сделать следующее, на этапе создания сертификата пользователя на сервере, выполняем команду “build-key-pkcs12 user2” вместо “build-key user1”, выполняем все аналогично первой команде, до пункта Export Password, в этом пункте необходимо указать пароль, например 12345, данный пароль по факту назначается на сертификат “user2.p12”, при попытке подключения через “OpenVPN”, программа обращается к сертификату и требует пароль (зная пароль, его можно изменить, удалить и т.д).
В таком случае, комплект для пользователя будет состоять из:
1 – user2.p12
2 – ta.key
Конфигурационный файл “test.ovpn” должны быть следующего содержания:
# Создаем маршрутизируемый IP туннель.
dev tun
# Указываем протокол для подключения.
proto udp
# Указываем IP аддрес сервера с портом.
remote X.X.X.X 1194
# Указываем задержку в секундах для построения маршрута.
route-delay 3
# Указываем чтобы клиент забирал информацию о маршрутизации с сервера.
client
# Указываем что мы являемся TLS клиентом.
tls-client
# Параметр защиты от MitM атак.
ns-cert-type server
# Указываем путь к сертификату.
pkcs12 «C:\\Program Files\\OpenVPN\\ssl\\user2.p12»
# Указываем путь к ключу безопасности и устанавливаем параметр клиента 1
tls-auth «C:\\Program Files\\OpenVPN\\ssl\\ta.key» 1
# Указываем алгоритм шифрования должен быть одинаковый клиент/сервер.
cipher AES-128-CBC
# Включаем сжатие.
comp-lzo
# Устранение проблем с передачей MTU.
mssfix
# Указывает MTU для туннеля, должны быть одинаковые параметры клиент/сервер.
tun-mtu 1500
# Указываем, сли в течении 60 секунд не было получено ни одного пакета,
# то туннель будет перезапущен.
ping-restart 60
# Указывает отсылать ping на удаленный конец тунеля после указанных n-секунд,
# если по туннелю не передавался никакой трафик.
ping 10
# Указываем уровень логирования.
verb 3
Сохраняем.
Пробуем подключиться, вводим пароль 12345
Если все хорошо видим следующее:
Ну и на последок, как отозвать сертификат пользователя и вообще посмотреть список выданных сертификатов. Сам список храниться по следующему пути “C:\Program Files\OpenVPN\easy-rsa\keys\index.txt”
Для того чтобы отозвать сертификат, заходим в командную строку. Переходим в каталог “C:\Programm Files\OpenVPN\easy-rsa”:
cd C:\Program Files\OpenVPN\easy-rsa
Вводим команду “vars” нажимаем Enter (инициируем работу со скриптами). Вводим команду для отзыва сертификата пользователя “revoke-full user2” (указываем название заведенного раннее пользователя).
После заходим в “index.txt” “C:\Program Files\OpenVPN\easy-rsa\keys\index.txt” и видим, что сертификат отозван “R”.
Не готов сказать на 100%, но судя по описанию, файл “index.txt” проверяется каждый час, соответственно через час, сертификат будет заблокирован, ну или просто достаточно перезапустить сервис на сервере.
Еще рекомендую использовать отдельную учетную запись для службы “OpenVPN Service” и в случае если пользователи будут работать с этим сервером, где развернут VPN, обязательно уберите права у простых пользователей на каталог “C:\Program Files\OpenVPN”.
Всем спасибо, надеюсь, данная статься поможет многим, кто сталкивается с вопросами и не находил подходящих ответов, разжевал как мог.
Комментарии ()
Lopar Автор
17.12.2015 17:50-4Ребята, это же копипаста статьи www.pvsm.ru/openvpn/106518 — даже те же самые орфографические ошибки.
Время публикации там: 2015-12-17 в 13:03
Время публикации тут: 2015-12-17 в 16:03
ZeroToon
17.12.2015 17:55Посмотрите кто автор статьи, а потом уже поднимайте панику.
Lopar Автор
17.12.2015 17:57Я смотрю дату публикации. Главное правило Хабра (одно из):
Хабрахабр — не место для копипастеров. Размещение полностью скопированного контента с других сайтов запрещено — даже при использовании гиперссылки на источник. Мы за авторские материалы.
Lopar Автор
17.12.2015 17:56-2На сайте моментально появилась приписка «источник — Хабрахабр». Если сейчас и время публикации изменится — будет праздник. :)
ZeroToon
17.12.2015 18:06+1Мое мнение, что модераторы публикаций, занимаются и дополнительными сайтами, поэтому не исключаю, что статья там могла появиться раньше, но самое главное что указали источник.
Lopar Автор
17.12.2015 18:11-1То есть вы сейчас прямым текстом обвинили модераторов Хабрахабра в плагиате и использовании модераторских полномочий, чтобы украсть у вас статью до её публикации на первоисточнике? Серьёзно?
ZeroToon
17.12.2015 18:19+2Обвинять я никого не собираюсь, мне все равно где будет размещена данная статья, но другого объяснения у меня нет.
А вы смотрю провокатор, что же Вас так задело, долго пытались пробиться на хабр? никто не принимал Ваши статьи? с 30 апреля 2014 года кроме одной статьи в Вашей репутации нет, поэтому разговор считаю завершенным…Lopar Автор
17.12.2015 18:23Как вы быстро скатились с «покажите конкретный копи паст, удалю статью» до «вы все представители сексуальных меньшинств, а я — дворянин из Гаскони».
4mz
17.12.2015 18:52Чего вы накинулись на человека, нормальная хаутушка, может пригодится даже когда-то. Не скатывайтесь в копирастию, подумайте лучше о том, что кому-то статья, может быть, поможет (в конце концов Хабр для того и существует), а то что попрали ваше чувство справедливости, чтож… станете модератором Хабра — отыграетесь))
Lopar Автор
17.12.2015 19:06+1Автор нарушил 4 правила из 11. Полезность тоже очень сомнительна. Сделайте поиск по тэгу. Найдёте массу интересного. Одно только это руководство сводит на нет «полезность» таких вот поделок. А когда автору указывают на его огрехи, а он такой: «СПЕРВА ДОБЕЙСЯ!!!», или там: «почему критикуешь? слабо просто похвалить?» — это вызывает как минимум недоумение…
4mz
17.12.2015 19:23+2Ну чего вы, в самом деле, взъелись. «Руководство по установке и настройке OpenVPN» у меня тоже есть в закладках, но оно на целую книгу тянет, чтоб прочитать его нужно достаточно много времени вдумчивого чтения. Тут же все по быстрому и с «мурзилкой», я не говорю что статья уникальна, но, определенно, если кто-то ищет достаточно свежий и простой мануал, то статья придется «в тему». Пускай будет, не вредничайте)
P.S. Если бы модератор узрел нарушение, я думаю, статьи бы тут небыло.Lopar Автор
17.12.2015 20:19+1И правда, чего это я?
Я спрашиваю: что значат галочки.
Какой ответ? «Это оптимально для всех».
Я спрашиваю: что значат переменные?
Какой ответ? «Может быть ради вас статья будет переписана».
Я спрашиваю: почему в командной строке выскакивают WARNING? Это нормально? Я про это окно, тащемта, которое прямо в статье подаётся — три предупреждения подряд, шутка ли:
Какой ответ? «хочу вас огорчить или обрадовать, выбирайте сами, дальнейший разговор считаю нецелесообразным».
Естественно я негодую.
Vindicar
17.12.2015 18:27+5Мануал почти ничем не отличается от десятка таких же для предыдущих версий Windows.
Говорите про Windows Server, но даже не упомянули про то, что OpenVPN можно запускать как службу, без GUI. А это зачастую удобно как на клиенте — чем меньше пользователь видит отвлекающих иконок, тем сложнее что-то сломать — так и на сервере — проще настроить запуск служб с зависимостями. Например, веб сервер который отдает контент строго внутрь VPN и ломается если интерфейс не поднят.
Клиентские ключи проще закинуть внутрь соответствующего файла .ovpn с помощью XML-подобного синтаксиса — распространять клиентские конфиги одним файлом несколько проще.
EDIT: ну хоть про права на каталог упомянули, и то хлеб.Lopar Автор
17.12.2015 18:31Клиентские ключи проще закинуть внутрь соответствующего файла .ovpn с помощью XML-подобного синтаксиса — распространять клиентские конфиги одним файлом несколько проще.
Не знал. А это сработает, если ключи запаролены?Vindicar
17.12.2015 18:54Запароленные не пробовал, но должно по идее. Там ведь просто содержимое файла ключа целиком вставляется, то есть вместо
key user1.key
будет<key>...содержимое файла ключа...</key>
ZeroToon
17.12.2015 18:33-2Да что же такое, еще раз акцентирую внимание на то, что в этой статье все расписано от и до и по возможности расписаны все действия и команды. В инструкции указано про службы на сервере.
Вместо того чтобы написать хорошая статья, все доступно и понятно, тут начинаю разводить срач.
ValdikSS
17.12.2015 19:14+1OpenVPN можно запускать как службу, без GUI
Все еще сломано, пожалуйста, не используйте это. А если нужен именно сервис, то надо накрутить NSSM.Vindicar
17.12.2015 20:27Да? У меня работает. Можно чуть подробнее?
ValdikSS
18.12.2015 03:19Ну он еще сносно работает в 7, но в 8, 8.1 и 10 уже не очень, то зависает сервис при разрыве соединения, то просто падает. Ребята сейчас выкидывают его, 2.3.9, вышедший 2 дня назад, поддерживает NSSM полностью. Скоро будет новый сервис, насколько я знаю, с которым будет нормально работать GUI и не требовать прав администратора.
bougakov
17.12.2015 18:44Зачем на Windows поднимать OpenVPN со всеми его родовыми травмами, если там «из коробки» есть ванильный IPSec IKEv2? Притом даже серверная лицензия не нужна
gotch
17.12.2015 19:13А какие у него родовые травмы?
ValdikSS
17.12.2015 19:18+1Все еще не слишком быстро и не слишком хорошо работает под Windows, к сожалению. Windows-разработчиков в проекте всего два-три. Вот прямо сейчас сижу, отлаживаю проблемы со скоростью под Windows: всегда думал, что все более-менее нормально под Windows, а сейчас запустил и удивился — получаю в лучшем случае в 2 раза ниже скорость, чем под Linux с той же конфигурацией, а по умолчанию вообще в 4-5 раз ниже была.
ValdikSS
17.12.2015 19:21+1Для генерирования ключей лучше использовать Easy-RSA v3, а не v2. v2 вам подпишет ключи SHA-1, а v2 уже SHA-256. Да и DH-группу лучше использовать длиной 2048-бит и выше, а не 1024.
srs2k
Инвайт в обмен на копипаст мануала. Okay…
ZeroToon
Ну если вы мне покажите конкретный копи паст, удалю статью.
За основу были взяты разные мануалы, но ни в одном мануале нет полноценного описания команд от и до, а по этому мануалу сможет настроить даже ребенок, так как тут все грамотно разжевано и по порядку описано, а не там где статья состоит из 20 строк и где написано введите это, введите то и должно все работать…
srs2k
Вот в этом-то и печаль — читать на хабре статьи, рассчитанные на детей.
ZeroToon
Не совсем так, если человек ни разу этого не делал, ему будет приятно читать данный мануал и не искать дополнительных ответов на вопросы.
Lopar Автор
Кстати о дополнительных вопросах. Заголовок толсто обещает, что всё будет разжёвано. А потом в первых предложениях: запускаем инсталлятор, не задаём никаких вопросов и ставим галочки точно как указано на скриншоте. Дальше по тексту: находим vars и настраиваем под себя, не задаём никаких вопросов, ведь что это за переменные и что они обозначают «даже ребёнок разберётся».
Ну и про всякие мелочи вроде WARNING на скриншотах и говорить нечего…
ZeroToon
Ну если вы хотите углубляться в переменные…
Я может быть специально для Вас перепишу статью :)
Мелочи вроде WARNING, ну если вы говорите о WARNING в командной строке, то хочу вас огорчить или обрадовать, выбирайте сами.
Содержимое скрипта универсально как для Windows так и для NIX систем, вообщем дальнейший разговор считаю нецелесообразным.
Lopar Автор
Да вы далеко пойдёте с таким отношением. :)
Это не «я хочу придраться и углубиться в переменные», это вы пишете прямым текстом:
LinGG
ты сначала за «копипасту» ответь
srs2k
Звучит как вызов.
Признаю что был не совсем прав. Топик — не просто копипаста, а компиляция из пары-тройки мануалов, коих в интернете просто навалом.
При этом никаких действительно полезных вещей в статье нет — например, в чём отличие tun и tap интерфейсов (это же статья для новичков, не так ли?) и в каких ситуациях какой лучше использовать, не упомянут момент про запуск клиентской оболочки от имени Администратора (а под простым пользователем могут быть проблемы с директивой «push route ...» — у пользователя нет прав на изменение таблицы маршрутизации.)
В общем, если захотеть, можно придраться ко всему, что я и попытался показать. Однако моё мнение — статья «ни о чём». Копипаста.