IP netns ile Ağ Namespace Yönetimi

0 Ответов 3 Просмотра
Оценившие
Участники
Автор темы #1
IP netns ile Ağ Namespace Yönetimi

Bir Linux sistemi üzerinde izole ağ alanları oluşturmak için ağ namespace’leri ve ip netns komut kümesini nasıl kullanabileceğinizi adım adım ele alacağız. Bu yaklaşım, konteyner teknolojileriyle birlikte ağ izolasyonu sağlamak, test ortamları kurmak veya çeşitli senaryolarda trafiği izole etmek için önemli bir temel sunar. Burada anlatılanlar, modern Linux çekirdeğiyle uyumlu genel prensipler ve uygulanabilir örnekler içerir.


  • Ağ Namespace nediri ve temel kavramlar: Ağ namespace, ağ cihazlarını, routelar ve iptables kurallarını izole etmek için kullanılan yapı taşlarıdır. Her namespace kendi ağa bağlı küresel kimlik bilgilerine sahip olur; bu sayede bir host üzerinde bile birden fazla bağımsız ağ ortamı çalışabilir. Örneğin, bir test sunucusunda production benzeri trafik akışını bozmadan ayrı bir test ağı kurmak mümkün olur.
  • Temel komutlar ve akış: ip netns add test1 ile bir namespace oluşturulur; ip netns list ile mevcut adlar listelenir. Daha sonra namespace içinde çalışacak komutlar için ip netns exec test1 biçimi kullanılır. Bu, izolasyon sağlayan süreçleri doğrudan belirtir. Örneğin, test1 içinde bir veth çiftinin iki tarafını bağlayıp bir tarafı hosta, diğer tarafı namespace’e bağlamak sık kullanılan bir senaryodur.
  • Veth köprüsüyle bağlantı kurma: Host üzerinde iki uçlu bir veth çifti oluşturulur (ip link add veth01 type veth peer name veth01-peer). Bir uç hosta, öteki uç ise test1 namespace’ine bağlanır. Namespace içindeki arayüz için ip link set dev veth01-peer up komutu ile etkinleştirme yapılır; host tarafında ise IP ataması ve gerekli yönlendirme kurallarını eklemek gerekir.
  • Ağ izolasyonu ve yönlendirme: namespace içinde ayrı bir IP ağ alt ağı oluşturulur (ör. 10.1.1.0/24). Host tarafına bir geçit (gateway) ve uygun çatallanma noktaları (routes) eklenir. Ayrıca namespace’ler arasında trafiği test etmek için iptables veya nftables ile kurallar uygulanabilir. İyi bir pratik, her namespace için ayrı bir DNS ve DHCP konuşlandırmasıyla dinamik IP yönetimini simüle etmektir.
  • Güvenlik ve yönetim: Namespace izolasyonu, ayrı kernel seviyesinde kararlılık sağlar fakat güvenliği tam değildir; kapsayıcı süreçlerin yetkilerini uygun şekilde sınırlandırmak, CAP_SYS_ADMIN gibi yetkileri azaltmak ve ağ akışını loglamak önemlidir. Performans açısından ise çok sayıda namespace ve köprü kurulumunun çekirdeğe ek yük bindirdiğini unutmamak gerekir.
  • Pratik bir örnek akışı: küçük bir test ağı kurup iki namespace arasında basit iletişimi sağlama adımlarıyla ilerlenebilir: veth çiftinin bağlanması, IP adreslerinin verilmesi, routing kurallarının eklenmesi, ardından ping testleriyle iletişimin doğrulanması gibi adımları içeren bir akış, asıl öğretici noktayı pekiştirir.
  • İzleme ve hata ayıklama: ip netns exec ile logger ve ip addr, ip route, ping kullanarak anlık durumlar izlenebilir. Sorunlar genellikle uçlar arasındaki ARP çözümlemesi, yönlendirme tablosu veya NS içinde correct NIC seçimi ile ilgilidir; bu durumlarda adım adım kontrol etmek etkilidir.
  • İş akışını genişletme: Örneğin, bir namespace ağını bir köprüyle ana ağa dahil etmek veya bir namespace’i Open vSwitch gibi yazılımlarla sanal anahtarlama ile zenginleştirmek gibi ileri adımlar da mümkündür.


Kapanış: Ağ namespace’leri, çekirdek seviyesinde güçlü bir izolasyon sunar ve modern test/dev iş akışlarında sıkça kullanılır. Bu yaklaşımın sınırlarını ve ihtiyaçlarınıza göre nasıl genişletebileceğinizi düşünmeye devam edin.

Чтобы ответить, необходимо войти в систему.

0 цитат выбрано