Встановлення VPN з Tinc на Ubuntu 16.04 LTS

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

VPN працюють, створюючи зашифрований тунель через загальнодоступну мережу, і використовуючи її для безпечного відправлення даних між серверами та терміналами. Ці з'єднання можуть бути зашифровані різними способами, і існує багато різних клієнтів і демонів VPN, які відповідають вашій архітектурі, бюджету та рівню досвіду.

Tinc є одним з таких розчинів (1,2). Демон VPN з відкритим вихідним кодом, тепер доступний для широкого кола платформ і має ряд переваг перед аналогічними клієнтами VPN. Він пропонує безпечне та надійне шифрування, додаткове стиснення та легко розширюється, коли мережа зростає. Автоматична повна сітка маршрутизації означає, що VPN-трафік завжди (по можливості) надсилається безпосередньо на машину призначення, без проходження проміжних передач, і це значно покращує безпеку, обмежуючи можливість крадіжки даних (3). Крім того, оскільки Tinc VPN з'являється в мережевому коді рівня IP як звичайний мережевий пристрій, після налаштування Tinc VPN немає необхідності адаптувати існуюче програмне забезпечення. Це робить Tinc VPN за своєю суттю масштабованою.

Єдине незначне питання з Tinc є те, що деякі люди знайшли це трохи складніше, щоб встановити. Якщо це звучить як ви, ніколи не бояться - сьогодні я візьму вас через (більш-менш) безпроблемний спосіб отримання VPN Tinc і запуску на ваших серверах.

Передумови

Щоб повною мірою слідувати цьому підручнику, вам знадобиться щонайменше три сервера Ubuntu 16.04 і корінний доступ на кожній машині. Якщо у вас немає цього або ви не впевнені, що це означає, цей підручник не для вас - ви повинні спочатку перевірити, як налаштувати сервер за допомогою Ubuntu (4).

Якщо ви створюєте серверну систему з нуля, спочатку потрібно подумати про те, як ваші машини будуть спілкуватися один з одним. У цьому підручнику я збираюся використовувати імена змінних, які, на мою думку, вибирають більшість людей, але майте на увазі, що вам може знадобитися адаптувати деякі назви змінних для власної установки.

Якщо ви хочете точно слідувати цьому підручнику, то спочатку потрібно встановити два VPS в одному центрі даних, а потім зробити третій VPS у другому центрі обробки даних. Мої центри обробки даних називаються NYC2, який має два VPS, і AMS2, який має третій. Ці VPS називаються наступними:

externalnyc - Всі наші вузли VPN збираються підключитися до цього сервера, що означає, що він повинен залишатися на зв'язку і доступним для забезпечення належної роботи мережі. Якщо ви в кінцевому рахунку захочете додати додаткові сервери до вашого налаштування, вони повинні бути налаштовані так само, як і зовнішні.

internalnyc - Цей VPS підключається до зовнішнього вузла VPN, використовуючи інтерфейс приватної мережі.

ams1 - це наше публічне підключення до VPN. Він з'єднується з зовнішнімчином, використовуючи загальнодоступний Інтернет.

Мета

Ми хочемо досягти наступного:

Наша приватна мережа представлена ​​зеленою лінією і з'єднує всі три сервери. Апельсин - це наша приватна мережа, яка об'єднує два сервери NYC2. Всі три сервери можуть підключатися через VPN, хоча приватна мережа недоступна для AMS1.

Для цього виконайте такі дії:

Встановіть Tinc

Спочатку потрібно встановити Tinc. Як і раніше, переконайтеся, що всі ваші схоронні сховища оновлюються за допомогою:

Суду apt-get поновлення

Потім встановіть Tinc стандартним способом через apt:

sudo apt-get встановлює tinc

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

конфігурація

Налаштування Tinc може трохи відрізнятися від інших VPN, з якими ви звикли. Він використовує "netname" для розрізнення однієї VPN від іншої. Це стає дуже корисним, коли ви маєте декілька VPN, що проходять через Tinc, але в першу чергу трохи інтуїтивно зрозумілі. Оскільки це наша перша мережа Tinc, давайте залишимо її простим і назвіть наше VPN “netname”.

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

Файли конфігурації: tinc.conf, tinc-up, tinc-down і додаткове число інших файлів.

Пари публічних і приватних ключів: вони призначені для шифрування та аутентифікації.

Файли конфігурації хоста: Вони містять відкриті ключі та інші елементи конфігурації VPN.

Давайте зараз налаштуємо кожного з наших серверів. Спочатку вгору, зовнішні.

