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

 

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

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

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

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

Предпосылки

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

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

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

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

internalnyc - Это VPS подключается к externalnyc узла VPN с использованием интерфейса частной сети.

AMS1 - Это наше общее подключение VPN. Он подключается к externalnyc с помощью открытого интернет.

Цель

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

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

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

установить

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

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

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

Sudo APT-получить установку I

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

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

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

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

Файлы конфигурации: tinc.conf, мой план, I-вниз, и опциональный ряд других файлов.

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

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

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

Настройка externalnyc

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

Судо MkDir -p / и т.д. / I / сетевое_имя / хостов

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

Судо VI /etc/tinc/netname/tinc.conf

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

Name = externalnyc
AddressFamily = ipv4
Interface = tun0

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

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

Судо VI / и т.д. / I / сетевое_имя / хозяева / externalnyc

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

Address = externalnyc_public_IP
Subnet = 10.0.0.1/32

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

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

Судо tincd -n сетевое_имя -K4096

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

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

Судо VI / и т.д. / I / сетевое_имя / мой вверх

И добавить:

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

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

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

Судо VI / и т.д. / I / сетевое_имя / I-вниз

А потом добавить:

#!/bin/sh
ifconfig $INTERFACE down

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

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

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

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

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

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

Судо MkDir -p / и т.д. / I / сетевое_имя / хостов
Судо VI /etc/tinc/netname/tinc.conf

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

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

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

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

Судо VI / и т.д. / I / сетевое_имя / хозяева / node_name

Тогда для internalnyc, добавьте следующую строку:

Subnet = 10.0.0.2/32

И для AMS1, добавьте следующую строку:

Subnet = 10.0.0.3/32

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

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

Судо tincd -n сетевое_имя -K4096

А потом:

Судо VI / и т.д. / I / сетевое_имя / мой вверх

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

Ifconfig $ ИНТЕРФЕЙС 10.0.0.2 Маска 255.255.255.0

И для AMS1:

Ifconfig $ ИНТЕРФЕЙС 10.0.0.3 Маска 255.255.255.0

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

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

Судо VI / и т.д. / I / сетевое_имя / I-вниз

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

Ifconfig $ ИНТЕРФЕЙС вниз

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

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

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

Раздача ключей

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

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

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

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

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

УПП / и т.д. / I / сетевое_имя / хозяева / internalnyc [Электронная почта защищена]_private_IP: / TMP

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

кд / и т.д. / I / сетевое_имя / хостов; Судо ф / TMP / internalnyc .

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

УПП / и т.д. / I / сетевое_имя / хозяева / externalnyc [Электронная почта защищена]_private_IP: / TMP

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

кд / и т.д. / I / сетевое_имя / хостов; Судо ф / TMP / externalnyc .

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

Судо VI / и т.д. / I / сетевое_имя / хозяева / externalnyc

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

Адрес = externalnyc_private_IP

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

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

Процесс здесь очень похож. Использование AMS1, скопируйте файл конфигурации хостов externalnyc:

УПП / и т.д. / I / сетевое_имя / хозяева / AMS1 [Электронная почта защищена]_public_IP: / TMP

А потом снова скопировать его в нужное место, используя externalnyc:

кд / и т.д. / I / сетевое_имя / хостов; Судо ф / TMP / AMS1 .

Пребывание на externalnyc, скопировать файл в другую сторону, через к AMS1:

УПП / и т.д. / I / сетевое_имя / хозяева / externalnyc [Электронная почта защищена]_public_IP: / TMP

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

кд / и т.д. / I / сетевое_имя / хостов; Судо ф / TMP / externalnyc .

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

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

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

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

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

Судо 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 службу

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

Заключение

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

Если вы хотите добавить дополнительные узлы в будущем, или комбинировать с другим Tinc ВЧСОМ, 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

Источник

Оставь ответ