Linux Sistemleri

      Netplan ve FRR Kullanarak Ubuntu 24.04 Ağ Kurulumu

      Veri merkezlerinde ağı yalnızca bölmek yeterli değildir. Bir ağda yaşanan problem diğer ağlara sıçramamalıdır. Bu nedenle trafiğin hangi noktadan çıkacağı ve nasıl yönleneceği açık olmalıdır. Aksi durumda küçük bir hata zincirleme sorunlara yol açabilir.

      Bu rehberde Ubuntu 24.04 üzerinde daha düzenli bir ağ yapısı kuracağız. Netplan ile altyapıyı oluşturacağız. VRF ile ağları ayıracağız. FRR kullanarak yönlendirmeyi dinamik hale getireceğiz.

      Ağ Tasarımının Önemi

      Ağ tasarımı bir sistemin temel taşıdır. Doğru tasarım yapılmadığında sistem büyüdükçe karmaşıklık ve güvenlik açıkları artar.

      Katman 2 Ağ Yapısının Kurgulanması

      Katman 2 seviyesinde hedef, fiziksel altyapıyı mantıksal bölümlere ayırmaktır. Bu senaryoda üç temel VLAN grubu kullanılmaktadır:

      VLAN 10/20/30: Mikroservisler ve konteynerler için iç ağ bölgeleri.

      VLAN 4001-4003: Gateway, Router ve ISP gibi dış dünyaya açılan uplink hatları.

      Bu yapıda üç farklı VLAN grubu bulunmaktadır. İlk grup yönetim trafiğini taşımak üzere ayrılmıştır. İkinci grup iç ağda çalışan konteyner trafiğini taşır. Üçüncü grup ise dış dünyaya açık servisler için kullanılır. Bu ayrım sayesinde bir ağdaki güvenlik açığı diğer ağları doğrudan etkilemez.

      Katman 3 Seviyesinde Ağın Ayrıştırılması

      Varsayılan Linux ağ yapısında tüm trafik tek bir ana kapıdan yönlendirilir. VRF (Virtual Routing and Forwarding) teknolojisi kullanılarak sistem içerisinde bağımsız sanal yönlendirme alanları oluşturulur. Olası güvenlik ihlalleri yalnızca ilgili VRF sınırları içinde kalır. Bu yaklaşım kernel seviyesinde izolasyon sağlar. Böylece aynı IP adres blokları farklı VRF’lerde sorunsuz şekilde kullanılabilir.

      Ağ Bölümleri İçin VRF Kullanmanın Avantajı

      Ağları ayırmak için her bölgeye ayrı bir sanal makine atanabilir. Ancak VRF ile aynı ayrım tek bir sistem üzerinde sağlanabilir. Bu yaklaşım hem kaynak kullanımını optimize eder hem de yönetimi kolaylaştırır. Ağ bölgeleri birbirinden net şekilde ayrılır. İzolasyon kernel seviyesinde gerçekleştirilir.

      Örneğin PUB VRF üzerinde çalışan bir web sunucusu ele geçirilse bile, saldırganın INT VRF içerisindeki veritabanına routing yoluyla erişmesi engellenir. VRF’ler arasında doğrudan bir yönlendirme olmadığı için trafik diğer ağa geçemez. Bu yapı saldırıyı ilgili VRF ile sınırlar. İç ağ etkilenmeden çalışmaya devam eder. Sonuç olarak donanımsal bir firewall varmış gibi bir ayrım elde edilir.

      Ubuntu 24.04’te Netplan Yapılandırma Mantığı

      Ubuntu 24.04 sistemlerinde ağ yapılandırmaları Netplan üzerinden yönetilir. Tüm ayarlar /etc/netplan/ dizini altındaki YAML dosyalarında yer alır. Bu bölümde fiziksel ağ kartlarının tanımı yapılır. VLAN ve bridge yapıları aynı yapılandırma içerisinde oluşturulur. VRF bağlaması ile ağ bölgeleri birbirinden ayrılır.

      Netplan Dosyasını Oluşturalım

      sudo nano /etc/netplan/01-netcfg.yaml

      Fiziksel Kartları Tanımlayalım

      Fiziksel kartlara doğrudan IP vermiyoruz. Bunları yalnızca VLAN taşıyıcısı olarak kullanıyoruz.

      ethernets:
      ens18: {} # Dış dünya (Gateway / Router)
      ens19: {} # İç  (konteyner / VM trafiği)

      VLAN Yapılarını Oluşturalım

      vlans:
      vlan10: { id: 10, link: ens19 }
      vlan20: { id: 20, link: ens19 }
      vlan30: { id: 30, link: ens19 }
      vlan4001: { id: 4001, link: ens18 }
      vlan4002: { id: 4002, link: ens18 }
      vlan4003: { id: 4003, link: ens18 }

      Bridge Tabanlı Ağ Yapısı

      Bridge’ler, konteynerler ve sanal makineler için bağlantı noktası görevi gören mantıksal switch’lerdir. Fiziksel ağ altyapısı ile sanal sistemler arasında köprü oluştururlar. Ağ trafiği bu yapı üzerinden yönlendirilir. Sanal makineler ve konteynerler bridge aracılığıyla VLAN’lara bağlanır.

      bridges:
        br10:
          addresses: [10.10.0.1/24, "2001:DB8:1234:A000::1/64"]
          interfaces: [vlan10]
      
        br20:
          addresses: [10.11.0.1/24, "2001:DB8:1234:B000::1/64"]
          interfaces: [vlan20]
      
        br30:
          addresses: [10.9.0.1/24, "2001:DB8:1234:9000::1/64"]
          interfaces: [vlan30]
      
        br4002:
          addresses: ["FE80::4002:3/64"]
          interfaces: [vlan4002]
      
        br4003:
          addresses: ["FE80::4003:3/64"]
          interfaces: [vlan4003]

      VRF Tanımı ve Bridge’lere Bağlama

      vrfs:
        INT:
          table: 120
          interfaces: [br4002, br20]
      
        PUB:
          table: 130
          interfaces: [br4003, br30]

      Bu noktadan sonra INT VRF iç trafik için kullanılır. PUB VRF dışa açık trafiği taşır. Her iki yapı birbirinden tamamen ayrıdır. Routing tabloları ortak değildir. Trafik kendi VRF sınırları içinde kalır.

      Yapılandırmayı Uygulama

      sudo netplan apply

      FRR (Free Range Routing) Yapılandırması

      Netplan ağ altyapısını oluşturur. FRR ise bu altyapı üzerinde trafiğin hangi yollardan akacağını belirler. Yönlendirme kararları FRR tarafından yönetilir. Bu sayede ağ davranışı kontrol altına alınır. FRR kullanımı Ubuntu sistemini kurumsal seviyede bir router haline getirir.

      FRR Kurulumu

      curl -s https://deb.frrouting.org/frr/keys.gpg | sudo tee /usr/share/keyrings/frrouting.gpg
      echo deb '[signed-by=/usr/share/keyrings/frrouting.gpg]' https://deb.frrouting.org/frr $(lsb_release -s -c) frr-stable | sudo tee /etc/apt/sources.list.d/frr.list
      sudo apt update
      sudo apt install frr frr-pythontools

      Servislerin Aktif Edilmesi

      /etc/frr/daemons dosyasında ilgili protokolleri yes konumuna getirelim.

      bgpd=yes
      ospfd=yes
      ospf6d=yes
      staticd=yes

      Burada ospf6d protokolü IPv6 yönlendirmesi için hayati önem taşır. IPv4 için ospfd yeterlidir ancak güncelde IPv6 her zaman önceliklidir.

      FRR Yönlendirme Ayarları

      FRR yapılandırması Cisco cihazlara oldukça benzeyen vtysh kabuğu üzerinden gerçekleştirilir. Bu yapılandırma arayüzü network cihazlarına aşina olanlar için tanıdıktır. En önemli kural her VRF için ayrı bir OSPF sürecini başlatılmasıdır. Yönlendiricinin diğer ağ cihazlarıyla iletişim kurabilmesi için komşuluk ilişkisi kurulması gerekir. Bu nedenle vtysh içerisinde arayüz bazlı yönlendirme tanımlamaları yapılır.

      ipv6 forwarding
      !
      vrf INT
       ipv6 route 2001:db8:1234:2000::/60 blackhole
      exit-vrf
      !
      interface br20
       ipv6 ospf6 area 1
       ipv6 ospf6 network broadcast
       ipv6 ospf6 passive
      exit
      !
      router ospf6 vrf INT
       ospf6 router-id 10.2.0.1
       redistribute static
       area 1 stub
      exit

      Sık Sorulan Sorular

      Bu yapı hangi senaryoda kullanılmalı?

      Bu mimari, küçük ve tek ağlı sistemler için fazla karmaşıktır. Tek VLAN ve tek uplink kullanılan senaryolarda VRF anlamlı bir avantaj sunmaz. Statik yönlendirme ihtiyacı karşılar. DNS ve izleme servisleri ek ayar gerektirir. Ölçeklenme hedefi olmayan yapılarda bu yaklaşım önerilmez.

      VRF kullanmazsan ne bozulur?

      VRF kullanılmadığında tüm ağ trafiği tek bir yönlendirme tablosunda toplanır. Bu durum asimetrik routing ve geri dönüş problemlerine yol açar. Farklı uplink hatları birbirinin trafiğini dolaylı olarak etkilemeye başlar. Firewall ve policy kuralları zamanla karmaşık ve yönetilmesi zor hale gelir. Aynı IP blokları tekrar kullanılamaz ve ağ mantıksal olarak ayrılmış görünse bile çekirdek seviyesinde izolasyon sağlanamaz.

      Bu mimari hangi ölçekte mantıklı, nerede overkill?

      Mantıklı Kullanım Senaryoları

      Bu mimari aşağıdaki durumlarda anlamlı bir çözüm sunar. Birden fazla VLAN ve uplink bulunan altyapılarda ağ kontrolünü kolaylaştırır. Çoklu müşteri veya farklı ağ bölgeleri barındıran sistemlerde güvenli ayrım sağlar. IPv6 kullanılan veya planlanan ortamlarda yönlendirme esnekliği kazandırır. Konteyner ve mikroservis mimarilerinde ağ yapısını sadeleştirir. BGP veya dinamik routing kullanılan yapılarda tercih edilmelidir.

      Gereksiz Karmaşıklık Oluşturabileceği Senaryolar

      Bazı durumlarda bu mimari uygun değildir. Tek uplink ve tek ağ kullanılan sistemlerde statik routing yeterli olur. Kısa süreli test ve geliştirme ortamlarında ek yük getirir. Linux ağ ve routing bilgisi sınırlı ekiplerde yönetim zorlaşır.

      Hi, I’m Spesifik

      Bir yanıt yazın

      E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir