iptables'ta NAT loglarını almak biraz sorun.
NAT tablosunun tüm loglarını kaydet dersen, deli gibi log basıyor. Bir web sayfası açıldığında sayfadaki her bir eleman için yeni bir satır log basıyor. NAT log'larında rate-limiting yaparsan, bu sefer de log kaçırabiliyor. İki ucu boklu değnek bu nedenle.
Uzun zamandır bu işi halletmeye çalışıyordum. Bir yerde doküman bulunca hemen deniyordum. Bugün itibarıyla bir tüyo[1] geldi, denedim ve işe yarıyor gibi. conntrack kullanılan bu yöntemde, iptables kullanmadan doğrudan conntrack ile sanki istenen şekilde veri alınabiliyor gibi.
Debian üzerinde denedim ben. Eğer ki yüklü değilse, depodan conntrack paketi yüklenebilir. Sonra doğrudan çalıştırılabilir bir dosya olan conntrack çalıştırılarak ekrana dökülebiliyor bağlantılar.
Örneğin, sadece TCP protokolü kullanan, durumu NEW olan ve sNAT yapılmış olan bağlantıları göstermesini istersek, şu komutu kullanabiliriz:
1 |
conntrack -E -e NEW -p tcp --src-nat |
Bir de bunun deamon olarak çalışanı[2] varmış ama deneyemedim. conntrack'ın kullanımı hakkında daha fazla bilgi amak için:
1 |
man conntrack |
conntrack, standart olarak log'ları ekrana basıyor. Bunu dosyaya yazdırmak için de "-f dosya_adı" şklinde parametresi mevcut. Ama nedense, ben beceremedim dosyaya yazdırmayı. Bunun yerine, logger'dan faydalanarak rsyslog'a gönderdim log'ları. Kullanım örneği[3]:
1 |
conntrack -E -e NEW -p tcp --src-nat | logger -t CONNTRACK & |
Bu örnekteki, "-t CONNTRACK" parametresi, log satırlarına bu etiket eklemek için kullanılıyor. Log dosyasında, conntrack'a at satırların kolayca ayırt edilebilmesi için kullanılabilir. Sadece bu komut kullanılarak, conntrack'tan alınan veriler syslog'a gönderiliyor. Bundan sonra istenirse, conntrack log'larının ayrı bir dosyaya yazdırılması sağlanabilir.
syslog'a gönnderilen log'ların içerdiği metne göre ayrıştırılarak, farklı dosyalara log yazılması konusunda şurada bir yazı yazmıştım:
Kaynaklar:
[1] Yavuz Selim Kömür (Bilkent Üniversitesi)
[2] http://conntrack-tools.netfilter.org/conntrackd.html
[3] Posta listeleri arşivleri