Daha önce varlığından bile haberdar olmadığım iki kavramdan bahsetmek istiyorum: özerk sistemler ve Border Gateway Protocol. Bu ikisi günümüzde interneti oluşturan iki önemli şey.
İnternetin temelde nasıl çalıştığını bildiğimi düşünüyordum. Tarayıcıya bir adres yazdığınızda bunun alan adı sunucularına gidiyor (DNS), bu adrese karşılık gelen IP adresi bulunuyor ve isteğiniz bu IP adresine yönlendiriliyor. Elbette isteğiniz gönderilirken çeşitli internet protokollerinden faydalanılıyor. En altta IP, ona güvenilirlik kazandıran TCP ve onun da bir üstünde, web programalama yapanlar olarak en çok gördüğümüz HTTP.
İnterneti de birbirine bağlı bilgisayarlar olarak düşünüyordum daha çok ama fiziksel olarak bu bilgisayarlar arasında paketler nasıl gönderiliyor bilmiyordum. İstediğimiz IP adresine (bilgisayara) bizim isteğimiz kim, nasıl tarafından gönderiliyor herhangi bir fikrim yoktu.
İnternette gezinirken denk geldiğim şu muhteşem video sayesinde öğrendim. Yazıya devam etmeden evvel, eğer konuyu merak ettiyseniz ve ayıracak vaktiniz varsa videoyu izleyin derim. Engür Pişirici tarafından yapılan bir sunum ve her şeyi çok net bir şekilde açıklamış.
İnterneti birbirine bağlı bilgisayarlar olarak düşünmek aslında yanlış. İnternet (kelimenin kendisinden de anlaşılacağı üzere) birbirine bağlı ağlardan oluşuyor. Bu ağların her biri de Özerk Sistemler (Autonomous Systems, kısaca AS) olarak tanımlanıyor. Yazının geri kalanında AS kısaltmasını kullanacağım Autonomous Systems için.
Bu özerk sistemlere örnek olarak Türk Telekom, Ulaknet, Turksat, Github, Facebook, İstanbul Teknik Üniversitesi gösterebiliriz. Bunların hepsi internette bulunan ağlar. Elbette Türk Telekom ve Github aynı görevi görmüyor. Türk Telekom, AS’ler arası paketlerin iletilmesi görevini görürken, Github’ın böyle bir sorumluluk üstlenmiyor.
AS oluşturmak için illa büyük bir kuruluş olmaya gerek yok. Herhangi bir organizasyon, Bölgesel İnternet Yazmanlarına başvurarak (Regional Internet Registry) eşsiz bir AS numarası edinebilir ve internette tanınan bir özerk sistem oluşturabilir. Yukarıda linkini verdiğim videodan öğrendiğim kadarıyla, Bölgesel İnternet Yazmanlarına ödenen belirli bir senelik aidatı var.
Peki AS’ler birbirine bağlandıktan sonra paketleri birbirleri arasında nasıl değiştiriyorlar. Ben Turksat AS’inden GitHub’a ulaşmak istersem, benim paketim yolunu nasıl buluyor?
Her AS, kendisine atanmış olan IP bloğunu anons ediyor. Yani bu IP adreslerine ben bakıyorum, buna dair bir istek varsa bana gönderebilirsiniz diye komşu AS’lerine bir mesaj gönderiyor. Bu mesajı da BGP kullanarak yapıyor. Bu anonslar komşu AS’ler tarafından da tekrarlanıyor ve bu sayede sizin IP bloğununza hangi AS’ler üzerinden erişilebileceği bilgisi ağlar arasında yayılmış oluyor.
Burada Turksat AS’in bağlı olduğu diğer AS’leri görebilirsiniz. Turksat (AS47524) direkt olarak AS34984’a (Tellcom/Superonline) ve AS9121’a (Turk Telekom) bağlanmış.
Elbette ağ içerisinde bir noktadan (Turksat) diğer bir noktaya (GitBub) ulaşmak için pek çok farklı yol oluşabilir. Burada da BGP çeşitli kriterlere göre yönlendirme konusunda karar veriyor.
Örneğin, bir noktadan başka bir noktaya giderken en az AS’e uğrayarak gitmek en hızlı ve verimli yol oluyor ve bu tercih ediliyor. Bunun yanında BGP, AS’leri yöneten kişilerin de bu yönlendirmeye çeşitli konfigürasyonlarla müdahil olmasını sağlıyor. Örneğin AS’inize trafiğin belli bir komşu AS üzerinden gelmesine öncelik verebilirsiniz.
46.178.0.0 ila 46.178.255.255 IP’leri arasına ben bakıyorum anonsu yaptığınız zaman, sizin anonsunuzu geçersiz kılacak başka yöntemler de var. Örneğin geniş bir blok yerine daha dar aralıkta bir anons yapılmaya başlanırsa, BGP yönlendirmesi daha dar bloğa öncelik veriyor. Dolayısı ile aslında trafiği başka bir yere yönlendirmeye başlayabiliyorsunuz. Bu yöntemle, istemediğiniz bir kişi sizin belirli IP’nizi anons edip onu elegeçirebiliyor (BGP hijacking). Bu kötü amaçlı anonslar, elbette ağ içerisinde bulunan AS’ler tarafından bulunup filtrelenebiliyor. Ağ içerisinde yayılmıyor.
AS’ler fiziksel olarak tek bir noktada bulunmak zorunda değiller. Dünyanın her yerine dağılabilirler ve aynı IP bloklarını anons edebilirler. Bu sayede internet üzerinde çalışsan servisler, dünyanın her yerine kısa AS yönlendirmeleriyle hizmet verebilirler.
BGP’nin işi AS’ler arasındaki iletişimi sağlamak ve yönlendirme bilgilerini paylaşmak. Bir paket bir AS’den çıkıp (Turksat), başka bir AS’ye vardığında (GitHub) artık o paketin sorumluluğu Github ve onun yöneticileri üzerinde.
Çeşitli kaynaklar:
Herkesin izlemesini tavsiye edeceğim Engür Pişirici’nin sunumu. Başta internetin nasıl çalıştığını anlatıp, GitHub’a yapılan DDOS saldırısının nasıl BGP yönlendirmeleriyle önlendiğini anlatıyor.
Bu araştırmaları yaparken tesadüfen denk geldiğim muhteşem bir Youtube kanalı: internet-class.org. BGP ve AS üzerine videolarını izleyebilirsiniz.
Cloudflare’in BGP açıklayan makalesi.