Klasik traceroute (ICMP kullanır), ağdaki tüm rotaları göremez. Çünkü bazı ağ cihazları (özellikle güvenlik duvarları), ICMP (ping) paketlerini engeller. Bu durumda nasıl keşif yapacağız? Bazı ağ trafikleri, sadece hedef IP’ye göre değil kullanılan port ya da başka politikalara göre farklı yollardan gider. Bu farklılıkları tespit etmek için LFT gibi gelişmiş traceroute araçlarını kullanabiliriz.
Traceroute yaparken sadece ICMP kullanıyorsunuz. TCP 80, 443 gibi portlarla yaparsanız hem firewall aşılır hem de policy-based routing varsa, yani farklı portlar farklı yollara gidiyorsa, bunu görmüş olursunuz. TTL hilesiyle hangi ara noktalardan geçtiğini öğrenebilirsiniz.
Linux sistemlerde
traceroute komutu varsayılan olarak UDP kullanır, ancak -T
parametresiyle TCP’ye geçebilirsiniz. Bu ise Layer 4’teki hedef portu belirleyerek yapılır (örneğin HTTP için 80, HTTPS için 443 gibi). Bazı ağlar ping engelleyebilir ancak HTTP (80) veya HTTPS (443) gibi bilinen bazı portlara izin veren güvenlik duvarı politikalarını aşmak için Layer 4 traceroute kullanabilirsiniz. Bunu yapabilen araçlar mevcut, işletim sisteminize göre inceleyebilirsiniz. Bu araçlar genelde başarılı çalışıyor çünkü güvenlik duvarında açılmış bir port üzerinde TCP SYN paketleri kullanıyor ve TTL trick uyguluyor. Bu da klasik ICMP echo isteklerine dayalı traceroute denemelerine kıyasla daha başarılı oluyor.
LFT’nin başka bir güzel kullanım senaryosu, ağlarda olan policy-based route tespit edilebilmesidir. Yani traceroute için kullanılan TCP/UDP portuna bağlı olarak, paketlerinizin ağda hangi yolları izlediğini ortaya çıkarabilirsiniz.
Klasik bir traceroute örneği:
traceroute -I komutunu kullandığında, ICMP echo (ping) paketleriyle traceroute yapılır. Bu ise Layer 3 seviyesindedir.
recep@localhost:~> sudo traceroute -I recepserit.com
[sudo] password for root:
traceroute to recepserit.com (185.46.41.102), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 4.916 ms 4.790 ms 4.905 ms
2 172.17.1.81 (172.17.1.81) 23.365 ms 23.353 ms 23.341 ms
3 69.125.223.31.srv.turk.net (31.223.125.69) 8.901 ms 8.890 ms 9.029 ms
4 82.39.223.31.srv.turk.net (31.223.39.82) 23.293 ms 23.279 ms 23.268 ms
5 85.39.223.31.srv.turk.net (31.223.39.85) 9.087 ms 9.142 ms 9.226 ms
6 * * *
7 122.39.223.31.srv.turk.net (31.223.39.122) 11.723 ms 11.704 ms 11.687 ms
8 206.105.192.193.static.turk.net (193.192.105.206) 10.839 ms 10.978 ms 10.961 ms
9 93.186.132.164 (93.186.132.164) 46.954 ms 47.514 ms 47.436 ms
10 93.186.132.151 (93.186.132.151) 42.040 ms 44.567 ms 44.435 ms
11 * * *
12 host-91-93-121-90.reverse.superonline.net (91.93.121.90) 16.514 ms 16.495 ms 16.477 ms
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
recep@localhost:~>
Şimdi ise Layer 4 tabanlı traceroute örneği gösterelim:
recep@localhost:~> sudo traceroute -T -p 80 recepserit.com
traceroute to recepserit.com (185.46.41.102), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 36.839 ms 36.769 ms 36.755 ms
2 172.17.1.81 (172.17.1.81) 70.695 ms 70.683 ms 70.672 ms
3 69.125.223.31.srv.turk.net (31.223.125.69) 36.707 ms 36.696 ms 36.684 ms
4 82.39.223.31.srv.turk.net (31.223.39.82) 70.625 ms 70.613 ms 70.598 ms
5 85.39.223.31.srv.turk.net (31.223.39.85) 36.634 ms 36.622 ms 36.888 ms
6 * * *
7 122.39.223.31.srv.turk.net (31.223.39.122) 10.374 ms 10.348 ms 10.587 ms
8 206.105.192.193.static.turk.net (193.192.105.206) 8.931 ms 9.042 ms 9.018 ms
9 93.186.132.164 (93.186.132.164) 49.868 ms 51.141 ms 51.028 ms
10 93.186.132.151 (93.186.132.151) 50.996 ms 44.058 ms 43.835 ms
11 * * *
12 host-91-93-121-90.reverse.superonline.net (91.93.121.90) 18.374 ms 18.342 ms 18.312 ms
13 185.46.41.102 (185.46.41.102) 18.282 ms 18.253 ms 21.002 ms
recep@localhost:~>
Parametreleri anlayalım.
-T: TCP moduna geç
-p 80: Hedef port. HTTP örneğidir
recepserit.com: Hedef host
Şimdi örneğimizde 80 ile 443 numaralı portları başka bir ISP üzerinden yönlendirdim. recepserit.com adresine ICMP echo-istekleriyle traceroute yapınca, ortak yönlendirme yolu listeleniyor. Ancak HTTP portu ile yapılan LFT traceroute (-T -p 80) ise politika tabanlı yönlendirme farklılık gösterebiliyor. Başka host adresleriyle daha iyi örnekler çıkarabilirsiniz.
Örneklerimizi karşılaştıralım. ICMP traceroute (-I) hedefe ulaşamıyor, paketler belli bir noktadan sonra düşüyor. TCP traceroute (-T -p 80) hedefe ulaşıyor, hatta 13. hop’ta doğrudan hedef sunucuya erişiliyor. Bu durum, ICMP trafiğinin ağ boyunca bazı noktalarda engellendiğini ancak TCP 80 trafiğine izin verildiğini gösteriyor. Aynı rotayı izliyor gibi görünseler de protokol bazlı erişim farkı, bir tür policy-based filtering veya firewall davranışı var.
ICMP’de 11. hop’tan itibaren paketlere yanıt gelmiyor. Bu durumda ICMP paketlerinde bir kısıtlama olduğunun veya rate limit uygulandığının belirtisidir. Yani rota devam ediyor ama ICMP cevapları bastırılıyor.
TCP 80 ile hedefe ulaşılıyor, TCP traceroute 13. hop’ta hedefe (185.46.41.102) başarıyla ulaşıyor. TCP paketleri, özellikle HTTP portu (80) üzerinden gönderildiği için güvenlik duvarları tarafından geçişe izin verilmiş durumdadır.

