Инсталирање на VPN со Tinc на Ubuntu 16.04 LTS

 

Виртуелна приватна мрежа (VPN) е безбедна приватна мрежа која работи преку поголема јавна мрежа како што е интернет. Виртуелни приватни мрежи станаа попопуларни во последниве години, главно поради тоа што нудат зголемена безбедност и приватност без потреба од поставување скап и сложени нови хардверски уреди. Тие, исто така, нудат и неколку други предности, вклучително и намалени трошоци за мрежно поврзување и поддршка.

VPNs работат со создавање на шифриран тунел преку јавна мрежа, и користејќи го ова за безбедно испраќање на податоци помеѓу сервери и терминали. Овие врски може да се шифрираат на различни начини, и постојат многу различни VPN клиенти и демони кои одговараат на вашата архитектура, буџет и ниво на искуство.

Tinc е едно такво решение (1,2). Виртуелен сервер VPN со отворен код, сега е достапен за широк опсег на платформи и има неколку предности во однос на слични VPN клиенти. Тој нуди безбедна и сигурна енкрипција, опционална компресија и лесно може да се прошири додека расте мрежата. Автоматското полнење на мрежната мрежа значи дека VPN сообраќајот секогаш (секогаш кога е можно) се испраќа директно до дестинациската машина, без да се врши посредни преноси, а тоа значително ја подобрува безбедноста со ограничување на можноста за кражба на податоци (3). Покрај тоа, бидејќи Tinc VPN се појавува на мрежниот код на IP ниво како нормален мрежен уред, по поставувањето на Tinc VPN нема потреба да се прилагодува постоечкиот софтвер. Ова го прави Tinc VPN инхерентно скалабилни.

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.

Предуслови

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.

Ако сакате точно да го следите ова упатство, прво ќе треба да поставите два VPS-от во истиот центар за податоци, а потоа да направите трет VPS во вториот центар за податоци. Моите центри за податоци се нарекуваат NYC2, кој има два VPS и AMS2, кој го има третиот. Овие VPS се нарекуваат следново:

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.

Цел

Она што сакаме да го постигнеме е следново:

Нашата приватна мрежа е претставена со зелена линија и ги поврзува сите три сервери. Портокаловата е нашата приватна мрежа, поврзувајќи ги двете NYC2 сервери. Сите три сервери можат да се поврзат преку VPN, иако приватната мрежа не е достапна за AMS1.

За да го направите ова, следете ги овие чекори:

Инсталирајте Tinc

Прво, треба да го инсталираме Tinc. Како и секогаш, осигурајте се дека сите ваши АП-репозитори се ажурираат со трчање:

sudo apt-get update

Потоа инсталирајте го Tinc на стандарден начин преку apt:

sudo apt-get инсталирај 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.

конфигурација

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”.

Сега за секој од нашите сервери. Секој ќе треба три компоненти за конфигурација:

Конфигурациските датотеки: tinc.conf, tinc-up, tinc-down и изборниот број на други датотеки.

Парови од јавен и приватен клуч: ова се за енкрипција и автентикација.

Домашни конфигурациски датотеки: Тие содржат јавни клучеви и други конфигурациски елементи на VPN.

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

Конфигурирај externalnyc

Добро, сега на ореви и завртки. На externalnyc, започнете со креирање на структурата на директориумот за конфигурација за VPN интернет-име. Стартувај:

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

Сега отворете tinc.conf во избраниот уредувач на текст:

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

Откако ќе ја имате датотеката пред вас, додајте го следново на дното на датотеката:

Name = externalnyc AddressFamily = ipv4 интерфејс = 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.

Следно, потребно е да создадеме конфигурациска датотека за надворешен сервер. За да го направите ова, отворете ја конфигурациската датотека домаќини во текстуален уредувач:

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

Повторно, додајте некои редови до дното на оваа датотека, заменувајќи ја јавната IP адреса на вашата VPS во првата линија:

Address = externalnyc_public_IP Subnet = 10.0.0.1 / 32

Ова е датотеката што другите сервери ќе ги користат за да се поврзе со externalnyc. Адресата им кажува на другите јазли како и каде да се поврзат со овој сервер, а адресата на подмрежата е подмрежата на која овој демон ќе работи. Повторно, зачувајте ги вашите промени во оваа датотека и затворете го.

Сега ние треба да генерира пар од јавен / приватен клуч за овој домаќин. Ова е лесно, само се кандидира:

sudo tincd -n netname -K4096

Ова го прави приватниот RSA клуч и додава пар на јавни клучеви до крајот на конфигурациската датотека што ја создадовме. Можете да го отворите повторно за да видите дека ова е направено, ако сакате.

Сега, ние треба да направиме tinc-up, мала скрипта која ќе работи кога нашиот VPN се стартува. Отворете ја следнава датотека за уредување:

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

И додадете:

#! / bin / sh ifconfig $ ИНТЕРФЕЈС 10.0.0.1 мрежна маска 255.255.255.0

