- ARP nedir ve ne işe yarar?
- ARP nasıl çalışır?
- Bir cihaz ARP tablosunu nasıl kullanır?
- ARP tablosu nasıl görüntülenir ve temizlenir?
- ARP sorunları nasıl teşhis edilir?
- ARP ile ilgili yaygın sorunlar nelerdir?
- ARP ile IPv6 komşu keşfi arasındaki fark nedir?
- ARP kullanırken hangi noktalar akılda tutulmalı?
- Sık Sorulan Sorular
- Kaynaklar
ARP nedir ve ne işe yarar?
ARP, IPv4 ağlarında bir IP adresinin hangi cihazın MAC adresine karşılık geldiğini bulmak için kullanılan yerel ağ protokolüdür. Bilgisayarınız aynı ağdaki bir hedefe paket göndermeden önce ARP isteği yayınlar; hedef cihaz MAC adresini bildirir ve işletim sistemi bu eşleşmeyi geçici olarak ARP önbelleğinde saklar.
Bir VPS’e SSH ile bağlandığınızda aklınızda yalnızca IP adresi vardır. Ethernet arayüzünün gönderim yapabilmesi içinse yerel ağdaki bir sonraki cihazın fiziksel adresini bilmesi gerekir. ARP tam bu noktada devreye girer. IP katmanı hedefi mantıksal adresiyle tarif eder, Ethernet ise çerçeveyi MAC adresine teslim eder.
Buradaki “fiziksel adres” ifadesi biraz eski bir alışkanlık. MAC adresi donanım arayüzüyle ilişkilidir; sanal makinelerde, bridge yapılarında ve konteyner ağlarında yazılımsal olarak atanabilir. Yine de IPv4 paketinin yerel Ethernet üzerinde ilerlemesi için gereken adresleme bilgisi değişmez.
ARP nasıl çalışır?
ARP yalnızca aynı yerel ağ segmentindeki komşuları bulur. Uzak bir web sunucusuna bağlanırken hedef sunucunun MAC adresini aramazsınız; işletim sistemi varsayılan ağ geçidinin MAC adresini bulur ve IP paketini o cihaza teslim eder. Router, paketi bir sonraki ağ için yeniden çerçeveler.
RFC 826’da tanımlanan temel akış dört adımda görülebilir:
- Gönderen, hedef IP adresi için kendi ARP önbelleğini kontrol eder.
- Eşleşme yoksa Ethernet yayın adresine, yani
ff:ff:ff:ff:ff:ffadresine ARP Request gönderir. - Yerel ağdaki cihazlar isteği alır; hedef IP kendisine ait olan cihaz ARP Reply ile kendi MAC adresini bildirir.
- Gönderen bu eşleşmeyi önbelleğe alır ve bekleyen IP paketini ilgili MAC adresine gönderir.
ARP Request içindeki hedef MAC alanı henüz bilinmediği için sıfırlarla doldurulur. Ethernet çerçevesinin hedefi ise yayın adresidir. ARP Reply çoğunlukla doğrudan gönderenin MAC adresine gider; cihazlar her yanıtı herkese yayınlamak zorunda değildir.
ARP isteğinde hangi bilgiler bulunur?
Bir ARP mesajı yalnızca “şu IP kimin?” sorusundan ibaret değildir. Gönderen ve hedef için donanım türü, protokol türü, donanım adresi uzunluğu, protokol adresi uzunluğu, işlem tipi ve adres çiftleri taşınır. Günlük bir IPv4/Ethernet ağında öne çıkan alanlar şunlardır:
| Alan | Anlamı |
|---|---|
| Sender IP | İsteği veya yanıtı gönderen cihazın IPv4 adresi |
| Sender MAC | Gönderen Ethernet arayüzünün MAC adresi |
| Target IP | MAC adresi öğrenilmek istenen IPv4 adresi |
| Target MAC | Request sırasında bilinmeyen, Reply sırasında doldurulan MAC adresi |
| Operation | Request veya Reply gibi işlem türü |
ARP’nin kapsamını doğru çizmek gerekiyor: ARP DNS değildir. DNS, alan adını IP adresine çevirmeye çalışır; ARP ise zaten bilinen bir IPv4 adresinin yerel ağdaki MAC karşılığını arar. Bu ayrımı bir kez yanlış kurduğunuzda ağ sorunlarını çözmek gereksiz yere zorlaşır.
Bir cihaz ARP tablosunu nasıl kullanır?
Linux’ta ARP kayıtlarını günümüzde ip neigh komutuyla görürüz. Eski sistemlerde arp -n veya arp -a komutlarına rastlayabilirsiniz; ancak iproute2 araçları, IPv4 ARP ve IPv6 komşu keşfi kayıtlarını daha tutarlı biçimde gösterir.
ip neigh show
Örnek bir çıktı şöyle görünebilir:
192.168.1.1 dev eth0 lladdr 9c:5c:8e:12:34:56 REACHABLE
192.168.1.42 dev eth0 lladdr 08:00:27:ab:cd:ef STALE
192.168.1.77 dev eth0 INCOMPLETE
dev eth0, kaydın hangi arayüzde bulunduğunu; lladdr, yani link-layer address, MAC adresini gösterir. REACHABLE kaydın yakın zamanda doğrulandığını, STALE kaydın süresinin dolmuş olabileceğini ama henüz hatalı kabul edilmediğini anlatır. INCOMPLETE ise ARP çözümlemesinin henüz tamamlanmadığını veya yanıt alınamadığını gösterir.
Bu durumlar Linux’un komşu önbelleği için kullandığı durum makinesinin parçasıdır. Kayıt sonsuza kadar aynı halde kalmaz. Çekirdek, bağlantının kullanılıp kullanılmadığını ve yeniden doğrulama gerekip gerekmediğini izler.
ARP önbelleği ne kadar süre tutulur?
Tek bir “ARP her 60 saniyede silinir” kuralı vermek doğru değildir. Süreler işletim sistemi, çekirdek sürümü, dağıtım ve ağ ayarlarına göre değişebilir. Linux’ta komşu davranışı /proc/sys/net/ipv4/neigh/ altındaki ayarlarla ilişkilidir; arayüz bazındaki değerleri görmek için şu komutu kullanabilirsiniz:
sysctl -a 2>/dev/null | grep 'net.ipv4.neigh.*base_reachable_time'
Bu satırdaki filtre, ilgili ayarı farklı arayüzler için birlikte görmenizi sağlar. Değerleri değiştirirken rastgele bir sayı yazmak yerine dağıtımın ve uygulamanın ağ davranışını ölçmek gerekir. ARP önbelleği performans için vardır; her paket öncesi yayın yapılmasını engeller. Çok kısa süreler gereksiz ARP trafiği üretir, çok uzun sürelerse IP-MAC değişikliklerinin geç fark edilmesine yol açabilir.
ARP tablosu nasıl görüntülenir ve temizlenir?
İlk kontrolüm genellikle hedef IP’nin hangi arayüz ve MAC adresiyle eşleştiğidir. Örneğin varsayılan ağ geçidini görmek için:
ip route get 8.8.8.8
Çıktı çoğu Linux sunucuda buna benzer:
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.20 uid 0
Bu çıktı, internet üzerindeki 8.8.8.8 adresine doğrudan ARP sorulmayacağını gösterir. Yerel ağ geçidi 192.168.1.1 olduğu için ARP sorgusu onun için yapılacaktır. Ardından ilgili kaydı şu şekilde kontrol ederim:
ip neigh show 192.168.1.1 dev eth0
Gerekirse belirli bir kaydı silip yeniden öğrenilmesini sağlayabilirsiniz:
sudo ip neigh del 192.168.1.1 dev eth0
Bu satırdaki dev eth0 önemli; aynı IP farklı arayüzlerde bulunabilir. Ayrıca kayıt silmek fiziksel arızayı onarmaz. Anahtar portu kapalıysa, VLAN yanlışsa veya karşı cihaz yanıt vermiyorsa yeni ARP sorgusu da yanıtsız kalacaktır.
Bir arayüzdeki komşu kayıtlarını topluca temizlemek için şu komut kullanılabilir:
sudo ip neigh flush dev eth0
Ben bunu üretim sunucusunda ilk refleks olarak çalıştırmam. Önce ip route, ip addr, switch veya sanallaştırma katmanındaki durum ve ilgili çekirdek logları kontrol edilir. Komut kısa, etkisi bazen beklenenden geniştir.
ARP sorunları nasıl teşhis edilir?
Bir sunucuya erişemediğinizde ping başarısız olabilir; fakat ping yanıtı olmaması tek başına ARP arızası kanıtı değildir. Güvenlik duvarı ICMP’yi engelliyor olabilir, servis kapalı olabilir veya hedef başka bir ağda bulunabilir. Bu yüzden katmanları birbirinden ayırarak ilerlemek gerekir.
1. Yerel adres ve rota kontrolü
ip addr show dev eth0
ip route show
Önce sunucunun beklenen IPv4 adresini gerçekten taşıyıp taşımadığına bakarım. Ardından hedef için doğru arayüz ve ağ geçidinin seçildiğini kontrol ederim. Yanlış netmask, beklenmedik bir yerel rota veya eksik varsayılan rota ARP sanılan sorunların sık nedenlerindendir.
2. Komşu durumunu inceleme
ip neigh show dev eth0
FAILED veya uzun süre INCOMPLETE kalan bir kayıt, ARP yanıtı alınamadığını düşündürür. Aynı ağdaki bir başka cihazın MAC adresi öğrenilebiliyor, yalnızca tek hedef öğrenilemiyorsa hedefin arayüzü, IP yapılandırması veya güvenlik politikası incelenmelidir.
3. Paketleri gerçekten görmek
sudo tcpdump -ni eth0 arp
-n DNS çözümlemesini kapatır, -i eth0 dinlenecek arayüzü belirler. Beklediğiniz durumda who-has biçiminde bir ARP Request ve ardından is-at biçiminde bir Reply görürsünüz. Request çıkıyor ama Reply dönmüyorsa ağ yolu ya da hedef tarafı araştırılır; Reply dönüyor fakat uygulama trafiği yoksa sorun ARP katmanının dışına taşmıştır.
Benzer bir kontrolü daha geniş filtreyle de yapabilirsiniz:
sudo tcpdump -ni any 'arp or icmp'
Burada any sanal bir dinleme seçeneğidir; fiziksel arayüz adını yazmadığınız için birden fazla arayüzün trafiğini birlikte görürsünüz. Yoğun sunucularda çıktı hızla büyüyebilir, bu nedenle kısa süreli kullanmak daha sağlıklıdır.
4. VLAN, bridge ve sanal ağları kontrol etmek
VPS altyapılarında ARP trafiği yalnızca fiziksel kabloyla sınırlı değildir. Linux bridge, VLAN, hypervisor ve sanal switch aynı yerel ağın nasıl kurulduğunu belirler. VPS’iniz aynı subnet’teki başka bir adrese ulaşamıyorsa hosting panelindeki ağ yapılandırması, sanal NIC durumu ve sağlayıcının anti-spoofing kuralları incelenmelidir.
Bir gece vardiyasında müşterinin failover IP’si yeni sunucuya taşındıktan sonra bağlantıların bir bölümünün eski makineye gittiğini görmüştüm. Uygulama loglarına bakınca servis sağlıklıydı; ip neigh çıktısındaki MAC adresi ise eski node’u gösteriyordu. Kaydı silmeden önce switch MAC tablosunu ve sanal IP duyurusunu kontrol ettim. Yeni node’un gratuitous ARP göndermediği ortaya çıktı. Duyuruyu doğru arayüzden yaptıktan sonra istemciler yeni MAC adresini öğrenmeye başladı. O olaydan beri ARP kaydını silmeyi çözüm değil, gözlem adımı olarak görüyorum.
ARP ile ilgili yaygın sorunlar nelerdir?
Stale veya yanlış ARP kaydı
Bir IP adresi başka bir arayüze taşındığında ya da yüksek erişilebilirlik yapısında sanal IP farklı bir node’a geçtiğinde eski MAC eşleşmesi kısa süre sorun yaratabilir. Normalde yeni ARP duyuruları ve yeniden doğrulama süreci kayıtları günceller. Hızlı geçiş gereken ortamlarda cihazların gratuitous ARP göndermesi bu süreci hızlandırabilir; ağ cihazlarının güvenlik politikaları bunu kısıtlayabilir.
Belirti, çoğu zaman aynı subnet’teki bazı cihazların yeni node’a, bazılarının eski node’a gitmesidir. Tek bir istemcide kaydı temizlemek geçici bir teşhis adımı olabilir. Kalıcı çözüm için failover mekanizmasının ARP duyurusunu, switch davranışını ve sanal IP tasarımını birlikte incelemek gerekir.
ARP yayınlarının artması
ARP broadcast olduğu için yerel segmentteki cihazlar isteği alır. Normal bir ağda bu trafik yönetilebilir düzeydedir; geniş ve yoğun broadcast domain’lerinde gereksiz yayınlar sorun çıkarabilir. Subnet’leri doğru bölmek, hatalı çalışan cihazı bulmak ve ARP isteklerinin kaynağını paket yakalamayla belirlemek daha doğru yaklaşımdır.
ARP spoofing ve ARP poisoning
ARP, yerel ağdaki yanıtların kimliğini güçlü biçimde doğrulayan bir mekanizma değildir. Kötü niyetli bir cihaz, ağ geçidinin IP adresi için kendi MAC adresini bildirerek trafiği üzerine çekmeye çalışabilir. Bu saldırı ARP spoofing veya ARP poisoning olarak adlandırılır ve aynı yerel ağ segmentindeki trafiği etkileyebilir.
Sunucu tarafında kullanılabilecek önlemler ortamın yapısına bağlıdır:
- Yönetilebilir switch üzerinde DHCP snooping ve Dynamic ARP Inspection destekleniyorsa doğru biçimde yapılandırılabilir.
- Güvenilir ağ geçidi için statik komşu kaydı bazı küçük ve kontrollü ağlarda kullanılabilir; büyük ortamlarda bakım yükü oluşturur.
- Yönetim erişimi mümkün olduğunca güvenilir ağlardan veya WireGuard gibi şifreli tünellerden yapılabilir.
- Şüpheli değişikliklerde
ip neighçıktısı, switch MAC tablosu ve paket yakalama birlikte değerlendirilmelidir.
Sunucunun SSH portunu değiştirmek tek başına bu saldırıyı çözmez. Ağın güven sınırını, yönetim yollarını ve switch kontrollerini düşünmek gerekir; port numarasını değiştirmek bazen yalnızca logları sessizleştirir.
ARP ile IPv6 komşu keşfi arasındaki fark nedir?
ARP, IPv4 için kullanılır. IPv6’da aynı iş için Neighbor Discovery Protocol, yani NDP kullanılır ve bu mekanizma ICMPv6 üzerine kuruludur. NDP; komşu adres çözümlemesinin yanında router discovery, address autoconfiguration ve duplicate address detection gibi görevleri de kapsar.
| Özellik | IPv4 ARP | IPv6 NDP |
|---|---|---|
| Çalıştığı protokol | IPv4 | IPv6 |
| Taşıma yaklaşımı | Ethernet üzerinde ARP mesajları | ICMPv6 mesajları |
| Yayın davranışı | Broadcast kullanılabilir | Multicast tabanlı komşu keşfi |
| Linux kontrolü | ip neigh |
ip -6 neigh |
| Adres çakışması kontrolü | ARP probe gibi yöntemler | Duplicate Address Detection |
IPv6 kullanan bir sunucuda yalnızca ip neigh komutunun IPv4 çıktısına bakmak eksik teşhistir. IPv6 komşularını ayrıca görmek için:
ip -6 neigh show dev eth0
IPv6 bağlantılarında görülen bir erişim sorununun ARP ile açıklanamamasının nedeni budur. Burada NDP, ICMPv6 filtreleri ve router advertisement davranışı incelenmelidir.
ARP kullanırken hangi noktalar akılda tutulmalı?
- ARP yalnızca IPv4 komşu çözümlemesi yapar; DNS’in veya yönlendirme protokolünün yerine geçmez.
- Uzak hedeflerde çoğu zaman hedef sunucunun değil, varsayılan ağ geçidinin MAC adresi çözülür.
STALEkaydı tek başına arıza anlamına gelmez; Linux gerektiğinde kaydı yeniden doğrulayabilir.INCOMPLETEveFAILEDdurumları, ARP yanıtı alınamadığını düşündürür; fiziksel, sanal ve güvenlik katmanları birlikte kontrol edilmelidir.- ARP tablosunu temizlemek teşhis aracıdır, genel bir onarım yöntemi değildir.
- VLAN, bridge ve hypervisor yapılandırmaları ARP’nin ulaşıp ulaşamayacağını doğrudan etkiler.
- IPv6 sorunlarında ARP yerine NDP komutlarını ve ICMPv6 trafiğini incelemek gerekir.
IP adreslerinin nasıl çalıştığını daha geniş çerçevede görmek isterseniz IP Adresi Nedir? Ne İşe Yarar ve Nasıl Öğrenilir? yazısına, ARP’nin TCP/IP içindeki yerini anlamak için de İnternet Protokolleri: TCP/IP’den HTTP/3’e Derinlemesine Bakış içeriğine bakabilirsiniz. Ben ağ arızalarında önce hedefin aynı subnet’te olup olmadığını, sonra ağ geçidi MAC adresini ve en son uygulamayı kontrol ediyorum. Bu sıra, gereksiz servis yeniden başlatmalarından çok daha az gürültülü.
Sık Sorulan Sorular
ARP nedir, kısaca ne yapar?
ARP, bir IPv4 adresinin yerel ağdaki MAC adresini bulur. Cihazlar bu eşleşmeyi geçici olarak önbelleğe alır ve IP paketlerini Ethernet çerçeveleri içinde doğru komşuya gönderir.
ARP tablosu nasıl görüntülenir?
Linux’ta ip neigh show komutu IPv4 komşu kayıtlarını gösterir. Belirli bir arayüzü incelemek için ip neigh show dev eth0 kullanabilirsiniz.
ARP tablosunu temizlemek bağlantı sorununu çözer mi?
Bazen eski veya yanlış bir MAC eşleşmesini yeniden öğrenmeye zorlayarak teşhise yardımcı olur. Fakat VLAN, bridge, switch veya karşı cihaz kaynaklı bir sorun varsa kayıt silmek kalıcı çözüm sağlamaz.
IPv6’da ARP kullanılır mı?
Hayır. IPv6, komşu adres çözümlemesi ve ilgili keşif işlemleri için Neighbor Discovery Protocol kullanır. Linux’ta IPv6 komşularını ip -6 neigh show komutuyla görebilirsiniz.
Kaynaklar
- RFC 826 – An Ethernet Address Resolution Protocol — rfc-editor.org
- RFC 4861 – IPv6 Neighbor Discovery — rfc-editor.org
Türkçe
English
فارسی
Русский