AWS Networking Essentials: Exploring VPC and Other AWS Network Components🌐 🛠️

Oğuzhan Purtaş
Miuul AWS Community
8 min readMar 2, 2024

--

Merhaba bulut severler! Bugün, AWS’nin network dünyasına bir pencere açacağız. Bu yazıda, AWS’nin sunduğu ağ bileşenlerini keşfedeceğiz ve özellikle Virtual Private Cloud (VPC) gibi temel unsurlara odaklanacağız. Şu an için amacımız, AWS’nin ağ mimarisini daha yakından tanımak ve temel ağ kavramlarına giriş yapmaktır. Ancak unutmayın, bir sonraki yazımızda daha derinlere inerek geleneksel temel ağ bilgileri üzerine yoğunlaşacağız. Şimdi, AWS’nin ağ dünyasına birlikte göz atalım ve bu heyecan verici yolculuğa başlayalım. 🚀

Amazon’da temel ağ sistemimiz Virtual Private Cloud (VPC) içerisinde yer alır. Amazon Web Services (AWS) bulutunda özelleştirilmiş sanal ağlar oluşturmanıza olanak tanır. Her VPC, belirli bir AWS hesabına özeldir ve bir AWS bölgesinde yer alır. VPC içinde Availability Zone’lara denk gelen public subnetler bulunur. Bir sistemi yada servisi ağa yüklemek istediğimizde genellikle bunu bir subnet’e eklememiz gerekir (bazı istisnalar vardır, örneğin Internet Gateway doğrudan VPC’ye attach edilir).

Yukarıdaki şemayı incelediğimizde: Başlangıç noktamız EC2'dur (sanal standart bilgisayar). Ancak, asıl konumuz Elastic Network Interface üzerinden başlıyor. Bir bilgisayardan internete bağlandığımızda, iletişim paketler aracılığıyla gerçekleşir. Peki, nedir bu paketler ve nasıl iletilirler?

💡 Paketlerin İletilmesi: Bir bilgisayarın internete bağlanması, iletişim paketlerinin gönderilmesiyle gerçekleşir. Bu paketler, veri iletimi için kullanılan TCP ve UDP gibi taşıyıcı protokoller tarafından iletilir.

📦 Paketlerin Yapısı ve İletilme Süreci:

  • Paket, genellikle alıcı adresi ve gönderici adresi gibi bilgiler içerir.
  • Paketler, belirli bir maksimum transfer birimi (MTU) boyutunda oluşturulur. MTU, genellikle 1500 bayttır. (1 harf 1 bayttır)
  • Paketler EC2 içerinde oluşturulur ve Elastic Network Interface, paketlerin oluşturulmasından sonra devreye girer. ENI, sanal bir ağ kartıdır ve fiziksel ağ kartının karşılığıdır.
  • ENI’den sonra paket, güvenlik duvarı (Security Group) ve ardından Network Access Control List (ACL) gibi güvenlik katmanlarına gider.
  • Son olarak, paket router’a gelir. Router, paketin yönlendirileceği yere karar verir ve paket üzerinde değişiklikler yapabilir. (Paketin header kısmında, bu kısımları Network-101 yazımızda detaylı olarak görecegiz şu anda genel mimariyi AWS üstünden anlamaya çalışıyoruz.)
  • Bir paketin dışarı çıkması gerekiyorsa (örneğin, Wikipedia’dan bir sayfa indiriliyorsa), öncelikle commutation başlatmalıyız burdan bununla alakalı header ve requestlerin yazılı olduğu paketleri Internet Gateway’den dışarı çıkarırız oradan Wikipedia’ya gider ve Wikipedia’dan gelen yanıt tersine benzer bir yol üzerinden geri döner.

Bu süreç, bilgisayarlarımız ile internet arasındaki iletişimin temelini oluşturur. Cloud ortamındaki bu yapıya paralel olarak, on-premise ortamında da benzer bir iletişim gerçekleşir, bu ufak farklılıkları bir sonraki Network101 yazımızda detaylıca ele almış olacağız.

