Nameščanje VPN s Tincom na Ubuntu 16.04 LTS

 

Virtual Private Network (VPN) je varno zasebno omrežje, ki deluje v večjem javnem omrežju, kot je internet. VPN-ji so postali vse bolj priljubljeni v zadnjih letih, večinoma zato, ker ponujajo večjo varnost in zasebnost brez potrebe po vzpostavitvi drage in zapletene nove strojne opreme. Ponujajo tudi številne druge prednosti, vključno z zmanjšanimi stroški mreženja in podpore.

VPN-ji delujejo tako, da v javnem omrežju ustvarijo šifriran tunel in to uporabljajo za varno pošiljanje podatkov med strežniki in terminali. Te povezave lahko šifriramo na različne načine in obstaja veliko različnih VPN odjemalcev in demonov, ki ustrezajo vaši arhitekturi, proračunu in raven izkušenj.

Tinc je ena taka rešitev (1,2). Odprtokodni VPN daemon, je zdaj na voljo za široko paleto platform in ima več prednosti pred podobnimi odjemalci VPN. Omogoča varno in zanesljivo šifriranje, neobvezno stiskanje in je enostavno razširiti, ko raste vaše omrežje. Avtomatsko polnjenje omrežnih poti pomeni, da je promet VPN vedno (kadar koli je mogoče) poslano neposredno na ciljni stroj brez vmesnih prenosov, kar znatno izboljša varnost z omejevanjem možnosti kraje podatkov (3). Poleg tega, ker se Tinc VPN pojavi kot omrežna koda nivoja IP kot običajna omrežna naprava, po namestitvi Tinc VPN ni treba prilagajati obstoječe programske opreme. Zaradi tega je Tinc VPN po naravi razširljiv.

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.

Predpogoji

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.

Če želite natančno slediti tej vadnici, boste morali najprej nastaviti dva VPS-jev v istem podatkovnem centru in nato narediti tretji VPS v drugem podatkovnem središču. Moje podatkovne centre imenujem NYC2, ki ima dva VPS-jeva in AMS2, ki ima tretji. Ti VPS se imenujejo naslednji:

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

Kaj želimo doseči je naslednje:

Naša zasebna mreža predstavlja zelena črta in povezuje vse tri strežnike. Oranžna je naša zasebna mreža, ki povezuje dva strežnika NYC2. Vsi trije strežniki se lahko povezujejo prek VPN, čeprav zasebno omrežje ni dostopno AMS1.

To storite tako:

Namesti Tinc

Najprej moramo namestiti Tinc. Kot vedno, poskrbite, da bodo vsi vaši apt repozitoriji posodobljeni z zaganjanjem:

sudo update apt-get

Nato namestite Tinc na standarden način skozi apt:

sudo apt-get namestite 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”.

Zdaj za vsakega od naših strežnikov. Vsak potrebuje tri komponente konfiguracije:

Konfiguracijske datoteke: tinc.conf, tinc-up, tinc-down in izbirno število drugih datotek.

Javni in zasebni ključni pari: to so za šifriranje in avtentikacijo.

Konfiguracijske datoteke gostitelja: vsebujejo javne ključe in druge konfiguracijske elemente VPN.

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

Konfiguracija zunanjega

V redu, zdaj na matice in vijake. Pri zunanji strani, začnite z ustvarjanjem strukture konfiguracijskega imenika za omrežno ime VPN. Run:

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

Zdaj odprite tinc.conf v izbranem besedilnem urejevalniku:

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

Ko imate datoteko pred vami, na dnu datoteke dodajte naslednje:

Ime = zunanji naslov AddressFamily = ipv4 Interface = 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.

Naslednje, moramo ustvariti konfiguracijsko datoteko gostitelja za zunanji račun. Če želite to narediti, odprite konfiguracijsko datoteko gostitelja v urejevalniku besedil:

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

Ponovno dodajte nekaj vrstic na dno te datoteke, tako da v prvi vrstici zamenjate javni IP naslov vašega VPS:

Naslov = zunanji_public_IP Subnet = 10.0.0.1 / 32

To je datoteka, ki jo bodo drugi strežniki uporabili za povezavo z zunanjim. Naslov pove drugim vozliščem, kako in kje se povezati s tem strežnikom, in podomrežni naslov je podomrežje, na katerega deluje ta demon. Spet shranite spremembe v to datoteko in jo zaprite.

Zdaj moramo ustvariti par zasebnega ključa za ta gostitelj. To je enostavno, samo zaženite:

sudo tincd -n neto ime -K4096

To naredi zasebni ključ RSA in doda ključ javnih ključev do konca konfiguracijske datoteke, ki smo jo pravkar ustvarili. Ponovno ga lahko odprete, da vidite, ali je bilo to storjeno, če želite.

Zdaj moramo narediti tint-up, majhen skript, ki se bo zagnal, ko se bo začel naš VPN. Odprite naslednjo datoteko za urejanje:

sudo vi / etc / tinc / spletno ime / tinc-up

In dodajte:

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

Vsakič, ko se začne internetno omrežje VPN, se bo ta skript prikazal. Omogočil bo omrežni vmesnik, ki ga bo uporabljal naš VPN, in na tej zunanji VPN bo imel IP od 10.0.0.1-a.

Toda, ko je VPN ustavljen, želimo, da ta mrežni vmesnik izgine, zato potrebujemo še en skript. To je treba dodati tančnemu navzdol. Odprto:

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

In dodajte:

#! / bin / sh ifconfig $ INTERFACE navzdol

Še enkrat shranite in zaprite. Zdaj imamo svoje skripte, toda, da bi jih delali, jih je treba označiti kot izvršljiv. To je preprosto, z ukazno vrstico:

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

