Instaliranje VPN-a s Tincom na Ubuntu 16.04 LTS

 

Virtualna privatna mreža (VPN) je sigurna privatna mreža koja djeluje preko veće javne mreže kao što je internet. VPN-ovi su postali sve popularniji posljednjih godina, uglavnom zato što nude veću sigurnost i privatnost bez potrebe postavljanja skupe i složene nove hardvera. Oni nude i nekoliko drugih prednosti, uključujući smanjene troškove umrežavanja i podrške.

VPN-ovi rade stvaranjem šifriranog tunela putem javne mreže i to pomoću toga za sigurno slanje podataka između poslužitelja i terminala. Te se veze mogu šifrirati na različite načine, a postoji mnogo različitih VPN klijenata i demona koji odgovaraju vašoj arhitekturi, proračunu i razini iskustva.

Tinc je jedno takvo rješenje (1,2). Open Source VPN daemon sada je dostupan za širok raspon platformi i ima nekoliko prednosti nad sličnim VPN klijentima. Omogućuje sigurno i pouzdano šifriranje, opcionalno komprimiranje i lako se širi dok vaša mreža raste. Automatsko usmjeravanje u punoj mreži znači da je VPN promet uvijek (kad god je to moguće) poslan izravno na odredišni stroj, a da pritom ne prolazi srednji prijenos, a to uvelike poboljšava sigurnost ograničavanjem mogućnosti krađe podataka (3). Osim toga, jer se Tinc VPN pojavljuje na mrežnom kodu IP mreže kao normalni mrežni uređaj, nakon postavljanja Tinc VPN-a nema potrebe za prilagodbom postojećeg softvera. To čini Tinc VPN inherentno skalabilnim.

The only minor issue with Tinc is that some people have found it a little tricky to set up. If that sounds like you, never fear – today I’ll take you through a (more or less) hassle-free way of getting a Tinc VPN up and running on your servers.

Preduvjeti

To follow this tutorial fully, you are going to need at least three Ubuntu 16.04 servers, and root access on each machine. If you don’t have this or are not sure what this means, this tutorial is not for you – you should first check out how to set up a server using Ubuntu (4).

If you are building a server system from scratch, you first need to think about how your machines are going to communicate with each other. In this tutorial, I’m going to use the variable names that I think most people would choose, but be aware that you might need to adapt some of the variable names to suit your own setup.

Ako želite točno slijediti ovaj vodič, prvo ćete morati postaviti dva VPS-a u istom podatkovnom centru, a zatim napraviti treći VPS u drugom podatkovnom centru. Moji podatkovni centri nazivaju se NYC2, koji ima dva VPS i AMS2, koji ima treći. Ove VPS-ove nazivaju se sljedeće:

externalnyc – All of our VPN nodes are going to connect to this server, which means that it must stay connected and available to ensure the network functions properly. If you eventually want to add extra servers to your set up, they will need to be set up in the same way as externalnyc.

internalnyc – This VPS connects to the externalnyc VPN node using a private network interface.

ams1 – This is our public VPN connection. It connects to externalnyc using the public internet.

Cilj

Ono što želimo postići je sljedeće:

Naša privatna mreža predstavlja zelenu liniju i povezuje sva tri poslužitelja. Narančasta je privatna mreža koja povezuje dva NYC2 poslužitelja. Sva tri poslužitelja mogu se povezati preko VPN-a, iako privatna mreža nije dostupna za AMS1.

Da biste to učinili, slijedite ove korake:

Instalirajte Tinc

Prvo, trebamo instalirati Tinc. Kao i uvijek, provjerite jesu li svi vaši apt spremišta ažurni:

sudo apt-get ažuriranje

Zatim instalirajte Tinc na standardni način kroz apt:

sudo apt-get install tinc

And that’s it! Your machine will now download Tinc, plus any prerequisites you need. We now need to have a look at the configuration.

konfiguracija

Configuring Tinc may be a little different from other VPNs you are used to. It uses a “netname” to distinguish one VPN from another, This becomes very useful when you have multiple VPNs running through Tinc, but is a little counter-intuitive at first. Since this is our first Tinc network, let’s keep it simple and call our VPN “netname”.