🌊 Özet anlatım bu şekilde suyumuz biraz daha ısındıysa biraz daha derinlere dalabiliriz :)

🛡️ EC2'da Paketi Oluşturma ve Güvenlik Duvarları

Öncelikle, EC2 paketi oluştururken kendi bilgilerini yazar (Source IP adresi, port, TTL vb.). Paket ilk olarak birinci güvenlik duvarından geçer (Security Group). Bu güvenlik duvarı, tüm çıkışlara izin verir. İkinci güvenlik duvarı (ACL) ise varsayılan olarak devre dışıdır, yani herhangi bir kural bulunmaz, paket geldiği gibi çıkar, tüm portlar ve IP adresleri için açıktır.

🌐 Yönlendirme ve İnternet Erişimi

Daha sonra, paket router’a gelir ve router paket tablosuna göre yönlendirme yapar. Yani önce paketin hangi IP’ye gideceğine bakar, eğer hedef adres dışarıdaysa, internet geçidine yönlendirilir. Eğer adres içeride (aynı VPC içinde) ise, içeriye yönlendirilir (başka bir router gibi). Sider range’ine göre paketin hedefine karar verilir. Varsayılan bir VPC oluşturduğumuzda, Internet Gateway, router’lar ve Network Access Control List’ler(ACL) otomatik olarak oluşturulur. Bizim tek yapmamız gereken Elastic Network Interface’ler(ENI'ler) oluşturmak. Güvenlik gruplarını (security group) da ihtiyaç doğrultusunda düzenlememiz gerekebilir.

🔄 İnternet Gateway ve Router Yönlendirmesi

İnternet gateway’e ulaştıktan sonra, paket dışarıdaki bir router’a gelir (Internet Service Provider’ın router’ına). Buna internet geçidinin dış bacağı da denir, bu bacağın IP’si ve bu router aynı ağ içindedir (bu adım genellikle ilk hop olarak adlandırılır). Daha sonra, ikinci router’a da bilgiler sunulur ve en uygun yönlendiriciye yönlendirilir (2. hop). Ardından üçüncü ve dördüncü hoplar (maksimum hop sayısı TTL ile belirlenebilir, ayrıntılar Network101'de) ve sonunda ilgili sunucuya (Örneğin google) ulaşılır.

İnternette adresleme sistemi tamamen IP ve port üzerinden gerçekleşir. Pakete yazılan kaynak IP 32 bit uzunluğundadır, hedef IP de 32 bit boyutundadır. Detaylar için Network101'e bakınız.

🔙 Paketin Geri Dönüşü ve Adresleme

Google sunucusu bu isteği algılar (request) ve buna yanıt olarak geri bir paket gönderir. Bu geri dönüş işlemi, kaynağımızın IP adresinin benzersiz olmasını gerektirir, böylece bizim makinemiz doğruca bulunabilir.

Genel akışı biraz daha tanıdıktan sonra şu network compenent’lerini biraz daha açalım 🙂

1) Elastic Network Interface ve Servislerin Bağlantısı

  • Elastic Network Interface, EC2'nin çıkışına konumlanır; bir ucu bilgisayarımıza, diğer ucu ağa attach olur.
  • Servisler (Lambda, RDS, ElastiCache) subnetleri birbirine bağlayarak iletişimi sağlar.
  • Lambda, VPC içinde veya dışında çalışabilir. Lambda içeride çalışacaksa, ENI atanmalıdır ve Amazon bunu otomatik olarak yapar. Lambda oluşturulurken VPC seçildiğinde subnetler açılır ve seçtiğimiz subnette AWS otomatik olarak ENI oluşturup ağımıza bağlar.
  • Lambda’yı sildiğimizde, boşta ENI kalır ve 4 saatte kadar bir garbage collector’lar bu ENI’leri toplar. Bu biraz bug gibidir, çünkü VPC’yi de silemiyoruz bu çöp toplama sürecinde, bu nedenle Amazon tarafından bu atıklar temizlenene kadar VPC durur🤔.
  • Diğer bir servis örneği RDS’tir. RDS’ın alternatifi yoktur ve RDS’ın mutlaka VPC’nin ve subnetin içinde oluşturulması gerekir; bunun da ENI’si Amazon tarafından otomatik olarak oluşturulur.
  • ElastiCache, key ve value mantığıyla çalışır ve RAM’de çalışan çok hızlı bir veritabanı türüdür. (RDS’den yaklaşık olarak 200 kat daha hızlı)
  • Redshift hem standart hem de serverless modda çalışabilir. Standart modda çalışırken bir ağa ihtiyaç duyarken, serverless modda ağa ihtiyaç duymaz.
  • Sagemaker, ENI’nin otomatik olarak oluşturulduğu bir hizmettir. Bu, kullanıcıların makine öğrenimi modellerini oluşturmak, eğitmek ve dağıtmak için gelişmiş bir platform sağlar.

ENI’lerin Önemi:

Ayrıca, ağda bir şeyin yerini anlamak için ilk bakmamız gereken ENI’lerdir (Elastic Network Interfaces). Bir ENI’yi yakalarsak, o servisin nerede olduğunu da bulabiliriz. Örneğin Bir web sunucusunun IP adresini bilmiyorsanız, ancak hangi ENI’ye bağlı olduğunu biliyorsanız, ENI’nin özelliklerini kullanarak sunucunun IP adresini bulabilirsiniz.

2) Elactic Network Interface’lerin Subnet’e Bağlanması ve ACL

  • ENI’leri subnet’e doğrudan attach edemeyiz; bunun önünde illa ki bir security group olmalıdır. ACL, subneti oluşturduğumuzda varsayılan olarak gelir ve bu, public subnetın içindeki bütün servisleri yönetir.

