İçeriğe geç
NetDevOps
12 dk okuma Ağ Yönetimi

FRRouting Kurulum ve BGP OSPF Yapılandırma Rehberi

FRRouting Nedir ve Neden Kullanılmalı?

FRRouting (FRR), Linux ve Unix platformları için geliştirilmiş açık kaynaklı bir yönlendirme protokolü paketidir. BGP, OSPF, RIP, IS-IS, PIM, LDP ve BFD gibi kritik yönlendirme protokollerini destekleyen FRR, modern ağ altyapılarının temel taşlarından biri haline gelmiştir. Cumulus Linux, SONiC ve VyOS gibi popüler ağ işletim sistemlerinin arkasında FRR teknolojisi yatmaktadır. Bu makalede FRRouting'in kurulumu, BGP ve OSPF yapılandırması ile production ortamlarında dikkat edilmesi gereken en iyi uygulamaları detaylı olarak ele alacağız.

FRRouting'in en önemli avantajlarından biri Cisco IOS benzeri yapılandırma sözdizimine sahip olmasıdır. Bu özellik, Cisco sertifikalarına sahip ağ mühendislerinin Linux tabanlı yönlendirme çözümlerine hızlı bir şekilde adapte olmasını sağlar. vtysh adlı birleşik komut satırı arayüzü üzerinden tüm protokolleri tek bir noktadan yönetmek mümkündür. FRR, Linux çekirdeğinin yönlendirme tablosuyla doğrudan entegre çalışarak yüksek performans ve düşük gecikme süreleri sunar.

FRRouting Kurulumu

Ubuntu ve Debian Sistemlerde Kurulum

FRR'yi Ubuntu veya Debian tabanlı sistemlerde kurmak için resmi FRR deposunu kullanmak en güvenli yöntemdir. Aşağıdaki adımları takip ederek kurulumu gerçekleştirebilirsiniz. İlk olarak sistem paketlerini güncelleyin ve gerekli bağımlılıkları yükleyin:

sudo apt-get update
sudo apt-get install -y curl lsb-release gnupg2

FRR'nin resmi deposunu sisteminize ekleyin. Bu işlem için aşağıdaki komutları root yetkisiyle çalıştırın:

curl -s https://deb.frrouting.org/frr/keys.gpg | sudo tee /usr/share/keyrings/frrouting.gpg > /dev/null
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-get update

FRR paketini ve Python araçlarını yükleyin:

sudo apt-get install -y frr frr-pythontools

Daemon Yapılandırması

FRR kurulduktan sonra hangi protokol daemon'larının çalışacağını belirlemeniz gerekir. Daemon yapılandırma dosyası /etc/frr/daemons konumundadır. Bu dosyayı düzenleyerek istediğiniz protokolleri etkinleştirebilirsiniz:

sudo nano /etc/frr/daemons

Dosya içinde aşağıdaki değişiklikleri yapın:

zebra=yes
bgpd=yes
ospfd=yes
ospf6d=no
ripd=no
ripngd=no
isisd=no
pimd=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=no

Her daemon için yes veya no değerleri belirlenir. BGP kullanacaksanız bgpd, OSPF kullanacaksanız ospfd satırlarını yes olarak ayarlamalısınız. Değişiklikleri kaydettikten sonra FRR servisini başlatın:

sudo systemctl enable frr
sudo systemctl start frr

Servisin çalışıp çalışmadığını kontrol etmek için systemctl status komutunu kullanabilirsiniz:

sudo systemctl status frr

CentOS ve RHEL Sistemlerde Kurulum

CentOS veya RHEL tabanlı sistemlerde kurulum biraz farklıdır. İlk olarak EPEL reposunu ekleyin ve ardından FRR paketini yükleyin:

sudo yum install -y epel-release
sudo yum install -y frr

Daemon yapılandırması Ubuntu'dakiyle aynı mantığı takip eder. /etc/frr/daemons dosyasını düzenledikten sonra servisi başlatın:

sudo systemctl enable frr
sudo systemctl start frr

Temel Yapılandırma ve vtysh Kullanımı

FRR, vtysh adlı birleşik bir komut satırı arayüzü sunar. Bu arayüz, Cisco IOS komut yapısına benzer şekilde çalışır ve tüm protokolleri tek bir yerden yönetmenizi sağlar. vtysh'ye bağlanmak için terminalde şu komutu kullanın:

sudo vtysh

Komutu çalıştırdığınızda karşınıza şu şekilde bir prompt gelecektir:

hostname#

Yapılandırma moduna geçmek için configure terminal komutunu kullanın:

hostname# configure terminal
hostname(config)#

Temel sistem ayarlarını yapılandırmak için hostname ve domain-name gibi genel ayarları belirleyebilirsiniz:

hostname(config)# hostname frr-router
frr-router(config)# ip forwarding
frr-router(config)# ipv6 forwarding

Linux çekirdeğinin yönlendirme yapabilmesi için IP forwarding etkinleştirilmelidir. Bu ayar /etc/sysctl.conf dosyasından veya sysctl komutuyla kalıcı olarak yapılandırılabilir:

sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-ip-forward.conf
echo "net.ipv6.conf.all.forwarding=1" | sudo tee -a /etc/sysctl.d/99-ip-forward.conf

BGP Yapılandırması

Temel BGP Ayarları

BGP (Border Gateway Protocol), Internet'in temel yönlendirme protokolüdür ve farklı otonom sistemler arasında yönlendirme bilgisi alışverişi için kullanılır. FRR üzerinde BGP yapılandırması oldukça basittir. İlk olarak bir BGP router tanımlayın ve AS (Autonomous System) numarasını belirleyin:

router bgp 65001
 bgp router-id 1.1.1.1
!

Bu örnekte 65001, router'ın otonom sistem numarasıdır. Private AS numaraları 64512 ile 65535 arasında yer alır ve Internet üzerinde yönlendirilmezler. Router ID, ağınız içinde benzersiz bir IPv4 adresi olmalıdır. Genellikle loopback arayüzü IP'si kullanılır.

eBGP Neighbor Yapılandırması

eBGP (external BGP), farklı AS numaralarına sahip router'lar arasında kurulan bağlantıdır. Bir BGP neighbor tanımlamak için remote-as komutunu kullanın:

router bgp 65001
 bgp router-id 1.1.1.1
 neighbor 203.0.113.1 remote-as 65100
 neighbor 203.0.113.1 description Upstream-ISP
 neighbor 203.0.113.1 password MyBGPSecret
!

Bu yapılandırmada 203.0.113.1 IP adresine sahip upstream ISP router'ı ile BGP oturumu kurulmaktadır. neighbor komutundaki remote-as değeri, karşı tarafın AS numarasını belirtir. Şifre kullanımı güvenlik açısından önerilir ve MD5 tabanlı BGP TCP auth için kullanılır.

Address Family ve Network Tanımlama

BGP, IPv4 ve IPv6 için ayrı address family'ler üzerinden çalışır. Varsayılan olarak sadece IPv4 unicast desteklenir. IPv4 unicast address family'de bir neighbor'ı aktive etmek ve network tanımlamak için şu yapılandırmayı kullanın:

router bgp 65001
 bgp router-id 1.1.1.1
 neighbor 203.0.113.1 remote-as 65100
 !
 address-family ipv4 unicast
  network 192.168.0.0/16
  neighbor 203.0.113.1 activate
 exit-address-family
!

network komutu, BGP üzerinden advertise edilecek prefix'i belirtir. Önemli bir nokta: advertised network, local routing table'da mutlaka bulunmalıdır. Başka bir deyişle, 192.168.0.0/16 network'ü sisteminizde bir arayüze bağlı olmalı veya static route ile eklenmiş olmalıdır.

iBGP Yapılandırması

iBGP (internal BGP), aynı AS numarasına sahip router'lar arasında kullanılır. iBGP session'ları genellikle loopback IP'leri üzerinden kurulur. Bu yöntem, fiziksel arayüz down olduğunda bile BGP oturumunun ayakta kalmasını sağlar:

router bgp 65001
 bgp router-id 1.1.1.1
 neighbor 10.0.0.2 remote-as 65001
 neighbor 10.0.0.2 description iBGP-Peer-2
 neighbor 10.0.0.2 update-source lo
!

update-source komutu, BGP oturumunun hangi IP adresinden kurulacağını belirtir. iBGP ortamlarında loopback interface kullanımı best practice olarak kabul edilir.

BGP Neighbor Doğrulama

BGP neighbor ilişkilerini doğrulamak için çeşitli show komutları kullanılır:

show bgp summary
show bgp neighbors
show bgp ipv4 unicast

show bgp summary komutu tüm BGP neighbor'ların durumunu özetler:

Neighbor        V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down  State/PfxRcd
203.0.113.1     4 65100    100     102      5   0   0 00:45:00 1

Bu çıktıda neighbor IP'si, BGP versiyonu, AS numarası, gönderilen ve alınan mesaj sayısı, tablodaki versiyon ve alınan prefix sayısı görüntülenir. State/PfxRcd sütununda sayı görünüyorsa BGP oturumu aktif ve prefix alışverişi yapılıyor demektir.

OSPF Yapılandırması

OSPF Temel Yapılandırma

OSPF (Open Shortest Path First), iç ağ yönlendirmesi için en yaygın kullanılan protokollerden biridir. Link-state algoritması kullanarak hızlı converge sağlar ve maliyet tabanlı en iyi yolu hesaplar. FRR'de OSPF yapılandırması şu şekilde başlar:

router ospf
 ospf router-id 1.1.1.1
 network 10.0.0.0/8 area 0.0.0.0
 network 192.168.1.0/24 area 0.0.0.0
!

ospf router-id komutu, OSPF domain içinde benzersiz bir tanımlayıcı belirler. Genellikle BGP router-id ile aynı değer kullanılır. network komutu, hangi IP bloklarının OSPF'e dahil edileceğini ve hangi area'ya ait olduğunu belirtir. Area 0.0.0.0, OSPF'in backbone area'sıdır ve tüm diğer area'lar bu area'ya bağlanmak zorundadır.

OSPF Arayüz Ayarları

OSPF arayüz bazlı parametrelerini özelleştirmek için interface yapılandırma modunu kullanın:

interface eth0
 ip ospf cost 10
 ip ospf priority 100
 ip ospf hello-interval 10
 ip ospf dead-interval 40
!

cost parametresi, OSPF'in yol hesaplamasında kullandığı metriktir. Düşük cost değerleri tercih edilir. priority değeri, DR (Designated Router) seçiminde kullanılır; yüksek değerler DR olmaya daha yakındır. hello-interval ve dead-interval, OSPF neighbor keşif ve timeout sürelerini belirler.

OSPF Passive Interface

Passive interface özelliği, bir arayüzün OSPF hello paketleri göndermesini engeller ancak network hala OSPF'e dahil edilir. Bu özellik, son kullanıcı network'lerinde gereksiz OSPF trafiğini önlemek için kullanılır:

router ospf
 ospf router-id 1.1.1.1
 passive-interface default
 no passive-interface eth0
 network 10.0.0.0/8 area 0.0.0.0
!

Bu örnekte tüm arayüzler passive olarak ayarlanır, ardından eth0 arayüzü için passive özelliği kaldırılır. Böylece sadece eth0 üzerinden OSPF neighbor ilişkileri kurulur.

OSPF Doğrulama Komutları

OSPF yapılandırmasını doğrulamak için aşağıdaki komutları kullanın:

show ip ospf neighbor
show ip ospf interface
show ip ospf route
show ip ospf database

show ip ospf neighbor komutu OSPF neighbor ilişkilerini ve durumlarını gösterir. Full durumu, iki router arasında tam komşuluğun kurulduğunu ifade eder.

FRR Yapılandırma Dosyaları

Integrated Configuration

FRR'nin modern sürümlerinde tüm yapılandırma /etc/frr/frr.conf dosyasında tutulur. Bu dosya, tüm daemon'ların birleşik yapılandırmasını içerir. vtysh içinden yapılan değişiklikler otomatik olarak bu dosyaya kaydedilir:

write memory

Bu komut çalıştırıldığında mevcut yapılandırma frr.conf dosyasına yazılır. Dosyanın içeriğini görüntülemek için:

show running-config

veya Linux shell'den:

sudo cat /etc/frr/frr.conf

Manual Yapılandırma

Doğrudan dosya üzerinden yapılandırma yapmak isterseniz frr.conf dosyasını manuel olarak düzenleyebilirsiniz:

sudo nano /etc/frr/frr.conf

Örnek bir BGP yapılandırması:

frr version 10.6
frr defaults traditional
!
router bgp 65001
 bgp router-id 1.1.1.1
 neighbor 203.0.113.1 remote-as 65100
 neighbor 203.0.113.1 description Upstream-ISP
 !
 address-family ipv4 unicast
  network 192.168.0.0/16
  neighbor 203.0.113.1 activate
 exit-address-family
!

Dosyayı düzenledikten sonra FRR servisini reload edin:

sudo systemctl reload frr

Güvenlik Yapılandırması

BGP Authentication

BGP oturumlarının güvenliği için TCP MD5 signature kullanılabilir. Bu özellik, BGP mesajlarının bütünlüğünü ve kaynak doğrulamasını sağlar:

router bgp 65001
 neighbor 203.0.113.1 password MySecurePassword123
!

Şifreler düz metin olarak saklanır. Güvenlik gereksinimleriniz yüksekse, şifrelerin güvenli bir şekilde yönetilmesi için HashiCorp Vault gibi secret management araçları kullanılmalıdır.

FRR Servis Güvenliği

FRR servisi, yetkisiz erişime karşı korunmalıdır. vtysh erişimi için strong authentication kullanın. Linux'ta FRR kullanıcısının shell erişimini kısıtlayın:

sudo usermod -s /sbin/nologin frr

FRR yapılandırma dosyalarının izinlerini de düzenleyin:

sudo chown -R frr:frr /etc/frr/
sudo chmod 640 /etc/frr/frr.conf

Monitoring ve Troubleshooting

Temel Monitoring Komutları

FRR'nin sağladığı show komutları, ağ problemlerini teşhis etmek için kritik öneme sahiptir. Routing table'ı görüntülemek için:

show ip route
show ipv6 route

FRR'nin Linux kernel'ine öğrettiği rotaları görmek için:

ip route show proto bgp
ip route show proto ospf

Debugging

BGP problemlerini debug etmek için aşağıdaki komutları kullanın:

debug bgp events
debug bgp updates
debug bgp keepalives

Debug çıktılarını görmek için log dosyasını takip edin:

sudo tail -f /var/log/frr/frr.log

Debug modunu kapatmayı unutmayın:

no debug bgp all

Performance Monitoring

FRR, SNMP desteği sunar. SNMP üzerinden monitoring için:

snmp-server community public ro
snmp-server community private rw

Bu yapılandırma, Nagios, Zabbix gibi monitoring sistemleriyle entegrasyon sağlar.

FRR Best Practices

Network Tasarımı Önerileri

Production ortamlarında FRR kullanırken dikkat edilmesi gereken temel noktalar vardır. Her zaman loopback arayüzü kullanın. iBGP ve OSPF router-ID'leri için loopback IP'ler tercih edilir. Bu yaklaşım, fiziksel arayüz hatalarında yedeklilik sağlar.

BGP confederation veya route reflector kullanın. Büyük ölçekli ağlarda tüm router'lar arasında iBGP full mesh kurmak pratik değildir. Route reflector, iBGP mesh karmaşıklığını azaltır.

Yüksek Erişilebilirlik

FRR'yi yüksek erişilebilirlik ortamlarında çalıştırırken multiple FRR instance kullanabilirsiniz. Her instance farklı bir Linux namespace içinde çalışabilir:

ip netns add frr-ns1
ip netns exec frr-ns1 vtysh

Bu yöntem, izole routing tabloları oluşturmanıza olanak tanır ve multi-tenant ortamlarda kullanışlıdır.

Konfigürasyon Yönetimi

FRR yapılandırmasını Git gibi versiyon kontrol sistemlerinde saklayın. Ansible veya Terraform ile CI/CD pipeline'ları oluşturun. Yapılandırma değişikliklerini test ortamında doğruladıktan sonra production'a uygulayın.

Düzenli backup alın:

sudo cp /etc/frr/frr.conf /backup/frr.conf.$(date +%Y%m%d)

Sonuç

FRRouting, Linux tabanlı ağ yönlendirme çözümlerinde güçlü ve esnek bir seçenektir. Cisco IOS benzeri yapılandırma sözdizimi, zengin protokol desteği ve aktif topluluk katkısıyla production ortamlarında güvenle kullanılabilir. Bu makalede ele aldığımız kurulum, BGP, OSPF yapılandırması ve best practice önerileri, FRR'yi etkin bir şekilde kullanmanıza yardımcı olacaktır.