Categories: AWSSharePoint Genel

AWS EC2 Yapılandırması – 02 – NAT Kurma

Merhabalar,
Yazımıza dünkü kaldığımız yerden devam ediyoruz. Bugünkü yazımızda private subnette olup, gerçek ip adresleri olmayan sunucuların yani elastic ip tahsis etmediğimiz sunucuların internete çıkması için NAT sunucusu kuracağız.

Birazdan yapacağımız çalışma hakkında aşağıdaki bilgileri bilmenizde fayda var.

  • Public ve private olmak üzere 2 Adet Subnetimiz var. Public Subnet içerisindeki sunucularımız internetten ulaşılabilir olacak. Buraya Web Sunucularını koyabiliriz.
  • Private Subnet içerisindeki sunuculara ise sadece kendi oluşturduğumuz VPC içerisindeki sunucular ulaşabilir. Bu sayede güvenliği sağlamış oluyoruz.
  • Public Subnet içerisindeki sunucular daha önce oluşturduğumuz Internet Gateway üzerinden internete çıkabilecekler.
  • Private Subnet içerisindeki sunucular ise kuracağımız NAT sunucusu üzerinden internete çıkabilecekler.
  • Public Subnette yer alan sunucular Public IP adreslerine sahip oldukları için o ip adresleri üzerinden kendilerine ulaşılabilinir.
  • Private Subnette yer alan sunuculara şu an için ulaşamazsınız. Zaten ulaşılamaması gerekiyor.
  • NAT sunucusu kurulduktan sonra bir adette Private Subnet içerisinde Test sunucusu kurup Private Subnet içerisindeki bir sunucunun internete çıkabillirliğini kontrol edeceğiz.
  • NAT sunucusu Public Subnette olduğu için kendisi de internete çıkarken Internet Gateway üzerinden çıkacak.
  • Daha önce oluşturduğumuz Route tabloları ile Public ve Private subnette yer alan sunucular yani kendi VPC’mizin içerisindeki sunucular birbirleri ile haberleşebilecek.

İlk olarak EC2 bölümünden Launch Instance bölümüne giriyoruz. AMI bölümü açılıyor.

Buradan Community AMIs kısmını seçiyoruz.
Arama kısmına amzn-ami-vpc-nat yazıp aratıyoruz.
Karşımıza çıkan seçeneklerden en üstte yer alan ve aşağıdaki görselde gördüğünüz AMI’yi seçiyoruz.
Karşımıza çıkan seçeneklerden sadece subnet kısmını Public Subnet’i seçiyoruz.
Disk bilgisi aynı kalabilir.
Alias olarak NAT tanımlıyoruz.
Security Group olarak daha önceki yazımızda tanımladığımız NAT Security Group’u seçiyoruz.
Bize bu sunucu için SSH 22 portunun açık olmadığını ve bu yüzden bağlanamayacağımız ile ilgili bir uyarı veriyor. Bu ayarı birazdan yapacağımız için Continue düğmesine basıp bir sonraki adıma geçiyoruz.
SSD kullanmamızı tavsiye eder nitelikte bir uyarı çıkıyor. Magnetic disk ile devam et seçeneğini seçip Next diyoruz.
Diğer sunucularda olduğu gibi bu sunucu için de bir Key Pair tanımlamızı istiyor. İsterseniz yeni key pair oluşturabilir veya benim gibi daha önce oluşturduğumuz key pair ilee devam et diyebiliriz.
Launch instance deyip işlemimize devam ediyoruz.
Sunucu kurulumu tamamlandıktan sonra Elastic IP kısmından yeni kurduğumuz NAT sunucusu için bir Public IP tahsis ediyoruz.
Instances kısmına girdiğimiz zaman status check’in tamamlandığını ve Public IP adresimizin tahsis edildiğini görüyoruz.
NAT sunucumuzun nat görevini yerine getirebilmesi için bir ayar yapmamız gerekiyor. Sunucumuzun ismi üzerinde sağ tıklayıp Networking kısmından Change Source/Destination Check’i tıklıyoruz.
Varsayılan olarak sunucularda bu özellik aktif halde geliyor. NAT işlemini gerçekleştirmesi için Disable ediyoruz (Enable ve Disable’ın tam türkçe karşılığını bulamadım).
Bu sunucuya bağlı olan Security Group’ta bazı değişiklikler yapmamız gerekiyor. Gelen ve giden kurallara bazı ek kurallar ekleyeceğiz.
Gelen kuralları aşağıdaki gibi değiştiriyoruz. Buradaki kuralların anlamı şu: bu sunucuya gelen 80 ve 443 isteklerini kabul et. Ben şimdilik Anywhere seçtim. Ama güvenlik amacı ile oraya kendi Private Subnet’inizi girebilirsiniz. SSH portu kısmına güvenlik için varsa sabit IP adresiniz onu girin. Mesela 84.105.16.218/32 şeklinde girebilirsiniz.

Giden kurallar kısmına HTTP ve HTTPS’i ekliyoruz. Bu sunucunun internete çıkabilmesi için.
Bu işlemlerden sonra Route Table’larımızda bazı değişiklikler yapacağız. Public Subnetimizdeki makineler internete daha önce tanımladığımız Internet Gateway üzerinden çıkacaklar. Private Subnet içerisindeki makineler NAT üzerinden çıkacaklar. Yani Private Subnet içerisindeki bir makine 0.0.0.0/0 ‘a giderken (Kendi Route Tablosunda yer almayan bütün IP adresleri için) NAT üzerinden geçsinler diyeceğiz. Test işlemleri sırasında NAT sunucumuzdan Private Subnette yer alan sunucularımıza ssh ile bağlanabilmek için SSH portunu açıyoruz ve Private Subnet’imizi seçiyoruz.
NAT sunucumuzun dışarıya ping atabilmesi için ICMP’ye giden kurallardan izin veriyoruz.