Налаштування зовнішньогокартку

Добре, тепер до гайок і болтів. На externalnyc, почніть зі створення структури каталогу конфігурації для VPN netname. Виконати:

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

Тепер відкрийте tinc.conf у вибраному текстовому редакторі:

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

Після того, як файл знаходиться перед собою, додайте до нижньої частини файлу наступне:

Ім'я = externalnyc AddressFamily = Інтерфейс ipv4 = tun0

Все, що ви тут робите, це налаштувати вузол, який називається externalnyc, і повідомляти серверу, що його мережевий інтерфейс буде використовувати ipv4 і називатися “tun0”. Збережіть файл і закрийте його.

Далі потрібно створити файл конфігурації хосту для externalnyc. Для цього відкрийте файл конфігурації хостів у текстовому редакторі:

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

Знову додайте рядки в нижній частині цього файлу, замінивши загальний IP-адресу вашого VPS у першому рядку:

Адреса = externalnyc_public_IP підмережа = 10.0.0.1 / 32

Це файл, який інші сервери використовуватимуть для підключення до externalnyc. Адреса повідомляє іншим вузлам, як і де підключатися до цього сервера, а адреса підмережі - це підмережа, на якій буде працювати цей демон. Знову збережіть зміни до цього файлу та закрийте його.

Тепер нам потрібно створити пару public / private для цього вузла. Це досить легко, просто запустіть:

sudo tincd -n netname -K4096

Це робить приватний ключ RSA і додає пару відкритого ключа до кінця файлу конфігурації, який ми тільки що створили. Ви можете відкрити його знову, щоб побачити, що це було зроблено, якщо хочете.

Тепер нам потрібно зробити tinc-up, невеликий скрипт, який буде виконуватися під час запуску нашої 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-down. Відчинено:

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

А потім додайте:

#! / bin / sh ifconfig $ ІНТЕРФЕЙС вниз

І знову зберегти і вийти. Тепер у нас є свої сценарії, але для того, щоб вони працювали, вони повинні бути позначені як виконувані. Це досить легко, використовуючи командний рядок:

sudo chmod 755 / etc / tinc / netname / tinc- *

Збережіть та вийдіть, і ви завершите налаштування цього сервера. Далі вгору, internalnyc і ams1.

Налаштування internalnyc і ams1

Щоб налаштувати два інші сервери, потрібно запускати ті самі команди на кожній машині. Є кілька незначних варіацій, які я відзначу, але процес в основному такий же.

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

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

Потім додайте кілька рядків у нижній частині цього файлу, замінивши ім'ям "node_name" ім'я кожного вузла:

Ім'я = node_name AddressFamily = ipv4 Інтерфейс = tun0 ConnectTo = externalnyc

Ви бачите, що обидва наші сервери тепер налаштовані на спроби підключення до externalnyc. Збережіть цей файл і закрийте його.

Тепер нам потрібно зробити файл конфігурації хостів. Виконати:

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

Потім для внутрішньогодомену додайте цей рядок:

Підмережа = 10.0.0.2 / 32

А для ams1 додайте цей рядок:

Підмережа = 10.0.0.3 / 32

Єдина відмінність полягає в тому, що адреси відрізняються, тому ми можемо розрізняти наші сервери. Збережіть цей файл і закрийте його.

Тепер, як і раніше, нам потрібно створити наші пари публічних / приватних ключів і створити скрипт запуску мережевого інтерфейсу. На кожному сервері виконайте:

sudo tincd -n netname -K4096

І потім:

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

Тепер. Для кожного сервера потрібно використовувати адреси, вказані раніше. Якщо ви мене точно стежите за внутрішнімкодом, вам потрібно додати:

ifconfig $ ІНТЕРФЕЙС 10.0.0.2 маска 255.255.255.0

А для ams1:

ifconfig $ ІНТЕРФЕЙС 10.0.0.3 маска 255.255.255.0

Але, якщо ви вказали різні адреси вище, змініть їх тут. Збережіть ці файли та вийдіть. Ми майже там.

Нам просто потрібно зробити так, щоб сценарій зупинки мережевого інтерфейсу, як і раніше:

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

Потім додайте цей рядок на обох серверах:

ifconfig $ INTERFACE вниз

І останній біт конфігурації - зробити наш новий скрипт виконуваним:

sudo chmod 755 / etc / tinc / netname / tinc- *

Зберегти та вийти. Уф. Якщо все пройшло добре, всі три сервери тепер налаштовані. Тепер для реалізації криптографії.