-A parametresini unutmamak gerekir. -A ile birlikte her hop, hangi ISP veya ağ sağlayıcısına ait ise gösterilir. Bu bilgi IP adresinin hangi AS numarasına ve dolayısıyla hangi internet servis sağlayıcısına veya organizasyona ait olduğunu anlamanı sağlar.
recep@localhost:~> sudo traceroute -T -p 80 -A recepserit.com
traceroute to recepserit.com (185.46.41.102), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) [*] 10.303 ms 10.418 ms 10.406 ms
2 172.17.1.81 (172.17.1.81) [*] 11.823 ms 11.812 ms *
3 69.125.223.31.srv.turk.net (31.223.125.69) [AS12735] 10.360 ms 10.449 ms 10.438 ms
4 * * *
5 85.39.223.31.srv.turk.net (31.223.39.85) [AS12735] 10.760 ms 10.900 ms 10.889 ms
6 * * *
7 * * *
8 * * *
9 * * 93.186.132.164 (93.186.132.164) [AS6762] 52.009 ms
10 93.186.132.151 (93.186.132.151) [AS6762] 44.204 ms 44.174 ms 44.147 ms
11 * * *
12 host-91-93-121-90.reverse.superonline.net (91.93.121.90) [AS34984] 19.442 ms 19.685 ms 19.658 ms
13 185.46.41.102 (185.46.41.102) [AS211401] 19.364 ms 19.835 ms 19.629 ms
recep@localhost:~>
Her hob’a ait olan AS numaraları verilmiş durumdadır ve bu numaralara farklı kaynaklardan da ulaşabiliyorsunuz. Örneğin AS12735 TurkNet İletişim Hizmetleri A.Ş., AS34984 Superonline (Turkcell), AS6762 Telecom Italia Sparkle olduğu anlaşılıyor.
Yakında LFT ile policy-based route konusuna bakacağız. Biraz daha vakit olursa bu makalenin konusu olan LFT’nin gelişmiş kullanım örneklerine bakabiliriz.
Yorum bırakın