Секогаш кога се стартува VPN netname, оваа скрипта ќе се изврши. Тоа ќе го направи мрежен интерфејс што ќе го користи нашиот VPN, и на овој VPN externalnyc ќе има ИП на 10.0.0.1.

Но, кога VPN е запрена, ние сакаме овој мрежен интерфејс да исчезне, па ни треба уште една скрипта. Ова треба да биде приложено на врвот надолу. Отворено:

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

И потоа додадете:

#! / bin / sh ifconfig $ ИНТЕРФЕЈС одредување

И повторно спаси и да престанам. Сега имаме свои скрипти, но за да можат да работат тие треба да бидат обележани како извршна. Ова е доволно лесно, користејќи ја командната линија:

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

Зачувај и да се откажеш, и ќе завршиш да го конфигурираш овој сервер. Следно, внатрешно и ams1.

Конфигурирај internalnyc и 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.

Како што направивме со externalnyc погоре, прво треба да ја направиме структурата на директориумот за нашите конфигурациони датотеки. На секој сервер, извршете го следново, а потоа отворете ја конфигурациската датотека Tinc за уредување:

sudo mkdir -p / etc / tinc / netname / hosts
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:

Name = node_name AddressFamily = ipv4 Интерфејс = tun0 ConnectTo = надворешна

Можете да видите дека и двата наши сервери сега се конфигурирани да се обидат да се поврзат со externalnyc. Зачувајте ја оваа датотека и затворете ја.

Сега треба да ја направиме конфигурациската датотека домаќини. Стартувај:

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

Потоа за internalnyc, додадете ја оваа линија:

Подмрежа = 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

И потоа додадете ја оваа линија на двата сервера:

акоконфигурира $ ИНТЕРФЕЈС

И последниот дел од конфигурацијата е да ги извршиме нашите нови скрипти:

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

Зачувај и да се откажеш. Phew. Ако сè излезе добро, сите три сервери сега се конфигурирани. Сега за спроведување на криптографијата.

Дистрибуирање на клучеви

Ако веќе користите систем за управување со конфигурации, имате среќа. Во идеален свет, секој јазол што го направивме сега треба да биде способен директно да разговара со друг јазол користејќи интерфејс за јавен / приватен клуч. Копчињата, како што видовме погоре, се сега во конфигурациските датотеки домаќини за секој сервер. Во едноставната мрежа што ја правиме тука, всушност, само надворешните треба да ги разменуваат клучевите со другите јазли.

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

Клучеви за размена Помеѓу надворешни и внатрешни

Ова е јасно. На internalnyc, пронајдете го конфигурациската датотека на домаќините и копирајте ја во externalnyc:

scp / etc / tinc / netname / hosts / internalnyc [Email заштитени]_private_IP: / tmp

Потоа, на externalnyc, копирајте ја истата датотека на соодветна локација:

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

Сега ја правиме спротивната постапка. На externalnyc, копирајте ја конфигурациската датотека на домаќините на internalnyc:

scp / etc / tinc / netname / hosts / externalnyc [Email заштитени]_private_IP: / tmp

И потоа на внатрешна копија на датотеката, па тоа е на вистинското место:

cd / etc / tinc / netname / hosts; 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 / hosts / externalnyc

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

Address = 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.

Копчиња за размена Помеѓу externalnyc и ams1

Процесот тука е прилично сличен. Користејќи ams1, копирајте ја конфигурациската датотека на домаќините на externalnyc:

scp / etc / tinc / netname / hosts / ams1 [Email заштитени]_public_IP: / tmp

И потоа повторно ископирајте го на вистинското место, користејќи надворешен изглед:

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

Останете на надворешен, копирајте ја датотеката на друг начин, преку ams1:

scp / etc / tinc / netname / hosts / externalnyc [Email заштитени]_public_IP: / tmp

И уште еднаш, на ams1, копирајте ја оваа датотека за да биде на вистинското место:

cd / etc / tinc / netname / hosts; 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.

Тестирање

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.

За да го стартувате Tinc во режим на дебагирање, на секој јазол, почнувајќи со надворешен, стартувај:

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.

Сега можеме да го тестираме VPN. Во нов прозорец на ams1, ping internalnyc користејќи ја својата IP адреса. Ние го назначивме ова на 10.0.0.2 порано, па напишете:

пинг 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.

Тинк на говорница

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:

# Оваа датотека ги содржи сите имиња на мрежите што треба да се стартуваат при стартување на системот. 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:

Започнете со сервисирање на сервиси

И да се играм околу себе. Најосновна контрола може да се постигне преку оваа команда.

заклучок

Сега треба да имате сигурна VPN конекција која работи преку Tinc на сите ваши машини. Овој VPN може да се користи како база за да се изгради дополнителна мрежна функционалност.

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.

Во секој случај, сега можете слободно да играте. Со среќа!

ресурси

(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

извор

реклами

Оставете Одговор

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