Linux Sunucuda Network Namespace Kullanımı

Linux sunucularında ağ trafiğini izole etmek ve yönetmek, modern sistem yöneticilerinin vazgeçilmez bir ihtiyacıdır.

Reklam Alanı

Linux sunucularında ağ trafiğini izole etmek ve yönetmek, modern sistem yöneticilerinin vazgeçilmez bir ihtiyacıdır. Network Namespace özelliği, bu izolasyonu sağlayarak her bir namespace’in bağımsız bir ağ yığınına sahip olmasını mümkün kılar. Bu sayede, farklı uygulamalar veya servisler arasında ağ kaynaklarını ayırabilir, güvenlik duvarlarını güçlendirebilir ve kaynak kullanımını optimize edebilirsiniz. Bu makalede, Linux sunucularında network namespace kullanımını adım adım inceleyecek, pratik örneklerle açıklayacak ve kurumsal ortamlara uyarlanabilir stratejiler sunacağız. Network namespace’ler, özellikle container teknolojileri gibi Docker veya Kubernetes ile entegre edildiğinde büyük avantaj sağlar, ancak doğrudan sistem düzeyinde de güçlü bir araçtır.

Network Namespace’in Temel Kavramları ve Avantajları

Network namespace, Linux kernel’inin cgroups ve namespace altyapısının bir parçasıdır. Her namespace, kendi routing tablosu, firewall kuralları, ağ arayüzleri ve IP adresleri ile çalışır. Bu izolasyon, ana sistemin ağından tamamen bağımsız bir ortam yaratır. Örneğin, bir geliştirme sunucusunda test uygulamalarını production trafiğinden ayırmak için idealdir. Avantajları arasında güvenlik artışı, kaynak verimliliği ve hata izolasyonu yer alır; bir namespace’deki sorun diğerlerini etkilemez.

Kurumsal ortamlarda, network namespace’ler mikro servis mimarilerinde kritik rol oynar. Trafik segmentasyonu ile DDoS saldırılarını sınırlayabilir, compliance gereksinimlerini karşılayabilirsiniz. Kernel 3.8’den beri standart olarak desteklenir ve iproute2 paketindeki ip netns komutu ile yönetilir. Bu araç, namespace’leri listelemek, oluşturmak ve silmek için kullanılır. Pratikte, namespace’ler sanal makinelerden daha hafif olup, saniyeler içinde deploy edilebilir.

İzolasyon Mekanizması

Namespace izolasyonu, process’lerin PID namespace ile birleştiğinde tam bir sanal ortam sağlar. Ağ arayüzleri namespace’e taşındığında, o arayüz sadece o namespace içinden erişilebilir hale gelir. Bu, iptables kurallarını namespace bazında uygulamayı kolaylaştırır. Örneğin, bir namespace’te özel bir firewall zinciri tanımlayarak trafiği filtreleyebilirsiniz. Detaylı inceleme için /proc/net/dev dosyasını namespace içinde kontrol edin; ana sistemden farklı çıktılar göreceksiniz.

Güvenlik ve Performans Faydaları

Güvenlik açısından, namespace’ler lateral movement saldırılarını engeller. Bir namespace’teki exploit, diğer namespace’lere sıçrayamaz. Performans olarak, kernel seviyesinde çalıştığı için overhead minimumdur; milyonlarca paket/saniye işleyebilir. Kurumsal testlerde, namespace kullanan sistemlerde ağ gecikmesi %5’in altında kalır. Uygulamada, SELinux ile entegre ederek politika zorlamasını artırın.

Network Namespace Oluşturma ve Yapılandırma Adımları

Yeni bir network namespace oluşturmak oldukça basittir ve root yetkileri gerektirir. Öncelikle ip netns add komutu ile namespace’i tanımlayın, ardından veth pair’ler kullanarak ana sistemle bağlantı kurun. Bu süreç, loopback arayüzü otomatik olarak etkinleştirir ve namespace’e özel bir ağ ortamı hazırlar. Yapılandırma sonrası, namespace içine girerek ip addr show ile durumunu doğrulayın. Kurumsal script’lerde bu adımları otomatize etmek için bash fonksiyonları yazabilirsiniz.

  1. Namespace oluşturun: ip netns add testns
  2. Veth pair oluşturun: ip link add veth0 type veth peer name veth1
  3. Arayüzleri namespace’e taşıyın: ip link set veth1 netns testns
  4. Namespace içinde IP atayın: ip netns exec testns ip addr add 192.168.1.1/24 dev veth1
  5. Yönlendirmeyi etkinleştirin: ip netns exec testns ip link set veth1 up

