26 Kasım 2016

Kali Linux - Bölüm 10: Linux'u Router Haline Getirme

Linux bilgisayarınızın bir router gibi davranması gereken durumlara örnekler sunucunuz üzerinde bir VPN servisini çalıştırma veya sunucunuzu bir erişim noktası (Access Point) olarak yapılandırma durumlarınız verilebilir. Böyle bir durumda sadece routing değil kendi networkünüzdeki diğer cihazlarda da routing ayarları yapma derdinden kurtulmak için NAT (Network Address Translation) ihtiyacınız da olabilir. Böylece sizin ağınızdaki cihazlar sizin aracılığınızla iletilen paketlerin hangi kaynak IP adresinden geldiğini ve buna göre yanıtları nereye döneceklerini düşünmek zorunda kalmaz, sizin sunucunuz kaynak IP adresini NAT’layacağı için gönderilen paketlerin yanıtları da sizin üzerinizden geri döner.

Ne iyidir ki, Linux kernel’ının routing (konumuz kapsamında daha doğru ifadesiyle forwarding) desteği, IPTABLES’ın da NAT desteği bulunmaktadır.
Forwarding’i aktif hale getirmek oldukça kolay:


IP forwarding’i çalışma anında aktif hale getirmek için “/proc/sys/net/ipv4/ip_forward” dosyasına “1” yazabilir veya “sysctl –w net.ipv4.ip_forward=1” komutunu çalıştırabiliriz. “/proc” dizini çalışmakta olan proses’ler ve sistem durumuna ilişkin verilerin tutulduğu sanal bir dosya sistemidir, gerçekte disk üzerinde böyle bir alan bulunmamaktadır.

Yukarıdaki komutlar çalıştırıldıkları anda forwarding’i aktif hale getirir, ancak sistem reboot ettiğinde bu ayar geçerliliğini yitirir. Forwarding’in kalıcı olması için aşağıdaki işlemin yapılması gerekir.


“/etc/sysctl.conf” dosyasındaki “net.ipv4.ip_forward=1” satırı önündeki comment işareti kaldırılarak (veya bu satır yoksa eklenerek) forwarding aktif hale getirilir. Ancak bu değişikliği yaptığınız anda “cron” servisinde olduğu gibi konfigürasyon dosyasındaki değişiklik sistem tarafından algılanmaz. Bu değişikliğin bir sonraki reboot’u veya ağ servisinin tekrar başlatılmasını beklemeden aktif olmasını istiyorsak “sysctl –p /etc/sysctl.conf” komutu ile konfigürasyonu tekrar yüklemek gerekir.


Kernel’da forwarding’i aktif hale getirdikten sonra “iptables” üzerinde 2 kural tanımlamamız gerekir:
  • Forward edilecek paketleri ACCEPT et (filter tablosunun FORWARD chain’inde)
  • Forward edilecek paketlerdeki kaynak IP adresini çıkış için kullanılacak arayüzünküyle değiştir (nat tablosunun POSTROUTING chain’inde)


Yukarıda öncelikle tüm tabloları flush ettikten sonra tüm chain’leri temizliyoruz. Daha sonra birinci olarak filter tablosunda (eğer tablo ismi belirtilmemişse bu tablo öntanımlı olarak “filter” tablosudur) FORWARD chain’inde eth0 arayüzünden gelen paketler için bir ACCEPT kuralı tanımlıyoruz. Bizim sistemimizde tek bir arayüz var, bu nedenle bir sonraki kuralda çıkış arayüzü olarak da eth0’ı kullanıyoruz. Eğer sistem üzerinde birden fazla arayüz olsaydı çıkış arayüzü olarak diğer arayüzü kullanmamız gerekirdi. Sonraki kural da tahmin edilebileceği gibi “nat” tablosunda bulunan “POSTROUTING” chain’ine bir MASQUERADE kuralı ekliyor. Bu kural sayesinde NAT işlemimiz de gerçekleşmiş olacak.

Bu eklediğimiz kurallar sadece mevcut oturumumuz için geçerli. Eğer sistem her reboot ettiğinde bunların geçerli kalmasını istiyorsak o halde ya bu kuralları bir dosyaya kaydetmeli (iptables-save komutu ile) ve her reboot’ta bir script ile bu kuralları uygulamalı veya “iptables-persistent” paketini kullanarak bu işi bu pakete bırakmalıyız.




“iptables-persistent” uygulaması kurulum sırasında şu andaki kurallarımızı bundan sonraki reboot’larda aktif olmak üzere saklamayı isteyip istemediğimizi soruyor.

<<Önceki Bölüm                                                                                               Sonraki Bölüm>>