İçeriğe Atla
Rehberler · 12 dk okuma · görüntülenme
100%

Batfish ile Network Değişikliği Ön Doğrulama Pipeline’ı

Routing/ACL değişikliklerini prod’a çıkmadan önce “snapshot + soru seti” ile doğrulayarak, insan hatasını yakalayan pratik bir Batfish akışı.

Network config snapshot ve Batfish doğrulama akışını gösteren kapak görseli

Network’te en pahalı hata sınıfı şudur: değişiklik doğru görünüyor ama bir yerde reachability/ACL yan etkisi oluşturuyor. Prod’da yakaladığında çözüm “geri al” olur; ama bazı ortamlarda geri almak da risklidir (çoklu bağımlılık, eşzamanlı değişiklikler, state).

Bu yazıda sahada defalarca işime yarayan akışı anlatıyorum:

  1. config snapshot al
  2. Batfish ile soru setini çalıştır
  3. sonuç “beklenen” değilse merge’ü durdur
Network config snapshot ve Batfish doğrulama akışını gösteren kapak görseli
Batfish, “network ne yapıyor?” sorusunu bir test’e dönüştürerek değişiklik riskini düşürür.

Hedef: Her PR’da aynı 6 soruya cevap

Benim minimum setim:

  • Bu değişiklikle hangi prefix’ler unreachable oldu?
  • Yeni bir ACL/route‑policy ile hangi trafik kesildi?
  • Default route / next‑hop davranışı değişti mi?
  • BGP/OSPF komşuluğu beklendiği gibi mi?
  • VRF’ler arası sızıntı (leak) oluştu mu?
  • “Sadece şurada” diye açtığın izin, başka yerde büyüdü mü?

Kurulum: Batfish’i konteynerle ayağa kaldır

En pratik yaklaşım Docker.

docker run --rm -d --name batfish -p 9997:9997 -p 9996:9996 batfish/allinone

Batfish iki arayüzle gelir (sürümüne göre değişebilir):

  • service (analiz motoru)
  • client (pybatfish üzerinden konuşursun)

Snapshot yapısı: config + environment

Batfish snapshot’ı temel olarak şunları içerir:

  • Cihaz config’leri (vendor formatında)
  • (Opsiyonel) interface/status/env verileri

Örnek repo düzeni (öneri):

network/
  snapshots/
    prod/
      configs/
        r1.cfg
        r2.cfg
      hosts/
        host1.json

Bu sayede “prod snapshot” sabit kalır; PR değişikliği yeni snapshot üretir.

Soru seti: PR’ı kıran 3 kritik test

1) Reachability: beklenen akış var mı?

Örnek soru: “app VLAN’dan DB VLAN’a TCP/5432 çalışıyor mu?”

  • source: app subnet
  • destination: db subnet
  • protocol/port: tcp/5432

2) ACL: beklenmeyen deny oluştu mu?

Özellikle “deny by default” yapan policy’lerde, yanlış sıra büyük incident çıkarır.

3) Routing: next‑hop değişti mi?

BGP local‑pref, route‑map veya IGP metric oynadığında beklenmedik hairpin çıkabilir.

CI/CD: GitHub Actions ile PR gate

Akış:

  1. PR branch’inde snapshot üret (config render / export)
  2. Batfish container’ı çalıştır
  3. Soru setini çalıştır
  4. Fail ise workflow fail → merge yok

Basit bir workflow iskeleti:

name: network-precheck
on:
  pull_request:
jobs:
  batfish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Start Batfish
        run: docker run --rm -d --name batfish -p 9997:9997 -p 9996:9996 batfish/allinone
      - name: Run questions
        run: |
          python -m pip install --quiet pybatfish
          python scripts/batfish_questions.py --snapshot network/snapshots/pr

Bu repoda script örneğini özellikle koymuyorum; çünkü her kurumun soru seti farklı. Ama şablon aynı: snapshot + soru + gate.

Operasyonel tavsiyeler (sahada fark yaratanlar)

  • Snapshot’ı “gerçeğe yakın” tut: render edilen config’i kullan (templating varsa)
  • Soru setini az tut ama kritikleri seç (6–10 soru)
  • Fail çıktısını “aksiyon aldıran” formatta ver: hangi prefix, hangi ACL, hangi cihaz
  • Change ticket’lara Batfish raporunu ekle (audit ve güven)

Sonuç

Batfish ile yaptığın şey aslında şu: network’ü “kod” gibi ele alıp, değişikliği test edilebilir hale getirmek. Bu yaklaşım, özellikle büyük ağlarda change riskini dramatik şekilde düşürür ve “prod’da fark ettik” cümlesini azaltır.

Paylaş:

Bu yazı faydalı oldu mu?

Yükleniyor...

Bu yazı nasıldı?

ME

Mustafa Erbay

Sistem Mimarisi · Network Uzmanı · Altyapı, Güvenlik ve Yazılım

2006'dan bu yana sistem mimarisi, network, sunucu altyapıları, büyük yapıların kurulumu, yazılım ve sistem güvenliği ekseninde çalışıyorum. Bu blogda sahada karşılığı olan teknik deneyimlerimi paylaşıyorum.

Kişisel Notlar

Bu notlar sadece sizde saklanır. Tarayıcınızda yerel olarak tutulur.

Hazır 0 karakter

Yorumlar

Sunucu Taraflı AI Moderasyon

Yorumlar sunucuda yapay zeka ile denetlenir ve kalıcı olarak saklanır.

?
0/2000

Sunucu taraflı AI denetim

Yeni yazılardan haberdar olun

Haftada bir yeni içerikler ve kaynaklar doğrudan e-postanıza gelsin.

Spam yok. Yalnızca yeni ve önemli içerikler için e-posta gönderilir.

Okuma İstatistikleriniz

0

Yazı Okundu

0dk

Okuma Süresi

0

Gün Serisi

-

Favori Kategori

İlgili Yazılar