Linux ağ yapılandırması, modern sistem yönetimi ve yazılım geliştirmenin temel taşıdır. Mikro hizmetler dağıtıyor, kurumsal sunucuları yönetiyor veya bağlantı sorunlarını gideriyor olsanız da, altta yatan protokollerin ve araçların derinlemesine anlaşılması şarttır. Bu rehber, Linux ağ yapılandırmasının kritik bileşenlerini kapsar ve orta düzeyden ileri düzey geliştiriciler için pratik örnekler ve teşhis teknikleri sunar.
TCP/IP ve Soket Programlamayı Anlama
Transmission Control Protocol/Internet Protocol (TCP/IP) yığını, internet iletişiminin omurgasıdır. Linux'ta çekirdek bu protokolleri verimli bir şekilde yönetir, ancak geliştiricilerin güvenilir veri aktarımı için üç yönlü el sıkışmayı (SYN, SYN-ACK, ACK) anlaması gerekir. TCP/IP'de güvenilirlik anahtar rol oynarken, UDP, akış ve oyun uygulamaları için hız sunar.
import socket
# Linux'ta çalışan basit bir Python TCP sunucusu örneği
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('0.0.0.0', 5000))
server_socket.listen(5)
print("Sunucu 5000 portunda dinleniyor...")
while True:
client_socket, address = server_socket.accept()
print(f"{address} adresinden bağlantı kabul edildi")
client_socket.send("Merhaba, Linux!".encode())
client_socket.close()
SSH ve Güvenli Uzak Erişim
Secure Shell (SSH), uzak yönetim için birincil yöntemdir. Güvenlik için doğru SSH yapılandırması hayati önem taşır. Her zaman kök (root) oturum açmayı ve parola kimlik doğrulamasını devre dışı bırakın; bunun yerine SSH anahtarlarına güvenin.
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222
Güvenli bağlantı için ssh -i ~/.ssh/id_rsa user@host komutunu kullanın. Özel anahtarınızın doğru izinlere sahip olduğundan emin olun: chmod 600 ~/.ssh/id_rsa.
DNS Çözümü ve Sorun Giderme
Domain Name System (DNS), insan okunabilir alan adlarını IP adreslerine çevirir. Linux, yapılandırma için resolv.conf dosyasını kullanır. Siteler yükleniyor ancak DNS başarısız oluyorsa, isim sunucularınızı kontrol edin.
# DNS çözümünü kontrol et
dig example.com
# Yerel çözümleyici yapılandırmasını doğrula
cat /etc/resolv.conf
Güvenlik Duvarları ve Güvenlik: nftables ve iptables
Modern Linux dağıtımları, paket filtreleme için nftables kullanır. Bu, eski iptables'ın daha esnek ve güçlü bir alternatifi sunar. Temel kurallar, belirli portlardaki gelen trafiği engelleyebilir.
# Mevcut kuralları temizle
sudo nft flush ruleset
# Bir tablo ve zincir oluştur
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
# Loopback ve kurulmuş bağlantılara izin ver
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input ct state established,related accept
# Özel portta SSH'ye izin ver
sudo nft add rule inet filter input tcp dport 2222 accept
Yönlendirme ve Ağ Arayüzleri
Yönlendirme, paketlerin ağlar arasında nasıl seyahat ettiğini belirler. ip komut seti, arayüzleri ve rotaları yönetmek için modern standarttır.
# Tüm ağ arayüzlerini görüntüle
ip addr show
# Yönlendirme tablosunu görüntüle
ip route show
# Statik bir rota ekle
sudo ip route add 192.168.1.0/24 via 10.0.0.1
VPN'ler: WireGuard ve OpenVPN
Sanal Özel Ağlar (VPN), trafiği genel ağlar üzerinden şifreler. WireGuard, basitliği ve performansı nedeniyle giderek daha çok tercih edilirken, OpenVPN sağlam bir geleneksel seçenek olarak kalmaya devam etmektedir.
# WireGuard'ı kur ve başlat (Debian/Ubuntu örneği)
sudo apt install wireguard
sudo wg quick up wg0
Teşhis ve Sorun Giderme Araçları
Ağlar başarısız olduğunda, doğru aracı kullanın. ping temel bağlantıyı test eder. traceroute, paketlerin izlediği yolu gösterir. Derin paket inceleme için tcpdump paha biçilmezdir.
# eth0 üzerindeki tüm trafiği yakala ve 80 portu için filtrele
sudo tcpdump -i eth0 port 80 -nn
# Uzak bir sunucuya giden yolu izle
traceroute google.com
Sonuç
Linux ağ yapılandırması, benzersiz bir esneklik ve güç sunar. TCP/IP'yi ustalaşarak, SSH erişimini güvence altına alarak, nftables ile güvenlik duvarlarını yapılandırarak ve tcpdump gibi teşhis araçlarından yararlanarak sağlam, güvenli ve yüksek performanslı bir ağ altyapısı oluşturabilirsiniz. Linux ekosisteminde çalışan herhangi bir geliştirici veya sistem yöneticisi için bu temel bileşenlerin sürekli öğrenilmesi ve anlaşılması şarttır.