GNU/Linux >> Belajar Linux >  >> Ubuntu

Memasang VPN dengan Tinc di Ubuntu 16.04 LTS

Virtual Private Network (VPN) adalah jaringan pribadi aman yang beroperasi melalui jaringan publik yang lebih besar seperti internet. VPN menjadi semakin populer dalam beberapa tahun terakhir, terutama karena mereka menawarkan peningkatan keamanan dan privasi tanpa perlu menyiapkan perangkat keras baru yang mahal dan kompleks. Mereka juga menawarkan beberapa keuntungan lain, termasuk pengurangan biaya jaringan dan dukungan.

VPN bekerja dengan membuat terowongan terenkripsi melalui jaringan publik, dan menggunakannya untuk mengirim data antara server dan terminal dengan aman. Koneksi ini dapat dienkripsi dengan berbagai cara, dan ada banyak klien VPN dan daemon yang berbeda untuk menyesuaikan arsitektur, anggaran, dan tingkat pengalaman Anda.

Tinc adalah salah satu solusi tersebut (1). Daemon VPN sumber terbuka, sekarang tersedia untuk berbagai platform, dan memiliki beberapa keunggulan dibandingkan klien VPN serupa. Ini menawarkan enkripsi yang aman dan andal, kompresi opsional, dan mudah diperluas seiring pertumbuhan jaringan Anda. Perutean mesh penuh otomatis berarti bahwa lalu lintas VPN selalu (bila memungkinkan) dikirim langsung ke mesin tujuan, tanpa menjalani transfer perantara, dan ini sangat meningkatkan keamanan dengan membatasi kemungkinan pencurian data (3). Selain itu, karena Tinc VPN muncul ke kode jaringan level IP sebagai perangkat jaringan normal, setelah menyiapkan Tinc VPN tidak perlu mengadaptasi perangkat lunak yang ada. Hal ini membuat Tinc VPN secara inheren dapat diskalakan.

Satu-satunya masalah kecil dengan Tinc adalah bahwa beberapa orang merasa agak sulit untuk mengaturnya. Jika itu terdengar seperti Anda, jangan takut – hari ini saya akan membawa Anda melalui (kurang lebih) cara tanpa kerumitan untuk mengaktifkan dan menjalankan Tinc VPN di server Anda.

Pra-Persyaratan

Untuk mengikuti tutorial ini sepenuhnya, Anda akan memerlukan setidaknya tiga server Ubuntu 16.04, dan akses root pada setiap mesin. Jika Anda tidak memilikinya atau tidak yakin apa artinya ini, tutorial ini bukan untuk Anda – Anda harus terlebih dahulu memeriksa cara menyiapkan server menggunakan Ubuntu (2).

Jika Anda membangun sistem server dari awal, pertama-tama Anda harus memikirkan bagaimana mesin Anda akan berkomunikasi satu sama lain. Dalam tutorial ini, saya akan menggunakan nama variabel yang menurut saya akan dipilih oleh kebanyakan orang, tetapi perlu diketahui bahwa Anda mungkin perlu menyesuaikan beberapa nama variabel agar sesuai dengan pengaturan Anda sendiri.

Jika Anda ingin mengikuti tutorial ini dengan tepat, pertama-tama Anda harus menyiapkan dua VPS di pusat data yang sama, lalu membuat VPS ketiga di pusat data kedua. Pusat data saya disebut NYC2, yang memiliki dua VPS, dan AMS2, yang memiliki yang ketiga. VPS ini disebut sebagai berikut:

externalnyc – Semua node VPN kami akan terhubung ke server ini, yang berarti server ini harus tetap terhubung dan tersedia untuk memastikan jaringan berfungsi dengan baik. Jika pada akhirnya Anda ingin menambahkan server tambahan ke penyiapan, server tersebut perlu disiapkan dengan cara yang sama seperti externalnyc.

internalnyc – VPS ini terhubung ke node VPN externalnyc menggunakan antarmuka jaringan pribadi.

ams1 – Ini adalah koneksi VPN publik kami. Terhubung ke externalnyc menggunakan internet publik.

Sasaran

Yang ingin kami capai adalah sebagai berikut:

Jaringan pribadi kami diwakili oleh garis hijau, dan menghubungkan ketiga server. Oranye adalah jaringan pribadi kami, yang menghubungkan dua server NYC2. Ketiga server dapat terhubung melalui VPN, meskipun jaringan pribadi tidak dapat diakses oleh AMS1.

Untuk melakukannya, ikuti langkah-langkah berikut:

Instal Tinc

Pertama, kita perlu menginstal Tinc. Seperti biasa, pastikan semua repositori apt Anda mutakhir dengan menjalankan:

sudo apt-get update

Kemudian instal Tinc dengan cara standar melalui apt:

sudo apt-get install tinc

Dan itu saja! Mesin Anda sekarang akan mengunduh Tinc, ditambah semua prasyarat yang Anda butuhkan. Sekarang kita perlu melihat konfigurasinya.

Konfigurasi

Mengonfigurasi Tinc mungkin sedikit berbeda dari VPN lain yang biasa Anda gunakan. Ini menggunakan "nama bersih" untuk membedakan satu VPN dari yang lain, Ini menjadi sangat berguna ketika Anda memiliki beberapa VPN yang berjalan melalui Tinc, tetapi sedikit kontra-intuitif pada awalnya. Karena ini adalah jaringan Tinc pertama kami, tetap sederhanakan dan panggil VPN kami "netname".

Sekarang untuk masing-masing server kami. Masing-masing akan membutuhkan tiga komponen konfigurasi:

File konfigurasi:tinc.conf, tinc-up, tinc-down, dan sejumlah file opsional lainnya.

Pasangan kunci publik dan pribadi:ini untuk enkripsi dan otentikasi.

File konfigurasi host:Ini berisi kunci publik, dan elemen konfigurasi VPN lainnya.

Sekarang mari kita konfigurasikan masing-masing server kita secara bergantian. Pertama, externalnyc.

Konfigurasi externalnyc

Oke, sekarang ke mur dan bautnya. Pada externalnyc, mulailah dengan membuat struktur direktori konfigurasi untuk nama jaringan VPN. Jalankan:

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

Sekarang buka tinc.conf di editor teks pilihan Anda:

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

Setelah Anda memiliki file di depan Anda, tambahkan berikut ini ke bagian bawah file:

Name = externalnyc
AddressFamily = ipv4
Interface = tun0

Yang Anda lakukan di sini adalah mengonfigurasi node yang disebut externalnyc, dan memberi tahu server bahwa antarmuka jaringannya akan menggunakan ipv4 dan disebut "tun0". Simpan file, dan tutup.

Selanjutnya, kita perlu membuat file konfigurasi host untuk externalnyc. Untuk melakukannya, buka file konfigurasi host di editor teks:

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

Sekali lagi, tambahkan beberapa baris ke bagian bawah file ini, gantikan alamat IP publik VPS Anda di baris pertama:

Address = externalnyc_public_IP
Subnet = 10.0.0.1/32

Ini adalah file yang akan digunakan server lain untuk terhubung ke externalnyc. Alamat tersebut memberi tahu node lain bagaimana dan di mana harus terhubung ke server ini, dan alamat subnet adalah subnet tempat daemon ini akan beroperasi. Sekali lagi, simpan perubahan Anda ke file ini dan tutup.

Sekarang kita perlu membuat pasangan kunci publik/pribadi untuk host ini. Ini cukup mudah, jalankan saja:

 sudo tincd -n netname -K4096

Ini membuat kunci RSA pribadi, dan menambahkan pasangan kunci publik ke akhir file konfigurasi yang baru saja kita buat. Anda dapat membukanya lagi untuk melihat bahwa ini telah dilakukan, jika Anda mau.

Sekarang, kita perlu membuat tinc-up, skrip kecil yang akan berjalan saat VPN kita dijalankan. Buka file berikut untuk diedit:

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

Dan tambahkan:

#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0

Setiap kali nama net VPN dimulai, skrip ini akan berjalan. Ini akan membuat antarmuka jaringan untuk digunakan oleh VPN kami, dan pada VPN ini externalnyc akan memiliki IP 10.0.0.1.

Tetapi ketika VPN dihentikan, kami ingin antarmuka jaringan ini menghilang, jadi kami membutuhkan satu skrip lagi. Ini harus ditambahkan ke tinc-down. Buka:

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

Dan kemudian tambahkan:

#!/bin/sh
ifconfig $INTERFACE down

Dan lagi simpan dan keluar. Kami sekarang memiliki skrip kami, tetapi agar dapat berfungsi, skrip harus ditandai sebagai dapat dieksekusi. Ini cukup mudah, menggunakan baris perintah:

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

Simpan dan keluar, dan Anda selesai mengonfigurasi server ini. Selanjutnya, internalnyc dan ams1.

Konfigurasi internalnyc dan ams1

Untuk mengonfigurasi dua server yang tersisa, Anda perlu menjalankan perintah yang sama di setiap mesin. Ada beberapa variasi kecil, yang akan saya tunjukkan, tetapi prosesnya pada dasarnya sama.

Seperti yang kita lakukan dengan externalnyc di atas, pertama-tama kita perlu membuat struktur direktori untuk file konfigurasi kita. Di setiap server, jalankan yang berikut ini, lalu buka file konfigurasi Tinc untuk diedit:

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

Kemudian tambahkan beberapa baris ke bagian bawah file ini, ganti “node_name” dengan nama setiap node:

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

Anda dapat melihat bahwa kedua server kami sekarang dikonfigurasi untuk mencoba terhubung ke externalnyc. Simpan file ini, dan tutup.

Sekarang kita perlu membuat file konfigurasi host. Jalankan:

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

Kemudian untuk internalnyc, tambahkan baris ini:

Subnet = 10.0.0.2/32

Dan untuk ams1, tambahkan baris ini:

Subnet = 10.0.0.3/32

Satu-satunya perbedaan di sini adalah alamatnya berbeda, jadi kami dapat membedakan server kami. Simpan file ini, dan tutup.

Sekarang, seperti sebelumnya, kita perlu membuat pasangan kunci publik / pribadi kita, dan membuat skrip awal antarmuka jaringan. Di setiap server, jalankan:

 sudo tincd -n netname -K4096

Dan kemudian:

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

Sekarang. Untuk setiap server, kita perlu menggunakan alamat yang kita tentukan sebelumnya. Jika Anda mengikuti saya dengan tepat, untuk internalnyc Anda perlu menambahkan:

ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0

Dan untuk ams1:

ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0

Namun, jika Anda menentukan alamat yang berbeda di atas, ubah juga di sini. Simpan file-file ini, dan keluar. Kita hampir sampai.

Kita hanya perlu membuat script stop interface jaringan, seperti sebelumnya:

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

Dan kemudian tambahkan baris ini di kedua server:

ifconfig $INTERFACE down

Dan konfigurasi terakhir adalah membuat skrip baru kita dapat dieksekusi:

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

Simpan dan keluar. Fiuh. Jika semuanya berjalan dengan baik, ketiga server sekarang dikonfigurasi. Sekarang untuk mengimplementasikan kriptografi.

Mendistribusikan Kunci

Jika Anda sudah menggunakan sistem manajemen konfigurasi, Anda beruntung. Di dunia yang ideal, setiap node yang kita buat sekarang harus dapat berbicara langsung dengan node lain menggunakan antarmuka kunci publik / pribadi. Kunci, seperti yang kita lihat di atas, sekarang ada di file konfigurasi host untuk setiap server. Dalam jaringan sederhana yang kami buat di sini, sebenarnya hanya externalnyc yang perlu bertukar kunci dengan node lain.

Jadi, cara termudah untuk melakukannya adalah dengan menyalin setiap kunci publik ke semua anggota dari berbagai node. Ini sebenarnya cukup mudah, hanya berhati-hatilah untuk mengubah nilai "alamat" di file konfigurasi externalnyc ke alamat IP pribadinya sendiri saat Anda menyalinnya. Dengan begitu, koneksi akan dibuat melalui jaringan pribadi.