Bu adımlar tamamlandıktan sonra, namespace trafiğini ping ile test edin. Ana sistemden veth0 üzerinden erişim sağlayın. Hata durumunda, sysctl net.ipv4.ip_forward=1 ile forwarding’i etkinleştirin. Bu yapılandırma, production’da birden fazla tenant için ölçeklenebilir.

Veth Pair ve Bridge Entegrasyonu

Veth pair’ler, namespace’ler arası veya ana sistemle iletişim için vazgeçilmezdir. Bir ucu namespace’te, diğer ucu bridge’e bağlayarak L2 switching yapabilirsiniz. Bridge oluşturmak için brctl veya ip link komutlarını kullanın: ip link add name br0 type bridge, ardından veth0’ı bridge’e ekleyin. Bu, VLAN’lar ile birleştiğinde kurumsal ağ segmentasyonunu güçlendirir. Performans testlerinde, bridge throughput’ü 10Gbps’ye ulaşır.

Namespace Yönetimi Komutları

Yönetim için ip netns list ile listeleme, ip netns delete ile silme yapın. Process bağlama için nsenter veya ip netns exec kullanın. Örneğin, bir container process’ini namespace’e bağlamak: unshare -n -U -r /bin/bash. Loglama için namespace’e özel conntrack tablosu (/proc/sys/net/netfilter/nf_conntrack_max) ayarlayın. Bu komutlar, Ansible playbook’lerde standartlaşmıştır.

Pratik Uygulamalar ve İleri Teknikler

Kurumsal senaryolarda, network namespace’leri CI/CD pipeline’larında test ağları için kullanılır. Örneğin, bir web uygulamasını izole etmek üzere namespace oluşturup, Nginx’i içinde çalıştırın. Kubernetes’te CNI plugin’leri (örneğin Calico) namespace’leri otomatik yönetir. Manuel kullanımda, systemd unit’lerle namespace’i kalıcı hale getirin: [Network] bölümüne Namespace=testns ekleyin. Bu, reboot sonrası tutarlılık sağlar.

İleri tekniklerde, VXLAN overlay ağları ile namespace’leri bulut ölçeğinde bağlayın. Trafik mirror’lama için tc (traffic control) komutlarını namespace içinde uygulayın: tc qdisc add dev veth1 root handle 1: mirred. Monitoring için Prometheus ile entegrasyon yaparak namespace metriklerini toplayın. Bu yaklaşımlar, zero-trust mimarilerde temel oluşturur.

Çoklu Namespace Senaryoları

Üç veya daha fazla namespace yönetirken, policy-based routing (PBR) ile trafiği yönlendirin. ip rule add fwmark 1 table 100 ile tablo tanımlayın. Her namespace’e unique MTU atayın (örneğin 1450) fragmentation’ı önlemek için. Script örneği: for ns in ns1 ns2; do ip netns exec $ns sysctl net.ipv4.tcp_rmem=…; done. Bu, yüksek trafikli ortamlarda stabilite sağlar ve 1000+ namespace’e ölçeklenir.

Güvenlik Duvarı ve İzleme

Namespace başına nftables kurun: ip netns exec testns nft add table inet filter. Chain’lere accept/reject kuralları ekleyin. İzleme için tcpdump: ip netns exec testns tcpdump -i veth1. Alerting için bu çıktıyı journald’ye pipe edin. Kurumsal denetimlerde, bu yöntem SOC takımlarına detaylı visibility sunar ve compliance raporlaması kolaylaştırır.

Network namespace kullanımı, Linux sunucularınızı daha güvenli ve verimli hale getirir. Bu teknikler, günlük operasyonlardan büyük ölçekli deploy’lara kadar uygulanabilir. Uygulamaya başlamak için test ortamında adımları deneyin ve script’lerle otomatize edin. Uzun vadede, sistem mimarinizi güçlendirerek downtime’ları minimize edeceksiniz.

Yazar: Editör
İçerik: 793 kelime
Okuma Süresi: 6 dakika
Zaman: Bugün
Yayım: 12-03-2026
Güncelleme: 12-03-2026
Benzer İçerikler
Dijital Dönüşüm kategorisinden ilginize çekebilecek benzer içerikler