Ubuntu 16.04 LTS'de Tinc ile bir VPN yükleme

 

Sanal Özel Ağ (VPN), internet gibi daha geniş bir kamu ağında çalışan güvenli bir özel ağdır. VPN'ler son yıllarda giderek daha popüler hale gelmiştir; çünkü büyük ölçüde pahalı ve karmaşık yeni donanımlar kurmak zorunda kalmadan daha fazla güvenlik ve gizlilik sunmaktadırlar. Ayrıca, azaltılmış ağ ve destek maliyetleri dahil olmak üzere birkaç avantaj sunarlar.

VPN'ler, bir ortak ağ üzerinden şifrelenmiş bir tünel oluşturarak ve sunucular ve terminaller arasında güvenli bir şekilde veri göndermek için bunu kullanarak çalışır. Bu bağlantılar çeşitli şekillerde şifrelenebilir ve mimarinize, bütçenize ve deneyim düzeyinize uygun çok sayıda farklı VPN istemcisi ve daemonu vardır.

Tinc böyle bir çözümdür (1,2). Açık kaynaklı bir VPN sunucusu, şu anda çok çeşitli platformlar için kullanılabilir ve benzer VPN istemcilerine göre çeşitli avantajlara sahiptir. Güvenli ve güvenilir şifreleme, isteğe bağlı sıkıştırma özellikleri sunar ve ağınız büyüdükçe kolayca genişletilebilir. Otomatik tam örgü yönlendirmesi, VPN trafiğinin her zaman (mümkün olduğunda) doğrudan ara makineye gönderilmeden, ara transferler yapılmadan gönderilmesi anlamına gelir ve bu da veri hırsızlığı (3) olasılığını sınırlayarak güvenliği büyük ölçüde artırır. Buna ek olarak, Tinc VPN IP ağ seviyesinde normal ağ aygıtı olarak göründüğünden, bir Tinc VPN kurduktan sonra mevcut yazılımı uyarlamaya gerek yoktur. Bu, Tinc VPN'in doğal olarak ölçeklenebilir olmasını sağlar.

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.

Ön Koşullar

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.

Bu öğreticiyi tam olarak izlemek istiyorsanız, önce aynı veri merkezinde iki VPS kurmanız ve ardından ikinci bir veri merkezinde üçüncü bir VPS oluşturmanız gerekir. Veri merkezlerim, iki VPS'ye sahip olan NYC2 ve üçüncüsü olan AMS2 olarak adlandırılıyor. Bu VPS'lere aşağıdakiler denir:

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.

Gol

Elde etmek istediğimiz şudur:

Özel ağımız yeşil hat ile temsil edilir ve her üç sunucuyu da bağlar. Turuncu, iki NYC2 sunucusunu birbirine bağlayan özel ağımızdır. Özel ağ AMS1 için erişilebilir olmasa da, üç sunucunun tümü VPN üzerinden bağlanabilir.

Bunu yapmak için şu adımları izleyin:

Tinc yükleyin

İlk önce Tinc'i kurmamız gerek. Her zaman olduğu gibi, tüm uygun depolarınızın çalışır durumda olduğundan emin olun:

sudo apt-get update

Tinc'i apt yoluyla standart şekilde yükleyin:

sudo apt-get tinc yüklemek

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.

yapılandırma

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

Şimdi her sunucumuz için. Her birinin üç yapılandırma bileşenine ihtiyacı olacak:

Yapılandırma dosyaları: tinc.conf, tinc-up, tinc-down ve isteğe bağlı diğer dosya sayısı.

Genel ve özel anahtar çiftleri: bunlar şifreleme ve kimlik doğrulaması içindir.

Ana makine yapılandırma dosyaları: Bunlar ortak anahtarlar ve diğer VPN yapılandırma öğelerini içerir.

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

Externalnyc yapılandır

Tamam, şimdi somun ve civatalara. Externalnyc'te, VPN ağ adı için yapılandırma dizin yapısını oluşturarak başlayın. Koşmak:

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

