Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

iptables'ı NAT (Ağ Adresi Çevirisi) ve Masquerading için Kullanarak Sunucuyu Basit Bir Router'a Dönüştürme

nexter

Üye
Katılım
14 Mart 2026
Mesajlar
28
Merhaba arkadaşlar, bugün sizlere Linux sunucunuzu, arkasındaki cihazların internete çıkmasını sağlayan basit ama etkili bir router'a nasıl dönüştüreceğinizi anlatacağım. Özellikle test ortamlarında, sanal makinelerde veya küçük ofis ağlarında ek bir router cihazı almak yerine mevcut sunucunuzu bu iş için kullanabilirsiniz. Bu sayede hem maliyetten kurtulur hem de iptables kurallarıyla ağ trafiğinizi ince bir şekilde yönetme şansına sahip olursunuz.

🔧 Gereksinimler ve Ağ Yapısı

Bu rehberi uygulayabilmeniz için sunucunuzda en az iki ağ arayüzünüz (NIC) olmalı. Genellikle bunlar:
- eth0 veya ens192: WAN tarafı (İnternete bağlı olan, genel IP'li arayüz)
- eth1 veya ens224: LAN tarafı (İç ağdaki cihazların bağlanacağı, özel IP'li arayüz, örn: 192.168.10.1)

Ayrıca, iç ağdaki istemci cihazların (bilgisayar, telefon vb.) gateway (ağ geçidi) adresi olarak bu sunucunun LAN IP'sini (örn: 192.168.10.1) girmiş olmaları gerekiyor.

⚙️ Adım 1: IP Yönlendirmesini Aktif Etme

Öncelikle, sunucumuzun paketleri bir ağ arayüzünden diğerine iletmesine (forward) izin vermemiz lazım. Bu kernel seviyesinde bir ayar.

Geçici olarak etkinleştirmek için:
Bash:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Kalıcı olarak etkinleştirmek için /etc/sysctl.conf dosyasını düzenleyelim:
Bash:
sudo nano /etc/sysctl.conf

Aşağıdaki satırı bulun veya dosyanın sonuna ekleyin:
Kod:
net.ipv4.ip_forward = 1

Değişikliği kaydedip çıktıktan sonra, sysctl'yi yeniden yükleyin:
Bash:
sudo sysctl -p

📦 Adım 2: iptables Kurallarını Yazma (NAT & Masquerade)

Asıl işi yapacak kısım burası. LAN'dan gelen paketlerin, WAN arayüzünden çıkarken kaynak adreslerinin sunucunun WAN IP'si ile değiştirilmesi (masquerade) gerekiyor. Bu, iç ağdaki cihazların özel IP'lerini gizler.

Temel masquerade kuralını ekleyelim:
Bash:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Bu komutta -o eth0 ifadesi, paketlerin çıkış yaptığı WAN arayüzünü belirtir. Kendi arayüz adınızla değiştirmeyi unutmayın (örneğin ens192).

⚠️ Güvenlik İçin Temel Firewall Kuralları

Router'ımız aynı zamanda bir güvenlik duvarı görevi de görmeli. LAN tarafından gelen ve WAN'a çıkacak trafiğe izin verirken, istenmeyen girişleri engelleyelim. Benim genelde uyguladığım basit bir politika şöyle:

Öncelikle mevcut kuralları temizleyip varsayılan politikaları DROP (reddet) yapalım. Dikkat! Bu komutları fiziksel konsoldan veya bir SSH bağlantısı üzerinden değil, doğrudan sunucuda çalıştırıyorsanız bağlantınız kesilebilir. Çok dikkatli olun.
Bash:
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -X
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

Şimdi, güvenli bir şekilde SSH ve loopback trafiğine izin verelim:
Bash:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

En kritik kısım, LAN'dan WAN'a yönlendirme (forward) trafiğine izin vermek:
Bash:
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

İlk kural, LAN'dan (eth1) gelen ve WAN'a (eth0) gidecek tüm trafiğe izin verir.
İkinci kural ise, WAN'dan gelen ve daha önce LAN'dan çıkmış bir bağlantıya ait olan (ESTABLISHED, RELATED) cevap paketlerinin iç ağa geçişine izin verir. Bu olmazsa, iç ağdaki cihazlar internetten cevap alamaz.

💾 Adım 3: Kuralları Kalıcı Hale Getirme

iptables kuralları geçicidir, sunucu yeniden başlatılınca uçar. Onları kaydetmemiz gerekir.

Debian/Ubuntu sistemlerde:
Bash:
sudo apt-get install iptables-persistent -y
Kurulum sırasında mevcut kuralları kaydetmek isteyip istemediğiniz sorulur, evet deyin. Sonradan kaydetmek için:
Bash:
sudo netfilter-persistent save

RHEL/CentOS/Fedora sistemlerde:
Bash:
sudo service iptables save
veya
Bash:
sudo /sbin/iptables-save > /etc/sysconfig/iptables

🎯 Son Kontroller ve Test

Her şeyin yolunda gidip gitmediğini kontrol edelim:
Bash:
sudo iptables -L -n -v  # INPUT/OUTPUT/FORWARD zincirlerini listele
sudo iptables -t nat -L -n -v  # NAT tablosunu listele (masquerade kuralınızı görmelisiniz)

Artık iç ağınızdaki bir cihazdan internete ping atmayı veya bir web sitesine bağlanmayı deneyebilirsiniz. Eğer çalışmıyorsa, istemci cihazdaki gateway ve DNS ayarlarını, sunucudaki arayüz isimlerini ve firewall kurallarınızı tekrar kontrol edin.

Umarım bu rehber faydalı olmuştur. Ben test lab'larımda ve bazı müşterilerin küçük şubelerinde bu yapıyı sıklıkla kullanıyorum. Esnekliği ve kontrol imkanı gerçekten hoş. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Eklemek istediğiniz püf noktalar veya takıldığınız bir yer varsa aşağıya yazmaktan çekinmeyin. Kolay gelsin!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri