Установка VPN с Tinc на Ubuntu 16.04 LTS

 

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

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

Tinc является одним из таких решений (1,2). Демон VPN открытым исходным кодом, Теперь он доступен для широкого спектра платформ, и имеет ряд преимуществ перед аналогичными VPN-клиентов. Он предлагает безопасное и надежное шифрование, опционального сжатия, и легко расширяемая, по мере развития сети. Автоматическое полной сетки маршрутизации означает, что трафик VPN всегда (по возможности) направлены непосредственно на компьютер назначения, без прохождения промежуточной передачи, и это значительно повышает безопасность, ограничивая возможность кражи данных (3). В дополнение, потому что Tinc VPN появляется в IP сети уровня код как нормальный сетевое устройство, После настройки Tinc VPN нет необходимости для адаптации существующего программного обеспечения. Это делает Tinc VPN изначально масштабируемой.

Только незначительные проблемы с Tinc является, что некоторые люди нашли его немного сложно настроить. Если это звучит, как вы, никогда не страх – сегодня я возьму вас через (более или менее) беспроблемный путь получения Tinc VPN и на ваших серверах.

Предпосылки

Чтобы полностью выполнить этот учебник, Вам понадобится по крайней мере три Ubuntu 16.04 серверы, и доступ с правами root на каждой машине. Если вы не имеете это или не уверены, что это значит, Этот учебник предназначен не для вас-вы должны сначала проверить как настроить сервер с помощью Ubuntu (4).

Если вы создаете систему сервера с нуля, Сначала вам нужно думать о том, как ваши машины общаться друг с другом. В этом руководстве, Я собираюсь использовать имена переменных, которые я думаю, большинство людей предпочтут, но имейте в виду, что, возможно, потребуется адаптировать некоторые из имен переменных, чтобы удовлетворить свои собственные установки.

Если вы хотите точно следовать этот учебник, Вы собираетесь сначала нужно настроить два виртуальных частных серверов в одном центре данных, и затем сделать третий VPS на второй центр обработки данных. Мои данные центры называются NYC2, который имеет два виртуальных частных серверов, и AMS2, который имеет третий. Эти VPS, называются следующие:

externalnyc – все наши VPN узлы собираются подключиться к этому серверу, Это означает, что он должен оставаться на связи и для обеспечения сетевых функций должным образом. Если вы в конечном итоге хотите добавить дополнительные серверы в набор, они должны будут создаваться в так же, как externalnyc.

internalnyc – это VPS подключается к узлу VPN externalnyc, с помощью интерфейса частной сети.

ams1 – это наш общественный VPN-подключения. Он подключается к externalnyc, используя публичный Интернет.

Цель

Чего мы хотим добиться заключается в следующем:

Наша частная сеть представлена зеленая линия, и соединяет всех трех серверов. Оранжевый — наша частная сеть, объединения двух серверов NYC2. Все три сервера могут подключаться через VPN, Хотя частная сеть не доступна для AMS1.

Для этого, выполните следующие действия:

Установить Tinc

Первый вверх, нам нужно установить Tinc. Как никогда, Убедитесь, что все ваши репозитории apt в актуальном состоянии, запустив:

sudo apt получить обновление

Затем установите Tinc стандартным способом через apt:

sudo apt получить установку tinc

И вот оно! Ваш компьютер теперь будет скачать Tinc, плюс любые предпосылки необходимо. Теперь нам нужно посмотреть на конфигурацию.

Конфигурация

Настройка Tinc может быть немного отличается от других VPN, вы привыкли. Она использует «сетевое_имя» отличать один VPN от другого, Это становится очень полезным, когда у вас есть несколько VPN через Tinc, но это немного нелогичным сначала. Так как это наша первая сеть Tinc, Давайте держать ее простой и позвоните нашим VPN «сетевое_имя».

Теперь для каждого из наших серверов. Каждый потребуется три конфигурации компонентов:

Файлы конфигурации: tinc.conf, tinc вверх, tinc вниз, и необязательное количество других файлов.