Jika Anda mengikuti saya dan menyebut VPN Anda “netname”, file konfigurasi host ada di sini:/etc/tinc/netname/hosts

Bertukar Kunci Antara externalnyc dan internalnyc

Ini sangat mudah. Di internalnyc, temukan file konfigurasi host dan salin ke externalnyc:

 scp /etc/tinc/netname/hosts/internalnyc [email protected]_private_IP:/tmp

Kemudian, di externalnyc, salin file yang sama ke lokasi yang tepat:

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

Sekarang kita melakukan prosedur sebaliknya. Di externalnyc, salin file konfigurasi host ke internalnyc:

 scp /etc/tinc/netname/hosts/externalnyc [email protected]_private_IP:/tmp

Dan kemudian di internalnyc salin file tersebut sehingga berada di tempat yang tepat:

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

Sekarang kita perlu mengedit file konfigurasi host externalnyc di internalnyc agar alamatnya benar. Ini agar node akan terhubung ke VPN melalui jaringan pribadi. Jadi, di internalnyc, buka file konfigurasi host untuk externalnyc:

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

Dan ubah nilai alamat menjadi alamat IP pribadi externalnyc, seperti ini:

Address = externalnyc_private_IP

Simpan file, dan keluar. Itu dua kunci ini selesai. Sekarang kita hanya perlu menukar kunci dengan satu node yang tersisa.

Bertukar Kunci Antara externalnyc dan ams1

Proses di sini cukup mirip. Menggunakan ams1, salin file konfigurasi host ke externalnyc:

 scp /etc/tinc/netname/hosts/ams1 [email protected]_public_IP:/tmp

Dan sekali lagi salin ke tempat yang tepat, menggunakan externalnyc:

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

Tetap di externalnyc, salin file ke arah lain, ke ams1:

 scp /etc/tinc/netname/hosts/externalnyc [email protected]_public_IP:/tmp

Dan sekali lagi, di ams1, salin file ini sehingga berada di tempat yang tepat:

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

Dan Anda selesai dengan pertukaran kunci. Secara teori, Anda sekarang memiliki VPN yang berfungsi dan terenkripsi melalui Tinc. Jika Anda telah mengikuti tutorial ini hingga tuntas, Anda dapat melanjutkan ke pengujian pengaturan Anda. Namun, jika Anda juga mengambil kesempatan untuk menambahkan node tambahan, sekarang adalah saat yang tepat untuk menukar semua kunci yang Anda perlukan.

Ingatlah bahwa jika Anda menggunakan node pusat, seperti yang saya lakukan di sini, Anda tidak perlu menyalin semua kunci ke semua server. Namun, jika Anda ingin node dapat berbicara satu sama lain secara langsung, mereka perlu bertukar kunci. Proses untuk melakukannya sama seperti yang saya jelaskan di atas – cukup lakukan iterasi sebanyak yang Anda perlukan untuk mencapai konektivitas yang diinginkan.

Pengujian

Anda sekarang harus siap untuk menguji. Untuk melakukan ini, ada baiknya memulai Tinc dalam mode debug, sehingga kami dapat menangkap kesalahan apa pun dan mendapatkan lebih banyak informasi jika terjadi kesalahan. Ingatlah bahwa VPN yang dikonfigurasi dengan buruk sebenarnya dapat menimbulkan risiko keamanan, jadi pastikan semuanya berfungsi dengan baik sebelum Anda mulai menggunakan VPN untuk hal-hal penting.

Untuk memulai Tinc dalam mode debug, pada setiap node, dimulai dengan externalnyc, jalankan:

 sudo tincd -n netname -D -d3

Jika Anda menyebut VPN Anda sesuatu yang berbeda, tentu saja, ubah variabel “netname” ke nama yang sesuai.

Setelah daemon dimulai pada setiap node, ia akan mengembalikan output yang memberi Anda nama setiap node saat mereka terhubung. Jika ini tidak terjadi, Anda telah membuat kesalahan di suatu tempat.

Sekarang, kita dapat menguji VPN. Di jendela baru di ams1, ping internalnyc menggunakan alamat IP-nya. Kami menetapkan ini ke 10.0.0.2 sebelumnya, jadi ketik:

 ping 10.0.0.2

Semoga ping Anda berhasil. Anda juga akan melihat beberapa keluaran debug di jendela lain, yang menjelaskan koneksi yang baru saja Anda buat. Ams1 sekarang terhubung, melalui VPN baru Anda, ke externalnyc, dan dapat terhubung ke internalnyc melalui itu. Tekan CTRL-C dan ping akan berhenti.

Sekarang Anda memiliki koneksi VPN yang aman, Anda dapat menggunakannya untuk semua jenis komunikasi jaringan lainnya – koneksi aplikasi, menyalin file, SSH, atau apa pun yang Anda suka.

Jika ping Anda tidak berfungsi, tetapi Anda merasa telah melakukan semuanya dengan benar, mungkin ada firewall yang menghalangi. Periksa setelan firewall Anda, dan coba lagi.

Tinc Saat Boot

Hanya satu hal terakhir. Jika sekarang Anda akan menggunakan Tinc VPN untuk semua jaringan Anda, Anda mungkin ingin mengaturnya ke startup saat boot. Anda perlu melakukan ini pada setiap node, dengan mengedit file konfigurasi nets.boot. Buka file menggunakan:

 sudo vi /etc/tinc/nets.boot

Dan kemudian tambahkan nama VPN baru Anda ke file ini. Jika Anda memilih "netname" seperti saya, ini akan terlihat seperti berikut:

# This file contains all names of the networks to be started on system 	startup.
netname

Simpan dan keluar, dan selesai. Tinc sekarang berfungsi, dan akan mulai saat boot. Bagus sekali.

Jika Anda perlu mengontrol Tinc, Anda sekarang dapat menjalankan perintah "service" untuk melakukannya. Di setiap node, jalankan saja:

 sudo service tinc start

Dan bermain-main. Kontrol paling dasar dapat dicapai melalui perintah ini.

Kesimpulan

Anda sekarang harus memiliki koneksi VPN aman yang berjalan melalui Tinc di semua mesin Anda. VPN ini dapat digunakan sebagai basis untuk membangun fungsionalitas jaringan lebih lanjut.

Jika Anda ingin menambahkan node lebih lanjut di masa mendatang, atau menggabungkan Tinc dengan VPN lain, Tinc akan mengizinkan Anda melakukannya. Proses untuk setiap node tambahan sama seperti yang telah saya jelaskan di atas, dan Anda seharusnya dapat dengan mudah melihat variabel dan alamat mana yang perlu diubah. Ingatlah bahwa jika Anda ingin node dapat terhubung satu sama lain secara langsung, Anda perlu menukar kunci di antara mereka secara langsung. Seperti ini, Tinc beroperasi sebagai VPN mesh, yang sedikit lebih aman daripada pendekatan saya. Jika tidak, Anda dapat mengatur jaringan Anda seperti yang telah saya lakukan, dan semuanya akan melalui node pusat.

Either way, Anda sekarang bebas untuk bermain-main. Semoga berhasil!

Sumber daya

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

(2) https://www.howtoforge.com/tutorial/ubuntu-lts-minimal-server/


Ubuntu
  1. Menginstal mod_pagespeed dengan Apache di Ubuntu/CentOS

  2. Terapkan Modsecurity dengan Nginx di Ubuntu 20.04 LTS

  3. Saya Tidak Dapat Menemukan Paket Sstp Vpn Dengan Ubuntu 16.04 Lts?

  1. 10 Tugas Teratas yang harus dilakukan setelah Menginstal Ubuntu 16.04 LTS

  2. Hal Yang Harus Dilakukan Setelah Menginstal Ubuntu 16.04 LTS

  3. Menginstal Ms Office 2013 Di Ubuntu 12.04 Lts?

  1. Cara Dual Boot Ubuntu 18.04 LTS dengan Windows 10

  2. Panduan Instalasi Desktop Ubuntu 18.04 LTS dengan Tangkapan Layar

  3. 14 Hal Teratas yang Harus Dilakukan Setelah Menginstal Ubuntu 20.04 LTS