Sada za svaki naš poslužitelj. Svaki će trebati tri konfiguracijske komponente:

Konfiguracijske datoteke: tinc.conf, tinc-up, tinc-down i izborni broj drugih datoteka.

Javni i privatni ključni parovi: to su za šifriranje i provjeru autentičnosti.

Konfiguracijske datoteke hosta: one sadrže javne ključeve i druge VPN konfiguracijske elemente.

Let’s now configure each of our servers in turn. First up, externalnyc.

Konfiguriraj externalnyc

OK, sada na matice i vijke. Na externalnyc, počnite stvaranjem konfiguracijske strukture direktorija za VPN netname. Trčanje:

sudo mkdir -p / etc / tinc / netname / domaćini

Sada otvorite tinc.conf u odabranom uređivaču teksta:

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

Nakon što ste dobili datoteku ispred vas, dodajte sljedeće na dnu datoteke:

Naziv = externalnyc AddressFamily = ipv4 sučelje = tun0

All you are doing here is to configure a node called externalnyc, and telling the server that it’s network interface will use ipv4 and be called “tun0”. Save the file, and close it.

Sljedeće, moramo stvoriti konfiguracijsku datoteku domaćina za externalnyc. Da biste to učinili, otvorite konfiguracijsku datoteku domaćina u uređivaču teksta:

sudo vi / etc / tinc / netname / domaćini / externalnyc

Ponovno dodajte neke retke na dno ove datoteke, zamjenjujući javnu IP adresu vašeg VPS-a u prvom retku:

Adresa = externalnyc_public_IP Subnet = 10.0.0.1 / 32

Ovo je datoteka koju će drugi poslužitelji koristiti za spajanje na externalnyc. Adresa govori drugim čvorovima kako i gdje se povezati s ovim poslužiteljem, a podmrežna adresa je podmreža na kojoj će taj démon raditi. Opet, spremite promjene na tu datoteku i zatvorite ih.

Sada moramo generirati javni / privatni ključ za ovaj domaćin. Ovo je dovoljno jednostavno, samo pokrenite:

sudo tincd -n netname -K4096

To čini privatni RSA ključ i dodaje par ključa javnog ključa do kraja konfiguracijske datoteke koju smo upravo stvorili. Možete ga ponovo otvoriti da biste vidjeli da je to učinjeno, ako vam se sviđa.

Sada moramo napraviti tinc-up, malu skriptu koja će se pokrenuti kada se pokrene VPN. Otvorite sljedeću datoteku za uređivanje:

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

I dodajte:

#! / bin / sh ifconfig $ INTERFACE 10.0.0.1 maska ​​255.255.255.0

Kad god započne VPN netname, ova će se skripta pokrenuti. Napravit će mrežno sučelje koje će koristiti naš VPN, a na ovom VPN-u, foreignnyc će imati IP 10.0.0.1.

Ali kada se VPN zaustavi, želimo da ovo mrežno sučelje nestane pa nam je potrebna još jedna skripta. To bi trebalo biti dodano na tinc-down. Otvoren:

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

A zatim dodajte:

#! / bin / sh ifconfig $ INTERFACE dolje

I opet spasiti i prestati. Sad imamo svoje skripte, ali kako bi oni mogli raditi, moraju biti označeni kao izvršni. To je dovoljno jednostavno, pomoću naredbenog retka:

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

Spremite i zatvorite, a vi ste gotovi s konfiguriranjem ovog poslužitelja. Sljedeće, internalnyc i ams1.

Konfiguriraj internalnyc i ams1

To configure the two remaining servers, you need to run the same commands on each machine. There are a few minor variations, which I’ll point out, but the process is basically the same.

Kao što smo učinili s gornjim ovlastima, prvo trebamo napraviti strukturu direktorija za naše konfiguracijske datoteke. Na svakom poslužitelju pokrenite sljedeće, a zatim otvorite Tinc konfiguracijsku datoteku za uređivanje:

sudo mkdir -p / etc / tinc / netname / domaćini
sudo vi /etc/tinc/netname/tinc.conf

Then add a few lines to the bottom of this file, substituting “node_name” with the name of each node:

Ime = čvorište AdresaProna = ipv4 sučelje = tun0 ConnectTo = externalnyc

Možete vidjeti da su oba naš poslužitelj konfigurirana tako da se pokuša povezati s externalnyc. Spremite tu datoteku i zatvorite je.

Sada moramo napraviti konfiguracijsku datoteku hostova. Trčanje:

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

Zatim za internalnyc dodajte ovu retku:

Subnet = 10.0.0.2 / 32

I za ams1 dodajte ovu retku:

Subnet = 10.0.0.3 / 32

Jedina je razlika u tome što se adrese razlikuju, tako da možemo reći da se naši poslužitelji razlikuju. Spremite tu datoteku i zatvorite je.

Sada, baš kao i prije, moramo generirati parove javnih / privatnih ključeva i stvoriti skriptu pokretanja mrežnog sučelja. Na svakom poslužitelju pokrenite:

sudo tincd -n netname -K4096

I onda:

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

Sada. Za svaki poslužitelj moramo koristiti adrese koje smo prethodno navedene. Ako me slijedite točno, za internalnyc morate dodati:

ifconfig $ INTERFACE 10.0.0.2 netmaska ​​255.255.255.0

A za ams1:

ifconfig $ INTERFACE 10.0.0.3 netmaska ​​255.255.255.0

No, ako ste prethodno navedili različite adrese, promijenite ih i ovdje. Spremite te datoteke i zatvorite. Skoro smo tamo.

Samo trebamo napraviti mrežno sučelje zaustaviti skriptu, baš kao i prije:

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

A zatim dodajte ovu liniju na oba poslužitelja:

ifconfig $ INTERFACE dolje

A zadnji dio konfiguracije je da naše nove skripte izvede:

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

Spremite i zatvorite. Uf. Ako sve bude dobro, sva tri poslužitelja sada su konfigurirana. Sada za implementaciju kriptografije.

Distribuiranje tipki

Ako već koristite sustav za upravljanje konfiguracijom, imate sreću. U idealnom svijetu, svaki čvor koji smo napravili mora biti u stanju izravno razgovarati s drugim čvorom koristeći sučelje javnog / privatnog ključa. Tipke, kao što smo već vidjeli, sada su u konfiguracijskim datotekama domaćinima za svaki poslužitelj. U jednostavnoj mreži koju napravimo ovdje, zapravo samo externalnyc treba razmjenjivati ​​ključeve s drugim čvorovima.

And so, the easiest way to do this is simply to copy each public key to all members of the various nodes. This is actually pretty easy, just be careful to change the “address” value in externalnyc’s configuration file to it’s own private IP address when you copy it. That way, the connection will be established over the private network.

If you followed me and called your VPN “netname”, the hosts configuration files are here: /etc/tinc/netname/hosts

Razmjena ključeva između externalnyc i internalnyc

Ovo je jasno. Na innernyc pronađite konfiguracijsku datoteku domaćinstva i kopirajte je na externalnyc:

scp / etc / tinc / netname / domaćini / internalnyc [Pošalji zaštićena]_private_IP: / TMP

Zatim, na externalnyc, kopirajte istu datoteku na odgovarajuće mjesto:

cd / etc / tinc / netname / domaćini; sudo cp / tmp / internalnyc.

Sada postupamo suprotno. Na externalnyc kopirajte konfiguracijsku datoteku domaćinstva na internalnyc:

scp / etc / tinc / netname / domaćini / externalnyc [Pošalji zaštićena]_private_IP: / TMP

A zatim na internalnyc kopirajte datoteku tako da je na pravom mjestu:

cd / etc / tinc / netname / domaćini; sudo cp / tmp / externalnyc.

Now we need to edit externalnyc’s hosts configuration file on internalnyc so the address is correct. This is so the nodes will connect to the VPN via the private network. So, on internalnyc, open the hosts configuration file for externalnyc:

sudo vi / etc / tinc / netname / domaćini / externalnyc

And change the address value to externalnyc’s private IP address, like this:

Adresa = externalnyc_private_IP

Save the file, and quit. That’s these two keys done. Now we just need to exchange keys with our one remaining node.

Razmjena ključeva izmedu externalnyc i ams1

Proces ovdje je prilično sličan. Pomoću ams1 kopirajte datoteku konfiguracije hosts na externalnyc:

scp / etc / tinc / netname / domaćini / ams1 [Pošalji zaštićena]_public_IP: / TMP

A zatim ga ponovo kopirajte na pravo mjesto, koristeći externalnyc:

cd / etc / tinc / netname / domaćini; sudo cp / tmp / ams1.

Ostanite na externalnyc, kopirajte datoteku na drugi način, preko do ams1:

scp / etc / tinc / netname / domaćini / externalnyc [Pošalji zaštićena]_public_IP: / TMP

I još jednom, na ams1, kopirajte ovu datoteku tako da je na pravom mjestu:

cd / etc / tinc / netname / domaćini; sudo cp / tmp / externalnyc.

And you’re done with key exchange. In theory, you’ve now got a working, encrypted VPN through Tinc. If you’ve followed this tutorial to the letter, you can move on to testing your set up. If, however, you’ve also taken the opportunity to add extra nodes, now is a good time to exchange all the keys you will need.

Remember that if you are using a central node, like I’m doing here, you do not need to copy all keys to all servers. However, if you want nodes to be able to talk to each other directly, they will need to exchange keys. The process for doing this is the same as I’ve described above – just do as many iterations as you need to achieve your desired connectivity.

Ispitivanje

You should now be ready to test. To do this, it’s a good idea to start Tinc in debug mode, so we can catch any errors and get some more information if anything goes wrong. Remember that a poorly configured VPN can actually be a security risk, so make sure everything works properly before you start using your VPN for anything important.

Da biste pokrenuli Tinc u debug modu, na svakom čvoru, počevši od externalnyc, pokrenite:

sudo tincd -n netname -D -d3

If you’ve called your VPN something different, of course, change the “netname” variable to the appropriate name.

After the daemon starts on each node, it should return output giving you the name of each node as they connect. If this doesn’t happen, you’ve made a mistake somewhere.

Sada možemo testirati VPN. U novom prozoru na ams1 ping internalnyc pomoću svoje IP adrese. To smo već dodali u 10.0.0.2, pa upišite:

ping 10.0.0.2

Hopefully, your ping will work. You should also see some debugging output in the other windows, describing the connections you’ve just made. Ams1 is now connected, through your new VPN, to externalnyc, and can connect to internalnyc through it. Hit CTRL-C and the ping will stop.

Now you’ve got a secure VPN connection, you can use it for any other type of network communication – application connections, copying files, SSH, or anything else you like.

If your ping didn’t work, but you think you did everything right, it might be that a firewall got in the way. Check your firewall settings, and try again.

Tinc na čizmu

Just one last thing. If you’re now going to use your Tinc VPN for all your networking, you might want to set it to startup on boot. You will need to do this on each node, by editing the nets.boot configuration file. Open the file using:

sudo vi /etc/tinc/nets.boot

And then add the name of your new VPN to this file. If you chose “netname” like me, this will look like the following:

# Ova datoteka sadrži sve nazive mreža koje treba pokrenuti pri pokretanju sustava. netname

Save and quit, and you’re done. Tinc is now working, and will start on boot. Well done you.

If you need to control Tinc, you can now run the “service” command to do so. On each node, just run:

sudo service tinc start

I igrati se oko sebe. Ova osnovna kontrola može se postići putem ove naredbe.

Zaključak

Sada biste trebali imati sigurnu VPN vezu koja će proći kroz Tinc na svim vašim računalima. Ovaj VPN može se koristiti kao baza za izgradnju dodatne funkcionalnosti mreže.

If you want to add further nodes in the future, or combine Tinc with other VPNs, Tinc will allow you to do this. The process for each extra node is the same as I’ve described above, and you should be able to easily see which variables and addresses need changing. Just remember that if you want nodes to be able to connect to each other directly, you will need to swap keys between them directly. Like this, Tinc operates as a mesh VPN, which is a bit more secure than my approach (3). Otherwise, you can just set up your network like I have done, and have everything going through a central node.

Bilo kako bilo, sada ste slobodni igrati se. Sretno!

Resursi

(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

izvor

Oglasi

Ostavi odgovor

GTranslate Your license is inactive or expired, please subscribe again!