Linux Sunucuda TCP Connection Tracking Limit

Linux sunucularında TCP bağlantı takibi, ağ trafiğinin verimli yönetilmesi için kritik bir unsurdur.

Reklam Alanı

Linux sunucularında TCP bağlantı takibi, ağ trafiğinin verimli yönetilmesi için kritik bir unsurdur. Netfilter çerçevesi altında çalışan conntrack modülü, aktif TCP bağlantılarını izleyerek güvenlik duvarı kurallarının stateful olarak uygulanmasını sağlar. Ancak yüksek trafik yükü altında varsayılan bağlantı takip limitine ulaşmak, yeni bağlantıların reddedilmesine yol açabilir. Bu durum, web sunucuları, veritabanı kümeleri veya bulut tabanlı uygulamalarda performans düşüşlerine neden olur. Bu makalede, TCP bağlantı takip limitini anlamak, teşhis etmek ve optimize etmek için adım adım rehberlik sunacağız. Sunucu yöneticileri için pratik çözümlerle, sistem kararlılığını artırabilirsiniz.

TCP Bağlantı Takibi (Conntrack) Mekanizması

Conntrack, Linux çekirdeğinin netfilter alt sisteminde yer alan bir mekanizmadır ve her TCP bağlantısını benzersiz bir akış (flow) olarak kaydeder. Bu kayıtlar, kaynak/destinasyon IP’leri, portlar ve protokol bilgilerini içerir. Varsayılan olarak, çekirdek hash tablosu boyutu 65.536 girişe kadar destekler, ancak bu değer sistem belleği ve yüküne göre yetersiz kalabilir. Conntrack tablosu dolduğunda, yeni bağlantılar “nf_conntrack: table full, dropping packet” hatasıyla reddedilir, bu da istemci tarafında bağlantı zaman aşımı hatalarına yol açar.

Sistemde conntrack’ın etkin olup olmadığını doğrulamak için lsmod | grep conntrack komutunu çalıştırın. Modül yüklüyse, bağlantı takibi aktif demektir. Yüksek eşzamanlı bağlantılara sahip sunucularda (örneğin, DDoS saldırıları veya popüler web siteleri), tablo doluluğu sık rastlanan bir sorundur. Bu mekanizmayı anlamak, limit ayarlamalarını doğru yapmanızı sağlar ve gereksiz kaynak tüketimini önler.

Mevcut Limitleri ve Kullanımı Teşhis Etme

Sysctl Parametrelerini Görüntüleme

Sysctl arayüzü üzerinden conntrack limitlerini kontrol etmek en pratik yöntemdir. sysctl net.netfilter.nf_conntrack_max komutuyla maksimum bağlantı sayısını, sysctl net.netfilter.nf_conntrack_count ile mevcut kullanımını görüntüleyin. Örneğin, bir sunucuda nf_conntrack_max 262144 olarak ayarlanmışsa ve count değeri 250000’e yaklaşıyorsa, limit aşımı riski yüksektir. Ayrıca cat /proc/sys/net/netfilter/nf_conntrack_max ile doğrudan dosya okuma yapabilirsiniz. Bu veriler, sistem loglarında (/var/log/messages veya dmesg) görülen “table full” uyarılarını doğrular.

Conntrack Tablosunu İzleme ve Analiz

Conntrack tablosundaki detaylı bilgileri conntrack -L veya cat /proc/net/nf_conntrack ile listeleyin. Bu çıktı, her bağlantının protokol, durum (ESTABLISHED, SYN_SENT vb.) ve timeout değerlerini gösterir. Yoğun TCP trafiğinde, uzun süreli bağlantılar tabloyu tıkayabilir; bu durumda conntrack -D --orig-prot tcp --orig-port 80 gibi filtrelerle eski girişleri temizleyin. İzleme için watch -n 1 "cat /proc/sys/net/netfilter/nf_conntrack_count" komutunu kullanın, böylece gerçek zamanlı doluluk oranını takip edebilirsiniz. Bu teşhis adımları, sorunun kök nedenini belirlemenize yardımcı olur ve proaktif yönetim sağlar.

Limitleri Artırma ve Yapılandırma Yöntemleri

Geçici (Runtime) Ayarlamalar

Hızlı müdahale için sysctl komutunu kullanın: sysctl -w net.netfilter.nf_conntrack_max=524288. Bu, tabloyu anında büyütür, ancak yeniden başlatmada sıfırlanır. Hash tablosu boyutunu da sysctl -w net.netfilter.nf_conntrack_buckets=65536 ile ayarlayın (maksimumun dörtte biri kadar olmalı). Değişiklikleri doğrulamak üzere sysctl net.netfilter.nf_conntrack_max çalıştırın. Bellek kullanımı artacağından, sunucunuzun RAM kapasitesini (örneğin 16 GB+) göz önünde bulundurun; her giriş yaklaşık 300-400 bayt yer kaplar.

Kalıcı Yapılandırma Adımları

Kalıcı değişiklik için /etc/sysctl.conf dosyasını düzenleyin: echo 'net.netfilter.nf_conntrack_max = 524288' >> /etc/sysctl.conf ve sysctl -p ile yükleyin. Benzer şekilde nf_conntrack_buckets ekleyin. Yüksek trafik sunucuları için önerilen değerler: 1 milyon bağlantıya kadar max=1048576, buckets=262144. Yapılandırma sonrası service iptables restart veya nftables kullanıyorsanız nft flush ruleset ile tabloyu yenileyin. Bu adımlar, üretim ortamlarında kesintisiz performans sağlar.

En İyi Uygulamalar ve Performans Optimizasyonu

Limit artırmanın yanı sıra, timeout değerlerini kısaltın: sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=3600 (varsayılan 432000 sn yerine 1 saat). TCP SYN flood koruması için net.netfilter.nf_conntrack_tcp_timeout_syn_sent=60 ayarlayın. İzleme araçları olarak Prometheus + Node Exporter entegrasyonu veya basit script’ler önerilir; örneğin cron job ile günlük conntrack sayısını loglayın. Bellek baskısını önlemek için slabtop ile nf_conntrack slab kullanımını takip edin. DDoS hafifletme için connlimit modülünü iptables’e entegre edin: iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 20 -j DROP.

Bu optimizasyonlar uygulandığında, sunucunuz yüksek yük altında bile stabil kalır. Düzenli izleme ve testlerle (örneğin Apache Bench ile yük testi), ayarlarınızı doğrulayın. Sonuç olarak, TCP bağlantı takip limitini proaktif yönetmek, kurumsal Linux sunucularınızın güvenilirliğini ve ölçeklenebilirliğini önemli ölçüde artırır, işletme sürekliliğini güvence altına alır.

Yazar: root
İçerik: 585 kelime
Okuma Süresi: 4 dakika
Zaman: Bugün
Yayım: 23-03-2026
Güncelleme: 23-03-2026
Benzer İçerikler
Dijital Dönüşüm kategorisinden ilginize çekebilecek benzer içerikler