Şimdi seçtiğiniz metin editöründe tinc.conf dosyasını açın:

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

Dosyayı önünüze aldıktan sonra, aşağıdakileri dosyanın altına ekleyin:

İsim = externalnyc AddressFamily = ipv4 Arabirim = 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.

Sırada, externalnyc için bir ana bilgisayar yapılandırma dosyası oluşturmamız gerekiyor. Bunu yapmak için, ana bilgisayar yapılandırma dosyasını bir metin düzenleyicisinde açın:

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

Yine, bu dosyanın dibine, VPS'nizin genel IP adresini ilk satırdaki yerine birkaç satır ekleyin:

Adres = externalnyc_public_IP Alt ağ = 10.0.0.1 / 32

Bu, diğer sunucuların externalnyc'e bağlanmak için kullanacağı dosyadır. Adres, diğer düğümlere bu sunucuya nasıl ve nerede bağlanacağını söyler ve alt ağ adresi bu arka planın çalışacağı alt ağdır. Yine, değişikliklerinizi bu dosyaya kaydedin ve kapatın.

Şimdi bu ana bilgisayar için ortak / özel anahtar çifti oluşturmamız gerekiyor. Bu yeterince kolay, sadece koş:

sudo tincd -n netname -K4096

Bu, özel bir RSA anahtarı yapar ve yeni oluşturduğumuz yapılandırma dosyasının sonuna bir ortak anahtar çifti ekler. İsterseniz bunun yapıldığını görmek için tekrar açabilirsiniz.

Şimdi, VPN başlatıldığında çalışacak küçük bir betik olan tinc-up yapmamız gerekiyor. Düzenlemek için aşağıdaki dosyayı açın:

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

Ve Ekle:

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

VPN netname her başlatıldığında, bu betik çalışır. VPN'imiz tarafından kullanılacak bir ağ arabirimi oluşturacak ve bu VPN'de harici bir 10.0.0.1 IP'si olacaktır.

Ancak VPN durdurulduğunda, bu ağ arayüzünün kaybolmasını istiyoruz, bu yüzden bir tane daha komut dosyasına ihtiyacımız var. Bu tinc-down için eklenmelidir. Açık:

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

Ve sonra ekle:

#! / bin / sh ifconfig $ INTERFACE aşağı

Ve tekrar kaydedin ve çıkın. Artık komut dosyalarımız var, ancak çalışabilmeleri için çalıştırılabilir olarak işaretlenmeleri gerekiyor. Bu, komut satırını kullanarak yeterince kolaydır:

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

Kaydet ve çık ve bu sunucuyu yapılandırmayı bitirdin. Sıradaki, internalnyc ve ams1.

Internalnyc ve ams1 yapılandırma

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.

Yukarıda externalnyc ile yaptığımız gibi, öncelikle yapılandırma dosyalarımız için dizin yapısını yapmalıyız. Her bir sunucuda, aşağıdakileri çalıştırın ve düzenlemek için Tinc yapılandırma dosyasını açın:

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 Arabirim = tun0 ConnectTo = externalnyc

Her iki sunucumuzun artık externalnyc'e bağlanmaya çalışacak şekilde yapılandırıldığını görebilirsiniz. Bu dosyayı kaydedin ve kapatın.

Şimdi ana yapılandırma dosyasını yapmalıyız. Koşmak:

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

Sonra internalnyc için bu satırı ekleyin:

Alt ağ = 10.0.0.2 / 32

Ve ams1 için bu satırı ekleyin:

Alt ağ = 10.0.0.3 / 32

Buradaki tek fark, adreslerin farklı olması, sunucularımıza ayrı bir şey söyleyebiliriz. Bu dosyayı kaydedin ve kapatın.

Şimdi, daha önce olduğu gibi, kamu / özel anahtar çiftlerimizi oluşturmalı ve ağ arabirimi başlangıç ​​komut dosyasını oluşturmalıyız. Her sunucuda şunu çalıştırın:

sudo tincd -n netname -K4096

Ve sonra:

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

Şimdi. Her sunucu için daha önce belirttiğimiz adresleri kullanmamız gerekiyor. Beni tam olarak takip ediyorsanız, internalnyc için şunları eklemeniz gerekir:

ifconfig $ INTERFACE 10.0.0.2 netmask 255.255.255.0

Ve ams1 için:

ifconfig $ INTERFACE 10.0.0.3 netmask 255.255.255.0

Ancak, yukarıda farklı adresler belirttiyseniz, bunları da burada değiştirin. Bu dosyaları kaydedin ve çıkın. Neredeyse geldik.

Sadece daha önce olduğu gibi ağ arayüzü stop komut dosyasını yapmamız gerekiyor:

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

Ve sonra bu satırı her iki sunucuya ekleyin:

INTERFACE $ değerinde ifconfig

Ve en son yapılandırma, yeni komut dosyalarımızı çalıştırılabilir yapmaktır:

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

Kaydet ve çık. Uf. Her şey yolunda giderse, üç sunucunun hepsi şimdi yapılandırılmıştır. Şimdi kriptografiyi uygulamak için.

Dağıtım Anahtarları

Eğer bir yapılandırma yönetim sistemi kullanıyorsanız, şanslısınız demektir. İdeal bir dünyada, şu anda sahip olduğumuz her düğümün bir kamu / özel anahtar arayüzü kullanarak başka bir düğümle doğrudan konuşabilmesi gerekiyor. Anahtarlar, yukarıda gördüğümüz gibi, her sunucu için ana makine yapılandırma dosyalarında. Burada yaptığımız basit ağda, aslında sadece externalnyc'in diğer düğümlerle anahtar değişimi yapması gerekiyor.

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

Externalnyc ve internalnyc arasındaki Exchange anahtarları

Bu basittir. Internalnyc'te, host yapılandırma dosyasını bulun ve externalnyc dosyasına kopyalayın:

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

Sonra, externalnyc'de, aynı dosyayı uygun konuma kopyalayın:

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

Şimdi karşı prosedürü yapıyoruz. Externalnyc'te, hosts yapılandırma dosyasını internalnyc'e kopyalayın:

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

Ve sonra internalnyc'de dosyayı kopyalayın, böylece doğru yerdesiniz:

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:

Adres = 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 ve ams1 Arasındaki Exchange Anahtarları

Buradaki süreç oldukça benzer. Ams1 kullanarak, hosts yapılandırma dosyasını externalnyc'e kopyalayın:

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

Ve sonra tekrar externalnyc kullanarak doğru yere kopyalayın:

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

Externalnyc'de kalıyor, dosyayı diğer yoldan ams1'e kopyalayın:

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

Ve bir kez daha, ams1 üzerinde, bu dosyayı doğru yerde bulunacak şekilde kopyalayın:

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.

Test yapmak

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'i hata ayıklama modunda başlatmak için, her bir düğümde externalnyc ile başlayarak aşağıdakileri çalıştırın:

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.

Şimdi, VPN'yi test edebiliriz. Ams1 üzerinde yeni bir pencerede, IP adresini kullanarak ping internalnyc. Bunu daha önce 10.0.0.2 olarak atadık, bu yüzden şunu yazın:

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 On Boot

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:

# Bu dosya, sistem başlangıcında başlatılacak ağların tüm isimlerini içerir. 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 hizmeti tinc başlangıç

Ve etrafta bir oyun var. En temel kontrol bu komutla sağlanabilir.

Sonuç

Artık tüm makinelerinizde Tinc ile çalışan güvenli bir VPN bağlantınız olmalıdır. Bu VPN, daha fazla ağ işlevselliği oluşturmak için bir temel olarak kullanılabilir.

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.

Her iki durumda da, artık oynamak için özgürsünüz. İyi şanslar!

kaynaklar

(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

Kaynak

Reklamlar

Yanıt Ver

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