Shrani in zaprete, končali pa boste konfiguriranje tega strežnika. Next up, internalnyc in ams1.

Konfiguriraj internalnyc in 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.

Kot smo storili z zunanjim zgoraj, moramo najprej narediti strukturo imenikov za naše konfiguracijske datoteke. Na vsakem strežniku izvedite naslednje, nato pa odprite konfiguracijsko datoteko Tinc za urejanje:

sudo mkdir -p / etc / tinc / netname / gostitelji
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 = node_name AddressFamily = ipv4 Interface = tun0 ConnectTo = zunanji

Vidite lahko, da sta oba naša strežnika konfigurirana tako, da se poskušata povezati z zunanjim. Shranite to datoteko in jo zaprite.

Zdaj moramo narediti gostiteljsko konfiguracijsko datoteko. Run:

sudo vi / etc / tinc / netname / hosts / ime vozlišča

Nato za internalnyc dodajte to vrstico:

Podomrežje = 10.0.0.2 / 32

In za ams1 dodajte to vrstico:

Podomrežje = 10.0.0.3 / 32

Edina razlika je v tem, da se naslovi razlikujejo, zato lahko razkrijete naše strežnike. Shranite to datoteko in jo zaprite.

Zdaj, tako kot prej, moramo ustvariti pare javnega / zasebnega ključa in ustvariti zagonski skript za omrežni vmesnik. Na vsakem strežniku zaženite:

sudo tincd -n neto ime -K4096

In potem:

sudo vi / etc / tinc / spletno ime / tinc-up

Zdaj. Za vsak strežnik moramo uporabiti naslove, ki smo jih prej navedli. Če me natančno spremljate, ker morate internalnyc dodati:

ifconfig $ INTERFACE 10.0.0.2 omrežna maska ​​255.255.255.0

In za ams1:

ifconfig $ INTERFACE 10.0.0.3 omrežna maska ​​255.255.255.0

Ampak, če ste podali različne naslove zgoraj, jih spremenite tudi tukaj. Shranite te datoteke in zaprite. Skoraj smo tam.

Pravkar moramo narediti skript za zaustavitev omrežnega vmesnika, tako kot prej:

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

In nato dodajte to vrstico na oba strežnika:

ifconfig $ INTERFACE navzdol

In zadnja bit konfiguracije je, da bi bili naši novi skripti izvršljivi:

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

Shrani in zapusti. Phew. Če je vse dobro potekalo, so vsi trije strežniki zdaj konfigurirani. Zdaj za izvajanje kriptografije.

Razdeljevanje tipk

Če že uporabljate sistem za upravljanje z nastavitvami, imate srečo. V idealnem svetu bi moralo vsako vozlišče, ki smo ga naredili zdaj, imeti možnost neposredno govoriti z drugim vozliščem s pomočjo vmesnika javnega / zasebnega ključa. Tipke, kot smo videli zgoraj, so sedaj v konfiguracijskih datotekah gostiteljev za vsak strežnik. V preprosti mreži, ki jo izdelujemo tukaj, mora samo zunanji potrebuje izmenjavo ključev z drugimi vozlišči.

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

Ključi za izmenjavo med zunanjimi in notranjimi

To je preprosto. Pri internalnyc poiščite konfiguracijsko datoteko gostitelja in jo kopirajte na zunanji:

scp / etc / tinc / netname / hosts / internalnyc [E-poštni zaščiteni]_private_IP: / tmp

Nato na zunanji strani kopirajte isto datoteko na ustrezno lokacijo:

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

Sedaj opravljamo nasprotni postopek. Na zunanji strani kopirajte konfiguracijsko datoteko gostitelja na internalnyc:

scp / etc / tinc / netname / hosts / externalnyc [E-poštni zaščiteni]_private_IP: / tmp

In nato na internalnyc kopirajte datoteko, tako da je na pravem mestu:

cd / etc / tinc / netname / gostitelji; sudo cp / tmp / zunanjost.

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 / hosts / externalnyc

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

Naslov = zunanji_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.

Ključi za izmenjavo med zunanjimi in ams1

Postopek tukaj je precej podoben. Če uporabljate ams1, kopirajte konfiguracijsko datoteko gostitelja na externalnyc:

scp / etc / tinc / netname / hosts / ams1 [E-poštni zaščiteni]_public_IP: / tmp

In nato še enkrat kopirajte na pravo mesto z uporabo zunanjega:

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

Ostanite na zunanji strani, kopirajte datoteko drugače, čez ams1:

scp / etc / tinc / netname / hosts / externalnyc [E-poštni zaščiteni]_public_IP: / tmp

In še enkrat, na ams1, kopirajte to datoteko, da je na pravem mestu:

cd / etc / tinc / netname / gostitelji; sudo cp / tmp / zunanjost.

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.

Testiranje

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.

Če želite zagnati Tinc v načinu odpravljanja napak, na vsakem vozlišču, ki se začne z zunanjim, zaženite:

sudo tincd -n neto ime -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.

Zdaj lahko preizkusimo VPN. V novem oknu na ams1, ping internalnyc z njegovim naslovom IP. To smo prej dodelili 10.0.0.2, zato vnesite:

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 škorenj

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:

# Ta datoteka vsebuje vsa imena omrežij, ki jih je treba zagnati ob zagonu sistema. neto ime

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:

začni servisni servis

In igrajte se okoli. S tem ukazom lahko dosežete najbolj osnovno kontrolo.

zaključek

Zdaj morate imeti varno VPN povezavo, ki teče prek Tinc na vseh vaših računalnikih. Ta VPN se lahko uporabi kot osnova za izgradnjo nadaljnjih omrežnih funkcij.

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.

Kakorkoli, sedaj se lahko svobodno igraš. Vso srečo!

viri

(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

vir

oglasi

Pustite Odgovori

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