Поширення ключів

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

Отже, найпростіший спосіб зробити це - копіювати кожен відкритий ключ до всіх членів різних вузлів. Насправді це досить просто, просто будьте обережні, щоб змінити значення "address" у конфігураційному файлі externalnyc на його власну приватну IP-адресу, коли ви копіюєте його. Таким чином, з'єднання буде встановлено через приватну мережу.

Якщо ви слідували за мною і називали ваш VPN "netname", файли конфігурації хостів знаходяться тут: / etc / tinc / netname / hosts

Ключі обміну між зовнішніми та внутрішніми

Це просто. На internalnyc знайдіть файл конфігурації хостів і скопіюйте його на зовнішнійцінок:

scp / etc / tinc / netname / hosts / internalnyc [Електронна пошта захищена]_private_IP: / tmp

Потім, на зовнішньомукопії, скопіюйте той самий файл у потрібне місце:

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

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

scp / etc / tinc / netname / hosts / externalnyc [Електронна пошта захищена]_private_IP: / tmp

А потім на внутрішнійкопіювати файл, щоб він знаходився в потрібному місці:

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

Тепер нам потрібно відредагувати конфігураційний файл hostnyc зовнішнього каналу на internalnyc, щоб адреса була правильною. Це означає, що вузли з'єднаються з VPN через приватну мережу. Отже, на internalnyc відкрийте конфігураційний файл hosts для externalnyc:

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

І змініть значення адреси на приватну IP-адресу externalnyc, наприклад:

Адреса = externalnyc_private_IP

Збережіть файл і вийдіть. Ось ці дві клавіші зроблені. Тепер нам просто потрібно обміняти ключі з нашим одним вузлом.

Ключі обміну між зовнішніми та ams1

Процес тут дуже схожий. Використовуючи ams1, скопіюйте файл конфігурації хостів на externalnyc:

scp / etc / tinc / netname / hosts / ams1 [Електронна пошта захищена]_public_IP: / tmp

А потім знову скопіюйте його в потрібне місце, скориставшись зовнішнімчином:

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

Залишаючись на зовнішньомуканалі, скопіюйте файл в іншу сторону, на адресу 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 netname -D -d3

Якщо ви називаєте свій VPN чимось іншим, звичайно, змініть змінну “netname” на відповідну назву.

Після того, як демон стартує на кожному вузлі, він повинен повернути вивід, що дає вам ім'я кожного вузла під час їх з'єднання. Якщо цього не сталося, ви десь зробили помилку.

Тепер ми можемо протестувати VPN. У новому вікні на ams1, ping internalnyc використовує його IP-адресу. Ми призначили це раніше 10.0.0.2, тому введіть:

пінг-10.0.0.2

Сподіваюся, ваш пінг буде працювати. Ви також повинні побачити певний вихід налагодження в іншому windows, описуючи тільки що створені вами з'єднання. Ams1 тепер підключений, через ваш новий VPN, до externalnyc, і може підключитися до internalnyc через нього. Натисніть CTRL-C і пінг зупиниться.

Тепер у вас є захищене з'єднання VPN, ви можете використовувати його для будь-якого іншого типу мережевої комунікації - підключення додатків, копіювання файлів, SSH або будь-що інше, що вам подобається.

Якщо ваш пінг не працює, але ви думаєте, що зробили все правильно, це може бути, що брандмауер заважає. Перевірте налаштування брандмауера та повторіть спробу.

Tinc On Boot

Тільки одна остання річ. Якщо ви зараз збираєтеся використовувати свій Tinc VPN для всіх ваших мереж, ви можете налаштувати його на завантаження під час завантаження. Це потрібно зробити на кожному вузлі, редагуючи файл конфігурації nets.boot. Відкрийте файл за допомогою:

sudo vi /etc/tinc/nets.boot

Потім додайте назву нового VPN до цього файлу. Якщо ви вибрали "netname", як я, це виглядатиме так:

# Цей файл містить усі назви мереж, які потрібно запустити при запуску системи. прізвище

Збережіть і вийдіть, і все готово. Зараз Tinc працює, і почнеться під час завантаження. Добре зроблено.

Якщо потрібно керувати Tinc, тепер ви можете виконати команду "service". На кожному вузлі просто запустіть:

Початок роботи сервісу sudo

І пограйте. Найбільш базовий контроль можна досягти за допомогою цієї команди.

Висновок

Тепер ви повинні мати безпечне підключення 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

джерело

Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.