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.