Tinc Kurulumu ve Ubuntu 18.04 Üzerinde Temel Bir VPN Yapılandırması
Tinc, çok yönlü ve esnek bir ağ sanallaştırma yazılımıdır. Geleneksel VPN çözümlerinden farklı olarak, Tinc bir istemci-sunucu modeline bağlı kalmak yerine, düğümler arasında doğrudan bağlantılar kurabilen bir mesh (örgü) VPN oluşturma yeteneğine sahiptir. Bu makalede, Tinc’in Ubuntu 18.04 işletim sistemi üzerinde nasıl kurulacağını ve temel bir VPN ağının nasıl yapılandırılacağını adım adım açıklayacağız. Bu sayede, farklı coğrafi konumlardaki sunucularınızı veya cihazlarınızı tek bir sanal ağ altında birleştirerek güvenli iletişim sağlayabilirsiniz.
Tinc, özellikle dağıtık sistemler, IoT cihazları veya birden fazla bulut sağlayıcısında barındırılan sunucular arasında güvenli ve esnek bir iletişim katmanı oluşturmak isteyenler için ideal bir çözümdür. OpenVPN gibi daha bilinen çözümlere göre yapılandırması biraz daha farklı olsa da, sunduğu mesh yapısı ve peer-to-peer (eşten-eşe) bağlantı yeteneği sayesinde büyük avantajlar sağlar.
Tinc VPN Nedir ve Neden Kullanılmalıdır?
Tinc, sanal özel ağlar (VPN’ler) oluşturmak için tasarlanmış açık kaynaklı bir yazılımdır. Ancak, çoğu VPN çözümünden ayrılan temel özelliği, merkezi bir sunucuya ihtiyaç duymadan, ağdaki tüm düğümlerin birbirine doğrudan bağlanabildiği bir “mesh” veya “örgü” topoloji oluşturabilmesidir. Bu, bir düğümün diğerine ulaşmak için mutlaka merkezi bir sunucu üzerinden geçmek zorunda olmadığı anlamına gelir. Eğer doğrudan bir bağlantı mümkünse (örneğin, güvenlik duvarı veya NAT arkasında değillerse), Tinc bu doğrudan bağlantıyı tercih eder. Aksi takdirde, diğer düğümler üzerinden yönlendirme yaparak iletişimi sağlar.
Tinc’in Temel Özellikleri ve Avantajları:
* Mesh VPN Topolojisi: Her düğüm diğer herhangi bir düğümle doğrudan iletişim kurabilir. Bu, ağın daha esnek, dayanıklı ve ölçeklenebilir olmasını sağlar. Merkezi bir sunucunun çökmesi tüm ağı etkilemez.
* Kolay Yapılandırma: Temel bir kurulum için nispeten basit yapılandırma dosyaları gerektirir.
* Platform Bağımsızlığı: Linux, Windows, macOS ve diğer birçok UNIX benzeri sistemde çalışır.
* Güvenlik: Tüm trafik, OpenSSL kullanılarak güçlü şifreleme algoritmalarıyla şifrelenir. Her düğümün kendi anahtar çifti vardır.
* NAT Geçişi: Çoğu zaman, düğümlerin genel IP adresleri olmasa bile (NAT arkasında olsalar bile) birbirleriyle iletişim kurmalarını sağlayabilir.
* IPv6 Desteği: Hem IPv4 hem de IPv6 trafiğini tünelleyebilir.
* Esneklik: VPN üzerinden belirli alt ağları veya tüm trafiği yönlendirebilir.
Tinc, özellikle birden fazla lokasyonda sunucuları olan veya farklı bulut sağlayıcılarında dağıtık sistemler çalıştıran kuruluşlar için idealdir. Ayrıca, evdeki farklı cihazları (Raspberry Pi’ler, sunucular vb.) güvenli bir şekilde birbirine bağlamak için de kullanılabilir.
Ön Gereksinimler
Tinc kurulumuna başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olunuz:
* İki veya Daha Fazla Ubuntu 18.04 Sunucusu/Sanal Makinesi: Bu rehberde en az iki düğüm üzerinden ilerleyeceğiz. Her düğümün kendi genel IP adresi veya en azından bir düğümün genel IP adresi olması gerekmektedir (NAT geçişi için).
* SSH Erişimi: Her sunucuya SSH üzerinden erişiminizin olması gerekmektedir.
* sudo Yetkileri: Kurulum ve yapılandırma adımları için sudo yetkilerine sahip bir kullanıcı.
* Temel Ağ Bilgisi: IP adresleri, alt ağlar ve yönlendirme (routing) hakkında temel anlayış.
* Güvenlik Duvarı (UFW) Bilgisi: Sunucularınızda UFW (Uncomplicated Firewall) veya başka bir güvenlik duvarı kullanılıyorsa, Tinc’in kullanacağı portu açmanız gerekecektir.
Bu rehber, iki düğümlü bir VPN ağı kurmayı hedefleyecektir: “node1” ve “node2”.
* node1:
* Genel IP: 203.0.113.1 (Örnek)
* VPN Sanal IP: 10.0.0.1
* node2:
* Genel IP: 203.0.113.2 (Örnek)
* VPN Sanal IP: 10.0.0.2
VPN ağımızın adı myvpn olacak ve sanal IP aralığı 10.0.0.0/24 olacaktır.
Tinc Kurulum Adımları
Her bir düğüm üzerinde aşağıdaki adımları tekrarlamanız gerekmektedir.
Sistem Güncelleme
Kuruluma başlamadan önce, paket listelerini güncelleyip mevcut paketleri yükseltmek iyi bir uygulamadır:
sudo apt update
sudo apt upgrade -y
Tinc Kurulumu
Tinc paketi Ubuntu’nun resmi depolarında mevcuttur. Aşağıdaki komut ile kolayca kurabilirsiniz:
sudo apt install tinc -y
Kurulum tamamlandıktan sonra, Tinc servisinin sistemde yüklü olduğunu ancak henüz yapılandırılmadığı için çalışmadığını göreceksiniz.
VPN Ağının Yapılandırılması
Bu bölüm, Tinc VPN ağının temel yapılandırma adımlarını içermektedir. Her düğüm için benzer adımlar uygulanacak, ancak bazı dosyaların içeriği düğüme özel olacaktır.
Ağ Dizini Oluşturma
Tinc, her VPN ağı için ayrı bir yapılandırma dizini kullanır. Ağımızın adını myvpn olarak belirledik. Bu dizini oluşturun:
sudo mkdir -p /etc/tinc/myvpn/hosts
Bu komut, /etc/tinc/myvpn dizinini ve bunun altındaki hosts dizinini oluşturacaktır. myvpn dizini, ağa özel yapılandırma dosyalarını (tinc.conf, tinc-up, tinc-down) ve anahtar çiftlerini barındırırken, hosts dizini ağdaki diğer düğümlerin herkese açık anahtarlarını ve yapılandırma bilgilerini saklayacaktır.
Anahtar Çifti Oluşturma
Her Tinc düğümü, güvenli iletişim için bir RSA anahtar çiftine ihtiyaç duyar. Bu anahtarlar, Tinc’in şifreleme ve kimlik doğrulama süreçlerinde kullanılır. Aşağıdaki komut, mevcut düğüm için bir anahtar çifti oluşturacaktır:
sudo tincd -n myvpn -K
Bu komutu çalıştırdığınızda, Tinc sizden bir dosya adı isteyecektir. Varsayılan olarak düğümün hostname’ini önerir. Örneğin, node1 için node1 veya node2 için node2 yazabilirsiniz. Bu, /etc/tinc/myvpn/hosts/ dizini altında bir dosya oluşturacak ve bu dosya hem herkese açık anahtarı (public key) hem de özel anahtarı (private key) içerecektir. Özel anahtarınızı asla kimseyle paylaşmayın!
Komutun çıktısı şöyle görünecektir:
Generating 2048 bits rsa keypair.
Please enter a file to save the private key in [/etc/tinc/myvpn/hosts/node1]:
Burada node1 (veya ilgili düğüm adı) yazıp Enter tuşuna basın.
Bu işlem sonucunda, /etc/tinc/myvpn/hosts/node1 (veya /etc/tinc/myvpn/hosts/node2) dosyası oluşturulacaktır. Bu dosyanın içinde hem herkese açık anahtar (public key) hem de özel anahtar (private key) bulunacaktır.
Düğüm Yapılandırması Detayları
Şimdi her düğüm için özel yapılandırma dosyalarını oluşturalım.
Düğüm 1 (node1) Yapılandırması
SSH ile node1 sunucusuna bağlanın.
tinc.conf Dosyası
Bu dosya, Tinc daemon’unun temel davranışını tanımlar.
sudo nano /etc/tinc/myvpn/tinc.conf
İçeriği aşağıdaki gibi olmalıdır:
# /etc/tinc/myvpn/tinc.conf for node1
Name = node1
AddressFamily = ipv4
Interface = myvpn
Port = 655
Mode = switch
PrivateKeyFile = /etc/tinc/myvpn/rsa_key.priv (Eğer -K komutuyla farklı bir isimle kaydettiyseniz)
* Name = node1: Bu düğümün ağdaki adıdır. Diğer düğümler bu adı kullanarak bu düğüme bağlanır.
* AddressFamily = ipv4: IPv4 trafiğini tünelleyeceğimizi belirtir. IPv6 için ipv6 veya her ikisi için any kullanabilirsiniz.
* Interface = myvpn: Tinc’in oluşturacağı sanal ağ arayüzünün adıdır.
* Port = 655: Tinc’in gelen bağlantıları dinleyeceği UDP portudur. Varsayılan 655’tir, değiştirebilirsiniz ancak güvenlik duvarında da açmanız gerekir.
* Mode = switch: Tinc’in bir ethernet anahtarı gibi davranmasını sağlar, bu da tüm düğümlerin aynı sanal alt ağda olmasını ve doğrudan birbirleriyle iletişim kurmasını mümkün kılar.
tinc-up Betiği
Bu betik, Tinc arayüzü ayağa kalktığında çalışır ve sanal ağ arayüzüne IP adresi atar ve gerekirse yönlendirme kuralları ekler.
sudo nano /etc/tinc/myvpn/tinc-up
İçeriği aşağıdaki gibi olmalıdır:
#!/bin/sh
/etc/tinc/myvpn/tinc-up for node1
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0
Ya da ip komutunu kullanabilirsiniz:
ip link set $INTERFACE up
ip addr add 10.0.0.1/24 dev $INTERFACE
* $INTERFACE: Tinc tarafından otomatik olarak atanacak olan sanal arayüz adıdır (myvpn).
* 10.0.0.1: Bu düğümün VPN ağı içindeki sanal IP adresidir.
* netmask 255.255.255.0: VPN ağının alt ağ maskesidir.
Betiği çalıştırılabilir hale getirin:
sudo chmod 755 /etc/tinc/myvpn/tinc-up
tinc-down Betiği
Bu betik, Tinc arayüzü kapatıldığında çalışır ve atanan IP adresini kaldırır.
sudo nano /etc/tinc/myvpn/tinc-down
İçeriği aşağıdaki gibi olmalıdır:
#!/bin/sh
/etc/tinc/myvpn/tinc-down
ifconfig $INTERFACE down
Ya da ip komutunu kullanabilirsiniz:
ip addr del 10.0.0.1/24 dev $INTERFACE
ip link set $INTERFACE down
Betiği çalıştırılabilir hale getirin:
sudo chmod 755 /etc/tinc/myvpn/tinc-down
Host Dosyası (/etc/tinc/myvpn/hosts/node1)
Bu dosya, anahtar çifti oluşturulduğunda otomatik olarak oluşmuştur. Şimdi içine bu düğümün genel IP adresini ve VPN alt ağını eklememiz gerekiyor.
sudo nano /etc/tinc/myvpn/hosts/node1
Dosyanın en altına aşağıdaki satırları ekleyin (mevcut -----BEGIN RSA PUBLIC KEY----- ve -----END RSA PUBLIC KEY----- satırlarına dokunmayın):
# /etc/tinc/myvpn/hosts/node1
Address = 203.0.113.1 # node1'in genel IP adresi
Subnet = 10.0.0.1/32 # node1'in VPN içindeki sanal IP adresi
Port = 655 # Tinc'in dışarıdan bağlanacağı port
* Address = 203.0.113.1: Bu, node1‘in dış dünyadan erişilebilen genel IP adresidir. Eğer node1 bir NAT arkasındaysa ve port yönlendirme yapıldıysa, buraya yönlendirme yapılan genel IP adresini yazın.
* Subnet = 10.0.0.1/32: Tinc’in bu düğüm üzerinden 10.0.0.1 IP adresine ulaşabileceğini belirtir. /32 maskesi, sadece bu IP adresinin bu düğüme ait olduğunu gösterir.
Düğüm 2 (node2) Yapılandırması
Şimdi SSH ile node2 sunucusuna bağlanın ve aynı adımları tekrarlayın, ancak düğüme özel bilgileri (isim, IP adresleri) doğru girdiğinizden emin olun.
tinc.conf Dosyası
sudo nano /etc/tinc/myvpn/tinc.conf
İçeriği aşağıdaki gibi olmalıdır:
# /etc/tinc/myvpn/tinc.conf for node2
Name = node2
AddressFamily = ipv4
Interface = myvpn
Port = 655
Mode = switch
ConnectTo = node1 # Burası önemli! node1'e bağlanmasını söylüyoruz.
* Name = node2: Bu düğümün ağdaki adıdır.
* ConnectTo = node1: Bu satır, Tinc’e ağdaki hangi düğüme bağlanarak ağı keşfetmeye başlayacağını söyler. En az bir düğüme bağlanmanız gerekir. node1‘in ConnectTo satırı içermemesi, onun “merkezi” bir başlangıç noktası olacağı anlamına gelmez, sadece o da başka bir düğüme bağlanabilir. Mesh yapısında her düğüm diğerini keşfeder.
tinc-up Betiği
sudo nano /etc/tinc/myvpn/tinc-up
İçeriği aşağıdaki gibi olmalıdır:
#!/bin/sh
/etc/tinc/myvpn/tinc-up for node2
ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0
Ya da ip komutunu kullanabilirsiniz:
ip link set $INTERFACE up
ip addr add 10.0.0.2/24 dev $INTERFACE
Betiği çalıştırılabilir hale getirin:
sudo chmod 755 /etc/tinc/myvpn/tinc-up
tinc-down Betiği
sudo nano /etc/tinc/myvpn/tinc-down
İçeriği aşağıdaki gibi olmalıdır:
#!/bin/sh
/etc/tinc/myvpn/tinc-down
ifconfig $INTERFACE down
Ya da ip komutunu kullanabilirsiniz:
ip addr del 10.0.0.2/24 dev $INTERFACE
ip link set $INTERFACE down
Betiği çalıştırılabilir hale getirin:
sudo chmod 755 /etc/tinc/myvpn/tinc-down
Host Dosyası (/etc/tinc/myvpn/hosts/node2)
sudo nano /etc/tinc/myvpn/hosts/node2
Dosyanın en altına aşağıdaki satırları ekleyin:
# /etc/tinc/myvpn/hosts/node2
Address = 203.0.113.2 # node2'nin genel IP adresi
Subnet = 10.0.0.2/32 # node2'nin VPN içindeki sanal IP adresi
Port = 655 # Tinc'in dışarıdan bağlanacağı port
Host Dosyalarını Paylaşma
Bu adım, Tinc mesh ağının çalışması için kritik öneme sahiptir. Her düğüm, diğer düğümlerin herkese açık anahtarlarını ve genel IP adreslerini içeren host dosyalarına sahip olmalıdır.
* node1’den node2’nin host dosyasını alın:
* node2 üzerinde /etc/tinc/myvpn/hosts/node2 dosyasının içeriğini kopyalayın.
* node1 üzerinde /etc/tinc/myvpn/hosts/node2 adında yeni bir dosya oluşturun ve kopyaladığınız içeriği yapıştırın.
* node2’den node1’in host dosyasını alın:
* node1 üzerinde /etc/tinc/myvpn/hosts/node1 dosyasının içeriğini kopyalayın.
* node2 üzerinde /etc/tinc/myvpn/hosts/node1 adında yeni bir dosya oluşturun ve kopyaladığınız içeriği yapıştırın.
Özetle, her düğümün /etc/tinc/myvpn/hosts/ dizininde kendi host dosyası (özel anahtarı da içeren) ve ağdaki diğer her düğümün host dosyası (sadece herkese açık anahtarı içeren) bulunmalıdır.
Örnek (node1 üzerinde):
# node1 üzerinde
ls -l /etc/tinc/myvpn/hosts/
Çıktı şöyle olmalı:
-rw------- 1 root root 1000 Tem 20 10:00 node1 # Kendi host dosyası (private key içerir)
-rw-r--r-- 1 root root 500 Tem 20 10:05 node2 # node2'den kopyalanmış host dosyası (sadece public key içerir)
Örnek (node2 üzerinde):
# node2 üzerinde
ls -l /etc/tinc/myvpn/hosts/
Çıktı şöyle olmalı:
-rw-r--r-- 1 root root 500 Tem 20 10:05 node1 # node1'den kopyalanmış host dosyası (sadece public key içerir)
-rw------- 1 root root 1000 Tem 20 10:00 node2 # Kendi host dosyası (private key içerir)
Bu kopyalama işlemini SCP (Secure Copy Protocol) ile yapabilirsiniz:
Örneğin, node1‘den node2‘nin host dosyasını almak için node1 üzerinde:
# node1 üzerinde
scp user@203.0.113.2:/etc/tinc/myvpn/hosts/node2 /etc/tinc/myvpn/hosts/node2
Ve node2‘den node1‘in host dosyasını almak için node2 üzerinde:
# node2 üzerinde
scp user@203.0.113.1:/etc/tinc/myvpn/hosts/node1 /etc/tinc/myvpn/hosts/node1
user yerine SSH kullanıcı adınızı ve IP adresleri yerine sunucularınızın gerçek genel IP adreslerini kullanmayı unutmayın.
Güvenlik Duvarı Ayarları (UFW)
Tinc’in düzgün çalışabilmesi için, düğümlerin Tinc portu üzerinden birbirleriyle iletişim kurabilmesi gerekir. Varsayılan olarak Tinc UDP portu 655’i kullanır. Her düğüm üzerinde bu portu açmanız gerekmektedir.
sudo ufw allow 655/udp
sudo ufw enable # Eğer UFW etkin değilse
sudo ufw status # Kontrol etmek için
IP Yönlendirmeyi Etkinleştirme (Gerekirse)
Eğer Tinc VPN’i sadece düğümler arasında iletişim kurmak için değil, aynı zamanda VPN üzerinden başka alt ağlara veya internete erişim sağlamak için kullanacaksanız, IP yönlendirmeyi etkinleştirmeniz gerekebilir. Bu, özellikle bir düğümün diğer alt ağlar için bir ağ geçidi (gateway) olarak işlev görmesini istediğinizde önemlidir.
/etc/sysctl.conf dosyasını düzenleyin:
sudo nano /etc/sysctl.conf
Aşağıdaki satırı bulun ve yorum satırı # işaretini kaldırarak etkinleştirin (veya ekleyin):
net.ipv4.ip_forward = 1
Değişiklikleri kaydettikten sonra sysctl ayarlarını yeniden yükleyin:
sudo sysctl -p
Bu, her iki düğümde de yapılmalıdır, ancak sadece yönlendirme yapacak düğümde bu ayarın aktif olması yeterlidir.
Tinc Servisini Başlatma ve Yönetme
Tüm yapılandırma adımlarını tamamladıktan sonra, Tinc servisini başlatabilir ve açılışta otomatik olarak başlamasını sağlayabilirsiniz.
Servisi Başlatma
Her düğümde aşağıdaki komutu çalıştırın:
sudo systemctl start tinc@myvpn
tinc@myvpn ifadesindeki @myvpn, Tinc’e myvpn ağ yapılandırmasını kullanmasını söyler.
Servisin Durumunu Kontrol Etme
Servisin düzgün çalışıp çalışmadığını kontrol etmek için:
sudo systemctl status tinc@myvpn
Çıktı Active: active (running) ve Loaded: loaded gibi ifadeler içermelidir. Ayrıca, Tinc’in diğer düğümlere bağlanmaya çalıştığını veya bağlandığını gösteren log mesajları da görebilirsiniz.
Açılışta Otomatik Başlatma
Sistemin yeniden başlatılmasından sonra Tinc’in otomatik olarak başlamasını sağlamak için:
sudo systemctl enable tinc@myvpn
Günlükleri Kontrol Etme
Herhangi bir sorun yaşamanız durumunda, Tinc’in günlüklerini kontrol etmek faydalı olacaktır:
sudo journalctl -u tinc@myvpn -f
Bu komut, Tinc servisinin gerçek zamanlı günlüklerini gösterecektir (-f bayrağı “follow” anlamına gelir).
Bağlantıyı Test Etme
Tinc servisi her iki düğümde de çalışmaya başladıktan sonra, VPN bağlantısının başarılı olup olmadığını test edebiliriz.
Sanal Arayüzü Kontrol Etme
Her iki düğümde de myvpn arayüzünün oluştuğunu ve doğru IP adresini aldığını kontrol edin:
ip a show myvpn
Veya eski ifconfig komutu ile:
ifconfig myvpn
Çıktıda myvpn arayüzünün 10.0.0.1 (node1 için) veya 10.0.0.2 (node2 için) IP adresini aldığını görmelisiniz.
Ping ile Test Etme
Şimdi bir düğümden diğerinin VPN IP adresine ping atarak bağlantıyı test edin.
node1 üzerinden node2’ye ping atın:
ping 10.0.0.2
node2 üzerinden node1’e ping atın:
ping 10.0.0.1
Eğer ping komutları başarılı olursa, Tinc VPN ağınız başarıyla kurulmuş ve çalışıyor demektir! Artık bu iki düğüm, internet üzerinden güvenli ve şifreli bir şekilde iletişim kurabilir.
Gelişmiş Yapılandırma ve İpuçları
Temel bir Tinc VPN ağı kurmuş olsanız da, Tinc’in daha gelişmiş özellikleri ve kullanım senaryoları mevcuttur.
Daha Fazla Düğüm Ekleme
Mesh yapının güzelliği, ağa yeni düğümler eklemenin kolay olmasıdır. Yeni bir düğüm eklemek için:
1. Yeni düğüme Tinc’i kurun.
2. Yeni düğüm için anahtar çifti oluşturun (sudo tincd -n myvpn -K).
3. Yeni düğümün tinc.conf, tinc-up ve tinc-down dosyalarını uygun şekilde yapılandırın (kendi adı ve VPN IP adresi ile).
4. Yeni düğümün host dosyasını (public key ve genel IP içeren) tüm mevcut düğümlere kopyalayın.
5. Tüm mevcut düğümlerin host dosyalarını (public key içeren) yeni düğüme kopyalayın.
6. Yeni düğümün tinc.conf dosyasına ağdaki mevcut bir düğüme ConnectTo satırı ekleyin.
7. Güvenlik duvarında 655/udp portunu açın.
8. Tinc servisini başlatın ve etkinleştirin.
Tinc, otomatik olarak yeni düğümle diğerleri arasındaki bağlantıları keşfedecek ve kuracaktır.
Routing (Yönlendirme) Senaryoları
Tinc sadece düğümler arasında doğrudan iletişim sağlamakla kalmaz, aynı zamanda farklı alt ağları da birbirine bağlayabilir. Eğer bir düğüm, kendi yerel ağındaki başka bir alt ağı Tinc VPN üzerinden erişilebilir kılmak isterse, o düğümün host dosyasına Subnet satırına ilgili alt ağı eklemesi gerekir.
Örneğin, node1‘in 192.168.1.0/24 alt ağına sahip olduğunu ve bu alt ağın VPN üzerinden erişilebilir olmasını istediğini varsayalım. node1‘in /etc/tinc/myvpn/hosts/node1 dosyasına aşağıdaki satırı eklersiniz:
Subnet = 192.168.1.0/24
Bu, Tinc’e 192.168.1.0/24 alt ağına gönderilen trafiğin node1 üzerinden yönlendirilmesi gerektiğini söyler. Ayrıca, node1‘in bu alt ağa yönlendirme yapabilmesi için IP yönlendirme (net.ipv4.ip_forward = 1) ayarının etkin olması ve gerekirse NAT kuralları tanımlanması gerekebilir.
Persistent Keepalive
Bazı ağ ortamlarında (özellikle NAT arkasında), bağlantılar belirli bir süre etkinlik olmadığında kapanabilir. Tinc’in tinc.conf dosyasında PingInterval ayarını kullanarak düzenli aralıklarla “keepalive” paketleri göndermesini sağlayabilirsiniz.
# /etc/tinc/myvpn/tinc.conf
PingInterval = 10 # Her 10 saniyede bir ping gönderir
Bu, bağlantının canlı kalmasına yardımcı olur.
Sorun Giderme
Tinc kurulumu sırasında veya sonrasında bazı sorunlarla karşılaşabilirsiniz. İşte yaygın sorunlar ve çözümleri:
* Düğümler Birbirine Ping Atamıyor:
* Güvenlik Duvarı: En yaygın sorun budur. Her iki düğümde de Tinc’in kullandığı UDP portunun (varsayılan 655) güvenlik duvarında açık olduğundan emin olun (sudo ufw status).
* Genel IP Adresleri: Host dosyalarındaki Address satırlarının doğru genel IP adreslerini içerdiğinden emin olun.
* NAT Sorunları: Eğer düğümlerden biri veya ikisi de NAT arkasındaysa, genel IP adresleri ve port yönlendirmelerinin doğru yapıldığından emin olun.
* Host Dosyaları: Her düğümün /etc/tinc/myvpn/hosts/ dizininde kendi host dosyası ve diğer tüm düğümlerin host dosyaları olduğundan emin olun. Host dosyalarının içeriğini (özellikle public key kısımlarını) kontrol edin.
* Sanal IP Adresleri: tinc-up betiklerinde atanan sanal IP adreslerinin benzersiz olduğundan ve doğru alt ağda olduğundan emin olun.
* Tinc Servis Durumu: Her iki düğümde de Tinc servisinin çalıştığından emin olun (sudo systemctl status tinc@myvpn).
* Günlükleri Kontrol Edin: sudo journalctl -u tinc@myvpn -f komutuyla Tinc günlüklerini kontrol edin. Bağlantı sorunlarıyla ilgili ipuçları bulabilirsiniz.
* myvpn Arayüzü Oluşmuyor:
* tinc-up betiğinin çalıştırılabilir olduğundan emin olun (sudo chmod 755 /etc/tinc/myvpn/tinc-up).
* tinc.conf dosyasındaki Interface adının doğru olduğundan emin olun.
* Tinc servisini yeniden başlatmayı deneyin (sudo systemctl restart tinc@myvpn).
* Yönlendirme Çalışmıyor (Alt Ağlara Erişim):
* net.ipv4.ip_forward = 1 ayarının /etc/sysctl.conf içinde etkin olduğundan ve sudo sysctl -p ile uygulandığından emin olun.
* Host dosyalarındaki Subnet satırlarının doğru alt ağları içerdiğinden emin olun.
* Gerekirse, Tinc arayüzü üzerinden gelen trafiği yerel ağa yönlendirmek için iptables kuralları (NAT/MASQUERADE) tanımlamanız gerekebilir.
Sonuç
Bu makalede, Ubuntu 18.04 üzerinde Tinc VPN’i kurma ve temel bir mesh ağı yapılandırma adımlarını ayrıntılı bir şekilde inceledik. Tinc, dağıtık sistemler için esnek, güvenli ve merkeziyetsiz bir VPN çözümü sunar. İki düğümlü basit bir yapılandırma ile başlayarak, Tinc’in nasıl çalıştığını ve temel ayarlarının neler olduğunu anladık.
Tinc’in mesh mimarisi, geleneksel istemci-sunucu VPN’lerine göre daha fazla dayanıklılık ve esneklik sağlar. Bir düğümün çökmesi durumunda bile, diğer düğümlerin birbirleriyle iletişim kurmaya devam edebilmesi, özellikle kritik altyapılar için önemli bir avantajdır. Ayrıca, Tinc’in güçlü şifreleme yetenekleri sayesinde, tünellenen tüm veriler güvenli bir şekilde aktarılır.
Bu temel kurulumu tamamladıktan sonra, Tinc’i daha karmaşık senaryolara (örneğin, farklı alt ağları birbirine bağlama, daha fazla düğüm ekleme, NAT geçişi optimizasyonları) uyarlayabilirsiniz. Tinc’in sağladığı bu yetenekler, modern ağ altyapılarında güvenli ve esnek bağlantı ihtiyaçlarını karşılamak için güçlü bir araçtır. Unutmayın, herhangi bir ağ yapılandırmasında olduğu gibi, güvenlik duvarı kurallarınızı ve ağ topolojinizi dikkatlice planlamak, sorunsuz ve güvenli bir çalışma ortamı için hayati öneme sahiptir.
