2 Eylül 2026 - 23:37
Linux Sunucuda SNMP Çalışmıyor: Paket Geliyor Ama Cevap Dönmüyor Görseli
Sunucu Yönetimi

Linux Sunucuda SNMP Çalışmıyor: Paket Geliyor Ama Cevap Dönmüyor

Yorumlar

tcpdump üzerinde UDP 161 isteğini görmek yalnızca paketin ağ kartına ulaştığını kanıtlar. Paket güvenlik duvarında düşebilir, snmpd farklı bir adreste dinleyebilir, kaynak IP erişim kuralına uymayabilir veya yanıt yanlış ağ geçidine gönderilebilir. Teşhisi “community kesin yanlış” varsayımıyla değil, paketin geçtiği katmanlarla yapmak gerekir.

İstemci testini kısa ve ölçülebilir yapın

BASH
snmpget -v2c -c "$COMMUNITY" -t 2 -r 0 \
  192.0.2.10 1.3.6.1.2.1.1.3.0

-t 2 iki saniyelik timeout, -r 0 yeniden deneme olmadan tek test sağlar. Uzun snmpwalk yerine önce tek bir sayısal OID kullanmak, MIB yükleme hatalarıyla ağ sorunlarını birbirinden ayırır.

Aynı anda sunucuda yalnızca istemciyi filtreleyin:

BASH
sudo tcpdump -ni any 'udp port 161 and host 192.0.2.50'

İstek görünüyor fakat 192.0.2.10.161 > 192.0.2.50... yönünde yanıt görünmüyorsa kontrol sunucu içindedir. Yanıt çıkıyor fakat istemci alamıyorsa dönüş yolu veya aradaki güvenlik politikası incelenmelidir.

snmpd gerçekten UDP 161’de mi dinliyor?

BASH
sudo systemctl status snmpd --no-pager
sudo ss -lunp | grep ':161'
sudo journalctl -u snmpd --since '-15 min' --no-pager

Şu çıktı yalnızca loopback erişimine izin verir:

TEXT
UNCONN 0 0 127.0.0.1:161 0.0.0.0:* users:(("snmpd",pid=812,fd=6))

Net-SNMP yapılandırmasındaki agentAddress dinleme adresini belirler:

CONF
agentAddress udp:161

Bu örnek IPv4 UDP 161 üzerinde dinler. Çok arayüzlü sunucuda adresi açıkça sınırlandırmak güvenlik açısından daha doğru olabilir; fakat izleme sisteminin ulaştığı IP mutlaka listeye dahil edilmelidir.

Önce yerel sorgu, sonra uzak sorgu

BASH
snmpget -v2c -c "$COMMUNITY" -t 2 -r 0 \
  127.0.0.1 1.3.6.1.2.1.1.3.0

Yerel sorgu da zaman aşımına uğruyorsa ağ güvenlik duvarından önce servis, dinleme adresi ve kimlik doğrulama yapılandırmasına dönün. Yerel sorgu çalışıyor, uzak sorgu çalışmıyorsa şu üç alan önceliklidir:

  • agentAddress yalnızca loopback’e bağlı olabilir.
  • rocommunity veya VACM kuralı uzak kaynak IP’yi kapsamıyor olabilir.
  • Host firewall UDP 161’i ilgili kaynak ağdan kabul etmiyor olabilir.

Community yalnızca parola değildir; kaynak kuralı da olabilir

CONF
rocommunity monitor_ro 192.0.2.0/24

Net-SNMP’de rocommunity COMMUNITY SOURCE biçimindeki kaynak alanı, kabul edilen istemciyi veya ağı sınırlar. Paket NAT arkasından geliyorsa snmpd yapılandırmada beklediğiniz adresi değil çevrilmiş kaynak adresini görür. Gerçek kaynağı tcpdump çıktısından alın.

Community değerini komut satırında açıkça yazmak shell history ve süreç listesinde hassas bilgiyi gösterebilir. Teşhis hesabı kullanın; örnekleri gerçek community string ile ekran görüntüsüne veya yazıya taşımayın.

SNMPv3 için sürüm, kullanıcı ve güvenlik seviyesi birlikte eşleşmeli

BASH
snmpget -v3 -l authPriv -u monitor \
  -a SHA -A "$AUTH_PASS" -x AES -X "$PRIV_PASS" \
  -t 2 -r 0 192.0.2.10 1.3.6.1.2.1.1.3.0

Yanlış kullanıcı, güvenlik seviyesi, engine ID zaman penceresi veya digest nedeniyle paket bırakılabilir. RFC 3414 bu durumlar için usmStatsUnknownUserNames, usmStatsUnknownEngineIDs, usmStatsNotInTimeWindows ve usmStatsWrongDigests sayaçlarını tanımlar. Erişebildiğiniz güvenilir bir SNMPv3 oturumundan bu sayaçları izlemek sorunu kimlik katmanına indirger.

Firewall sayacı ve dönüş yolunu kontrol edin

BASH
sudo nft list ruleset
sudo iptables -L INPUT -n -v
ip route get 192.0.2.50 from 192.0.2.10

tcpdump -i any paketi netfilter kararı verilmeden önce görebilir. Bu nedenle paket yakalamada görünen istek host firewall tarafından yine de düşürülebilir. İlgili kuralın paket sayacını test öncesi ve sonrası karşılaştırın.

Dönüş rotası beklenmeyen bir arayüzden çıkıyorsa asimetrik yönlendirme, policy routing veya ters yol filtresi devreye girebilir:

BASH
ip rule show
ip route show table all
sysctl net.ipv4.conf.all.rp_filter

Servis debug çıktısını kontrollü alın

Önce normal servis günlüğünü canlı izleyin:

BASH
sudo journalctl -u snmpd -f

Daha ayrıntılı Net-SNMP debug çalıştırması aynı UDP portunu kullanacağı için bakım penceresinde servis durdurularak yapılmalıdır:

BASH
sudo systemctl stop snmpd
sudo snmpd -f -Lo -d -c /etc/snmp/snmpd.conf

-f foreground, -Lo stdout günlüğü, -d alınan ve gönderilen SNMP paket dökümüdür. Test bittiğinde işlemi durdurup normal servisi yeniden başlatın; terminal kapanırken ajanı kapalı bırakmayın.

Yanıtı iki tarafta doğrulayın

BASH
snmpget -v2c -c "$COMMUNITY" -t 2 -r 0 \
  192.0.2.10 1.3.6.1.2.1.1.3.0
TEXT
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (482193) 1:20:21.93

Sunucu yakalamasında aynı işlem için bir istek ve bir yanıt, istemcide de tek OID değeri görülüyorsa temel yol çalışmaktadır. Paket hâlâ geliyor ama yanıt oluşmuyorsa sıradaki kontrol tcpdump filtresi değil, snmpd dinleme adresi, gerçek kaynak IP ve erişim kuralıdır.

Teknik başvuru: snmpd.conf, snmpd ve RFC 3414.

Benzer Yazılar

Yorumlar ()

Henüz yorum yok. İlk yorum yapan sen ol!

Yorum Yap