Test işlemlerimiz için Private Subnette bir sunucuya ihtiyacımız var. Hızlı ve kolay olması için bir adet linux sunucu kuruyorum. Security group olarak Private Security group’u seçiyorum.
Sunucumuzun kurulumu sonrasında Private Security group’a içeriden SSH ile bağlanılabilmesi için VPC miz için ayırdığımız IP bloğunu giriyorum. Bu sayede sadece kendi VPC’em içerisindeki sunucular SSH isteği gönderebilecekler.
Sunucularımız hazır olduğuna göre artık testimize başlayabiliriz. Sunucularımız linux tabanlı olduğu için bazı basit yazılımlara ihtiyacımız var. Bu yazılımları http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html adresinden indirmemiz gerekiyor. Bizlere SSH bağlantısı yapabilmemiz için PuTTY, pem uzantılı Key Pair dosyamızın PuTTY tarafından anlaşılması için pem dosyasını ppk dosyasına dönüştüren PuTTYgen ve PPK dosyasını kullanabilmek için Pageant programlarına ihtiyacımız var. Bu programları ve pem dosyasını bir klasörde toplayabilirsiniz.
pem dosyamızı ppk’ya dönüştürmek için PuTTYgen programını açıyoruz. File menüsünden Load private key’i seçip pem dosyamızı gösteriyoruz.
Bu işlemden sonra Save Private Key düğmesine basıyoruz ve çıkan uyarıya Yes deyip işlemimizi tamamlıyoruz.
ppk dosyamızı oluşturduktan sonra Pageant programını açıyoruz ve Add Key deyip oluşturduğumuz ppk dosyasını seçiyoruz.
Bu işlemden sonra PuTTY programını açıyoruz. ve Soldaki ağaç menüden Connection\SSH\Auth kısmına geliyoruz ve oradan Allow agent forwarding’i seçiyoruz.
Tekrar Session kısmına gelip NAT sunucumuza tahsis ettiğimiz Public IP adresini girip Open tuşuna basıyoruz.

PuTTY ilk defa bağlandığı sistemler için çıkardığı uyarıyı gösteriyor. Bu ekranda Yes deyip işlemimize devam ediyoruz.
Açılan pencerede login-as kısmında ec2-user yazıyoruz ve enter’a basıyoruz.

Ve NAT sunucumuza bağlanıyoruz. Internete çıkabildiğini test etmek için bir adrese ping atıyoruz.
NAT sunucumuzun internete çıkabildiğini test ettikten sonra private subnet içerisinde oluşturduğumuz sunucunun internete çıkışını test etmemiz gerekiyor. Bu işlem için bulunduğumuz terminal içerisinden ssh ile test sunucumuza bağlanmamız gerekiyor. EC2 bölümündeki Instance kısmında yer alan test sunucumuzun özelliklerinde Private IP adresini alıyoruz.
Açık olan NAT sunucusuna bağlı terminalimizden shh ile test sunucusuna bağlanmamız gerekiyor. Bu işlem için ssh ec2-user@10.0.1.208 komutunu giriyoruz.
Başarı ile bağlandıktan sonra test sunucumuz üzerinden yine bir adrese ping atmamız yeterli olacaktır.Evet gördüğünüz üzere private subnet içerisindeki bir makinemiz internete çıkış yapabiliyor.
Bu işlemlerden sonra NAT Security Group içerisindeki geçici portları silebilirsiniz.
Peki şu soruyu kendimize sormamız gerekiyor. NAT sunucusu ile işimiz bittikten sonra Dışarıdan gelen SSH isteklerini kapatacağız. Bu sefer Private Subnetteki sunucularımıza nasıl ulaşacağız? Her ulaşmak istediğimizde Security Grouplar içerisinden port açıp işimiz bitince tekrar kapatacak mıyız? Belli bir süre sonra bu işlem işkenceye dönüşebilir. Peki nasıl yapacağız? Cevabımız bir sonraki yazımızda.
Görüşmek üzere.
Konunun ana başlığı için: Sharepoint 2013 Yazı Dizisi – 01 – Giriş
Kaynaklar:
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html
https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Scenario2.html
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html

Hasan KÖROĞLU

Recent Posts

SharePoint TechNet/MSDN Forumları emekliye ayrılıyor

Microsoft SharePoint Technet ve MSDN forumları yerini Microsoft Q&A tartışma panolarına yerini bırakıyor. 10 Ağustos…

4 sene ago

Lokalde React ile uzak SharePoint ortamında Rest API ile çalışmak

Biliyorum, başlık çok garip, ilk bakışta anlaşılması zor. Ama şöyle tarif etmeye çalışayım. Bildiğiniz üzere…

5 sene ago

TypeScript Geliştirme Ortamı Hazırlama

Merhaba Arkadaşlar, Bu yazımızda sizlere TypeScript geliştirme ortamının (TypeScript Development Environment) nasıl hazırlanacağından bahsedeceğim. Öncelikle…

6 sene ago

TypeScript ile SystemJS kullanma

Merhabalar, bu yazımızda sizlere bir TypeScript projesinde farklı ts dosyaları içerisindeki function, class veya interface'lerin,…

6 sene ago

TypeScript – Giriş

Merhaba arkadaşlar, Yakın zamanda TypeScript öğrenmeye başladım. Hem öğrendiklerimi pekiştirmek hem de sizlerle paylaşmak adına…

6 sene ago

SharePoint için Responsive UI

Merhaba Arkadaşlar, Bu yazımızda sizlere mevcut SharePoint portalimizin, tablet, cep telefonu gibi farklı çözünürlükteki cihazlarda…

6 sene ago