3) Dinamik VPC Yönetimi

  • VPC’ye dinamik olarak attach veya detach edebiliriz.

4) Elastik IP ve IP Atama Hizmeti

  • Elastik IP, statik IP’nin Amazon karşılığıdır. Public IP (global internet üzerinde bizi tanıyabilecekleri IP) ve Private IP ise iç networkte geçerli olan bir IP adresidir. IP atama hizmeti eni tarafından sağlanır ve eni oluşturduğumuzda IP adresimiz Amazon tarafından otomatik olarak atanır. Public IP’miz yoksa, Private IP ile maksimum Internet Gateway’e kadar gidebiliriz. Dışarı çıkabilmek için public IP şarttır.

Security Group: Stateful Filtreleme

Security Group, VPC’nizdeki kaynaklarınızı ağ trafiğine karşı korumak için kullanılan sanal güvenlik duvarlarıdır. Stateful (durumlu) bir yapıya sahip olan security grupları, herhangi bir girişin veya çıkışın durumunu izleyerek izinsiz erişimi engeller.

🔒Kural Yazmaya Gerek Yok:

Geleneksel güvenlik duvarlarının aksine, security grupları için karmaşık kurallar yazmanıza gerek yoktur. Bu yapıda, servise erişim isteyen tüm trafiğe filtreleme uygulanır.

🚪Dışarıdan Giriş Trafiği:

AWS Security Group’ta dışarıdan içeriye bir trafik akışı başlatmak istiyorsanız, “Inbound rules” bölümünde aslında port açma kurallarını belirtirsiniz. Yani, belirli bir portu dış dünyaya açmak istiyorsanız, o portun giriş kurallarını Security Group’ta tanımlarsınız.

📝Loglama ve İzleme:

Security group aktivitelerini kolayca loglayabilir ve detaylı bir şekilde inceleyebilirsiniz.

🛡️Default Security Group:

VPC’yi ilk oluşturduğunuzda otomatik olarak oluşturulan default security group, tüm portları ve tüm IP’leri açık hale getirerek geniş bir erişim imkanı sunar. Bu nedenle, güvenliğinizi optimize etmek için kendi security gruplarınızı oluşturmanız ve kuralları hassas bir şekilde tanımlamanız önemlidir.

🔗Multi-Security Group:

Tek bir servise birden fazla security group atayarak daha karmaşık ve esnek erişim kontrol mekanizmaları oluşturabilirsiniz.

🔖Prefix List:

Prefix list özelliği ile çalışanlarınızın IP adreslerine özel bir firewall kurarak ağ erişimlerini daha ayrıntılı bir şekilde kontrol edebilirsiniz.

Network Access Control List (NACL)

🔒Stateless NACL Nedir?

Stateless NACL, ağ trafiğini kontrol etmek için kullanılan bir güvenlik duvarı türüdür. Bağlantıların geçmişini takip etmez, her paketi tek başına değerlendirir.

🔓Varsayılan Durum:

Bir NACL oluşturduğunuzda, herhangi bir kural eklemezseniz, tüm trafik NACL’den geçer. Bu, varsayılan olarak NACL’nin devre dışı olduğu ve tüm trafiğe açık olduğu anlamına gelir.

🚦Kuralların Etkisi:

NACL’ye eklediğiniz her kural, belirli bir protokol, port ve IP adresi aralığı için trafiğe izin verir veya reddeder. Kurallar, NACL’nin açık veya kapalı olmasını belirler.

✍️Kural Yazma:

NACL kuralları hem içeriden hem de dışarıdan yazılabilir. Bu, hangi trafiğin izin verileceğini veya reddedileceğini hem sunucu hem de ağ yöneticilerinin kontrol edebileceği anlamına gelir.

📌Ek Notlar:

  • NACL’ler, subnet’leri korumak için kullanılır.
  • Security Group’lar ise EC2 instance’ları korumak için kullanılır.
  • NACL’ler ve Security Group’lar birlikte kullanılabilir.
  • NACL’ler stateless olduğu için, hem gelen hem de giden trafik için ayrı kurallar yazmanız gerekir.

🌐Sonuç ve Önümüzdeki Yolculuk

Bu yazıda, AWS’nin network dünyasına giriş yaptık ve temel ağ bileşenlerini keşfettik. VPC, ENI, Security Group, İnternet Gateway ve NACL gibi kavramları inceledik ve bunların nasıl çalıştığını anladık.

Bu bilgiler ışığında, ağınızı nasıl güvenli bir şekilde oluşturabileceğinize ve yönetebileceğinize dair temel bir anlayışa sahip oldunuz.

Ancak bu sadece başlangıç! Network dünyası oldukça geniş ve keşfedilecek daha birçok şey var. Bir sonraki yazımızda, Network 101'e dalarak ağ temellerini daha detaylı bir şekilde inceleyeceğiz. IP adresleme, subnet maskesi, portlar, protokoller ve routing gibi temel network kavramlarını ele alacak ve bu kavramların on-premises’de ve AWS Cloud üzerinde nasıl uygulandığını göreceğiz.

Buraya kadar yazıma eşlik edenlere teşekkür ederim 🙏

Ek Kaynaklar 🔍

  • AWS Resmi Dokümantasyonu: AWS’nin sunduğu tüm ağ bileşenleri hakkında ayrıntılı bilgi edinmek için resmi dokümantasyonu inceleyebilirsiniz.
  • AWS Networking Blog: AWS’nin ağ ekibi tarafından yayınlanan blog yazıları, güncel bilgiler ve en iyi uygulamalar hakkında bilgi edinmek için ideal bir kaynak.
  • AWS re:Invent 2023 Networking Sessions: AWS’nin yıllık konferansında sunulan ağ oturumlarını izleyerek AWS’nin en son ağ teknolojileri hakkında bilgi edinebilirsiniz.

Kaynakça 📚

--

--