Государственные и частные пары ключей: они предназначены для шифрования и проверки подлинности.

Файлы конфигурации: они содержат открытые ключи, и другие элементы конфигурации VPN.

Давайте теперь настроить каждый из наших серверов в свою очередь. Первый вверх, externalnyc.

Настройка externalnyc

Хорошо, Теперь для гайки и болты. На externalnyc, Начните с создания структуры каталогов конфигурации VPN сетевое_имя. Выполните:

sudo mkdir -p /etc/tinc/netname/hosts

Теперь откройте tinc.conf в вашем выбранном текстовом редакторе:

sudo vi /etc/tinc/netname/tinc.conf

Если у вас есть файл перед вами, Добавьте следующее в конец файла:

Name = externalnyc
AddressFamily = ipv4
Interface = tun0

Все, что вы делаете здесь необходимо настроить узел под названием externalnyc, и говорит серверу, что сетевой интерфейс будет использовать ipv4 и называться «tun0». Сохраните файл, и закрыть его.

Следующий шаг, нам нужно создать файл конфигурации узла для externalnyc. Для этого, Откройте файл конфигурации хостов в текстовом редакторе:

sudo vi /etc/tinc/netname/hosts/externalnyc

Снова, Добавьте несколько строк в нижней части этого файла, Подставляя публичный IP-адрес вашего VPS в первой строке:

Address = externalnyc_public_IP
Subnet = 10.0.0.1/32

Это файл, который другие серверы будут использовать для подключения к externalnyc. Адрес говорит другие узлы, как и где можно подключаться к этому серверу, и подсети адрес подсети, в которой будет работать этот демон. Снова, Сохраните изменения в этот файл и закрыть его.

Теперь нам нужно создать общественности / частные пару ключей для этого узла. Это достаточно легко, просто запустите:

sudo tincd сетевое_имя - n-K4096

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

Теперь, нам нужно сделать tinc вверх, небольшой скрипт, который будет выполняться при запуске нашего VPN. Откройте файл для редактирования:

sudo vi /etc/tinc/netname/tinc-up

И добавить:

#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 Маска 255.255.255.0

Всякий раз, когда запускается VPN сетевое_имя, Этот сценарий будет выполняться. Он будет делать сетевой интерфейс для использования с нашим VPN, и на этот VPN externalnyc будет иметь IP 10.0.0.1.

Но когда VPN остановлена, Мы хотим, чтобы этот сетевой интерфейс, чтобы исчезнуть, Поэтому нам нужны еще один скрипт. Это должен быть добавлен к tinc вниз. Открыт:

sudo vi /etc/tinc/netname/tinc-down

И затем добавьте:

#!/bin/sh
ifconfig $INTERFACE down

И снова сохранить и выйти. Теперь у нас есть наши скрипты, но для того чтобы работать они должны быть помечены как исполняемый. Это достаточно легко, с помощью командной строки:

sudo chmod 755 /и т.д. / tinc/сетевое_имя/tinc-*

Сохранить и выйти, и вы сделали Настройка данного сервера. Следующий шаг, internalnyc и ams1.

Настройка internalnyc и ams1

Чтобы настроить два оставшихся серверов, Вам нужно выполнить те же команды на каждом компьютере. Есть несколько незначительных вариаций, что я буду указывать, но этот процесс является в основном то же самое.

Как мы это делали с externalnyc выше, нам сначала нужно сделать структуру каталогов для наших файлов конфигурации. На каждом сервере, выполните следующее, и откройте файл конфигурации Tinc для редактирования:

sudo mkdir -p /etc/tinc/netname/hosts
sudo vi /etc/tinc/netname/tinc.conf

Затем добавьте несколько строк в нижней части этого файла, Подставляя «node_name» с именем каждого узла:

Name = node_name
AddressFamily = ipv4
Interface = tun0
ConnectTo = externalnyc

Вы можете видеть, что теперь оба наших серверов настроены для попытки подключения к externalnyc. Сохраните этот файл, и закрыть его.

Теперь нам нужно сделать хосты файла конфигурации. Выполните:

sudo vi /etc/tinc/netname/hosts/node_name

Затем для internalnyc, Добавьте эту строку:

Подсети = 10.0.0.2/32

И для ams1, Добавьте эту строку:

Подсети = 10.0.0.3/32

Единственная разница здесь — что адреса отличаются, так что мы можем сказать, наши серверы друг от друга. Сохраните этот файл, и закрыть его.

Теперь, как и прежде, нам нужно создать нашей общественности / собственной пары ключей, и создать сетевой интерфейс запуска сценария. На каждом сервере, выполните:

sudo tincd сетевое_имя - n-K4096

И потом:

sudo vi /etc/tinc/netname/tinc-up

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

ifconfig $INTERFACE 10.0.0.2 Маска 255.255.255.0

И для ams1:

ifconfig $INTERFACE 10.0.0.3 Маска 255.255.255.0

Но, Если заданы различные адреса выше, также изменить их здесь. Сохраните эти файлы, и выйти. Мы находимся почти там.

Нам просто нужно сделать скрипт остановки сетевого интерфейса, как и прежде:

sudo vi /etc/tinc/netname/tinc-down

А затем добавить эту строку на обоих серверах:

ifconfig $INTERFACE вниз

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

sudo chmod 755 /и т.д. / tinc/сетевое_имя/tinc-*

Сохранить и выйти. Тьфу. Если все прошло хорошо, все три сервера настроены. Теперь для реализации криптографии.

Распространение ключей

Если вы уже используете систему управления конфигурации, Вы находитесь в удаче. В идеальном мире, Каждый узел, который мы сделали необходимо иметь возможность напрямую общаться с другой узел с помощью общественности / Частный интерфейс ключа. Ключи, как мы видели выше, в настоящее время в файлах конфигурации узлов для каждого сервера. В простой сети мы делаем здесь, фактически только externalnyc необходимо обмениваться ключами с другими узлами.

И так, самый простой способ это сделать-это просто копировать каждый открытый ключ всем членам различных узлов. Это на самом деле довольно легко, просто будьте осторожны изменить значение «адрес» в файле конфигурации externalnyc в его собственный частный IP-адрес при копировании. Сюда, соединение будет установлено по частной сети.

Если вы после меня и называется VPN «сетевое_имя», файлы конфигурации хостов здесь: /etc/tinc/netname/hosts

Обмен ключами между externalnyc и internalnyc

Это просто. На internalnyc, найти хосты файл конфигурации и скопируйте его в externalnyc:

SCP /etc/tinc/netname/hosts/internalnyc [Электронная почта защищена]_private_IP: / tmp

Затем, на externalnyc, Скопируйте этот же файл в нужное место:

CD /etc/tinc/netname/hosts; sudo cp/tmp/internalnyc .

Теперь мы делаем противоположных процедуры. На externalnyc, Скопируйте файл конфигурации хостов файл internalnyc:

SCP /etc/tinc/netname/hosts/externalnyc [Электронная почта защищена]_private_IP: / tmp

И затем на internalnyc скопировать файл, так что в нужном месте:

CD /etc/tinc/netname/hosts; sudo cp/tmp/externalnyc .

Теперь нам нужно отредактировать файл конфигурации хостов в externalnyc на internalnyc так что адрес является правильным. Это так, что узлы будут подключаться к VPN через частную сеть. Так, на internalnyc, Откройте файл конфигурации хостов для externalnyc:

sudo vi /etc/tinc/netname/hosts/externalnyc

И измените значение адреса externalnyc в частный IP-адрес, Типа того:

Адрес = externalnyc_private_IP

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

Обмен ключами между externalnyc и ams1

Этот процесс очень похож. С помощью ams1, Скопируйте файл конфигурации хостов файл externalnyc:

SCP /etc/tinc/netname/hosts/ams1 [Электронная почта защищена]_public_IP: / tmp

И потом снова скопируйте его в нужное место, с помощью externalnyc:

CD /etc/tinc/netname/hosts; sudo cp/tmp/ams1 .

Оставаясь на externalnyc, Скопируйте файл другим способом, через к ams1:

SCP /etc/tinc/netname/hosts/externalnyc [Электронная почта защищена]_public_IP: / tmp

И еще раз, на ams1, Скопируйте этот файл, так что в нужном месте:

CD /etc/tinc/netname/hosts; sudo cp/tmp/externalnyc .

И вы сделали с обмена ключами. В теории, Теперь у вас есть рабочий, зашифрованных VPN через Tinc. Если вы выполнили этот учебник на письмо, Вы можете переходить к тестирования набор вверх. Если, Однако, Вы взяли также возможность добавления дополнительных узлов, Теперь это хорошее время для обмена всех ключей, которые вам понадобятся.

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

Тестирование

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

Чтобы начать Tinc в режиме отладки, на каждом узле, начиная с externalnyc, выполните:

sudo tincd - n сетевое_имя -D-d3

Если вы назвали вашего VPN, что-то другое, Конечно, Измените переменную «сетевое_имя» на соответствующее имя.

После того, как демон запускается на каждом узле, Он должен возвращать вывода, давая вам имя каждого узла, как они подключаются. Если этого не произойдет, Вы сделали ошибку где-то.

Теперь, Мы можем проверить VPN. В новом окне на ams1, Настольный internalnyc, используя его IP-адрес. Мы выделили это 10.0.0.2 ранее, Поэтому введите:

пинг 10.0.0.2

Надеюсь, будет работать ваш пинг. Вы также увидите некоторые выходные данные отладки в других окнах, Описание соединения вы только что сделали. Ams1 теперь подключен, через ваш новый VPN, для externalnyc, и может подключаться к internalnyc через него. Хит CTRL-C и пинг остановит.

Теперь у вас есть безопасное VPN-подключения, Вы можете использовать его для любой другой тип сетевого взаимодействия – подключения приложения, копирование файлов, SSH, или что-нибудь еще вы хотели.

Если ваш пинг не работает, но вы думаете, что вы все сделали правильно,, это может быть, что брандмауэр попал в пути. Проверьте настройки брандмауэра, и попробуйте еще раз.

Где Загрузитесь

Только одна последняя вещь. Если вы теперь собираетесь использовать Tinc VPN для всех ваших сетей, Вы можете установить его для запуска при загрузке. Вам нужно будет сделать это на каждом узле, путем редактирования файла конфигурации nets.boot. Откройте файл с помощью:

Судо VI /etc/tinc/nets.boot

А затем добавьте имя вашего нового VPN к этому файлу. Если вы выбрали «сетевое_имя», как я, это будет выглядеть следующим образом:

# Этот файл содержит все имена сетей запускаться при старте системы.
сетевое_имя

Сохранить и выйти, и вы сделали. Tinc теперь работает, и запуск при загрузке. Молодцы вас.

Если вам нужно контролировать Tinc, Теперь вы можете запустить команду «сервис», чтобы сделать это. На каждом узле, просто запустите:

sudo службы tinc начало

И играть вокруг. Самые основные управления может быть достигнуто посредством этой команды.

Заключение

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

Если вы хотите добавить дополнительные узлы в будущем, или совместить Tinc, с другими VPN, Tinc позволит вам сделать это. Процесс для каждого дополнительного узла такой же, как я описал выше, и вы должны иметь возможность легко увидеть, какие переменные и адреса нужны изменения. Просто помните, что если вы хотите, чтобы узлы, чтобы иметь возможность подключаться друг к другу напрямую, Вам нужно будет поменять ключи между ними непосредственно. Типа того, Tinc действует как сетки VPN, которая является немного более безопасным, чем мой подход (3). В противном случае, Вы можете просто установить вашу сеть, как я сделал, и все, что происходит через центральный узел.

В любом случае, Теперь вы можете играть вокруг. Удачи!

Ресурсы

(1) https://www.tinc-vpn.org/

(2) https://www.linux.com/news/creating-vpn-tinc

(3) https://thebestvpn.com/cryptography/

(4) https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04

Источник