[{"data":1,"prerenderedAt":1578},["ShallowReactive",2],{"page-tr-\u002Fblog\u002Flinux-network-troubleshooting":3,"related-tr-\u002Fblog\u002Flinux-network-troubleshooting":1554},{"id":4,"title":5,"body":6,"date":1540,"description":1541,"extension":1542,"meta":1543,"navigation":1205,"path":1544,"seo":1545,"stem":1546,"tags":1547,"translation":1552,"__hash__":1553},"pages_tr\u002Ftr\u002Fblog\u002Flinux-network-troubleshooting.md","Linux Ağ ve Sorun Giderme Komutları: curl, ss, dig, tcpdump",{"type":7,"value":8,"toc":1527},"minimark",[9,14,23,26,30,141,165,169,247,255,259,398,414,420,424,607,610,636,642,646,746,812,835,839,944,947,991,995,998,1142,1156,1160,1273,1280,1284,1290,1423,1501,1504,1523],[10,11,13],"h2",{"id":12},"giriş","Giriş",[15,16,17,18,22],"p",{},"\"Servise erişilemiyor\" şikâyetinin arkasında onlarca sebep olabilir: DNS yanlış çözülüyor, port dinlenmiyor, firewall engelliyor, sertifika geçersiz ya da uygulama sadece ",[19,20,21],"code",{},"localhost","'ta dinliyor. Doğru komutlarla bunların hangisi olduğunu birkaç dakikada bulmak mümkün.",[15,24,25],{},"Bu yazı, sorunu katman katman daraltmak için kullanılan komutları sırasıyla topluyor: arayüz → DNS → bağlantı → port → uygulama → paket.",[10,27,29],{"id":28},"_1-arayüzler-ip-ve-route","1. Arayüzler, IP ve route",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","ip a                         # arayüzler ve IP adresleri (ip addr)\nip -br a                     # kısa özet\nip r                         # route tablosu; \"default via\" → gateway\nip r get 8.8.8.8             # bu hedefe hangi arayüz\u002Fgateway ile gidilir\nip link set eth0 up\nhostname -I                  # sunucunun IP'leri\ncurl -s ifconfig.me          # dışarıdan görünen public IP\n","bash","",[19,38,39,56,69,80,97,114,126],{"__ignoreMap":36},[40,41,44,48,52],"span",{"class":42,"line":43},"line",1,[40,45,47],{"class":46},"sBMFI","ip",[40,49,51],{"class":50},"sfazB"," a",[40,53,55],{"class":54},"sHwdD","                         # arayüzler ve IP adresleri (ip addr)\n",[40,57,59,61,64,66],{"class":42,"line":58},2,[40,60,47],{"class":46},[40,62,63],{"class":50}," -br",[40,65,51],{"class":50},[40,67,68],{"class":54},"                     # kısa özet\n",[40,70,72,74,77],{"class":42,"line":71},3,[40,73,47],{"class":46},[40,75,76],{"class":50}," r",[40,78,79],{"class":54},"                         # route tablosu; \"default via\" → gateway\n",[40,81,83,85,87,90,94],{"class":42,"line":82},4,[40,84,47],{"class":46},[40,86,76],{"class":50},[40,88,89],{"class":50}," get",[40,91,93],{"class":92},"sbssI"," 8.8.8.8",[40,95,96],{"class":54},"             # bu hedefe hangi arayüz\u002Fgateway ile gidilir\n",[40,98,100,102,105,108,111],{"class":42,"line":99},5,[40,101,47],{"class":46},[40,103,104],{"class":50}," link",[40,106,107],{"class":50}," set",[40,109,110],{"class":50}," eth0",[40,112,113],{"class":50}," up\n",[40,115,117,120,123],{"class":42,"line":116},6,[40,118,119],{"class":46},"hostname",[40,121,122],{"class":50}," -I",[40,124,125],{"class":54},"                  # sunucunun IP'leri\n",[40,127,129,132,135,138],{"class":42,"line":128},7,[40,130,131],{"class":46},"curl",[40,133,134],{"class":50}," -s",[40,136,137],{"class":50}," ifconfig.me",[40,139,140],{"class":54},"          # dışarıdan görünen public IP\n",[15,142,143,146,147,150,151,154,155,158,159,150,161,164],{},[19,144,145],{},"ifconfig",", ",[19,148,149],{},"netstat"," ve ",[19,152,153],{},"route"," komutları ",[19,156,157],{},"net-tools"," paketiyle gelir ve çoğu dağıtımda artık varsayılan olarak kurulu değildir; yerlerini ",[19,160,47],{},[19,162,163],{},"ss"," aldı.",[10,166,168],{"id":167},"_2-erişilebilirlik-ping-traceroute-mtr","2. Erişilebilirlik: ping, traceroute, mtr",[31,170,172],{"className":33,"code":171,"language":35,"meta":36,"style":36},"ping -c 4 example.com        # 4 paket gönder\nping -c 4 -W 2 10.0.1.15     # 2 sn zaman aşımı\ntraceroute example.com       # paketin geçtiği router'lar\ntracepath example.com        # root gerektirmeyen alternatif\nmtr -rwc 50 example.com      # ping + traceroute, her hop için kayıp\u002Fgecikme raporu\n",[19,173,174,191,211,221,231],{"__ignoreMap":36},[40,175,176,179,182,185,188],{"class":42,"line":43},[40,177,178],{"class":46},"ping",[40,180,181],{"class":50}," -c",[40,183,184],{"class":92}," 4",[40,186,187],{"class":50}," example.com",[40,189,190],{"class":54},"        # 4 paket gönder\n",[40,192,193,195,197,199,202,205,208],{"class":42,"line":58},[40,194,178],{"class":46},[40,196,181],{"class":50},[40,198,184],{"class":92},[40,200,201],{"class":50}," -W",[40,203,204],{"class":92}," 2",[40,206,207],{"class":92}," 10.0.1.15",[40,209,210],{"class":54},"     # 2 sn zaman aşımı\n",[40,212,213,216,218],{"class":42,"line":71},[40,214,215],{"class":46},"traceroute",[40,217,187],{"class":50},[40,219,220],{"class":54},"       # paketin geçtiği router'lar\n",[40,222,223,226,228],{"class":42,"line":82},[40,224,225],{"class":46},"tracepath",[40,227,187],{"class":50},[40,229,230],{"class":54},"        # root gerektirmeyen alternatif\n",[40,232,233,236,239,242,244],{"class":42,"line":99},[40,234,235],{"class":46},"mtr",[40,237,238],{"class":50}," -rwc",[40,240,241],{"class":92}," 50",[40,243,187],{"class":50},[40,245,246],{"class":54},"      # ping + traceroute, her hop için kayıp\u002Fgecikme raporu\n",[248,249,250],"blockquote",{},[15,251,252,254],{},[19,253,178],{}," cevap vermiyor diye sunucu kapalı değildir. Birçok bulut sağlayıcı ve firewall ICMP'yi engeller; bir sonraki adımda TCP portunu doğrudan test edin.",[10,256,258],{"id":257},"_3-dns-dig-nslookup-getent","3. DNS: dig, nslookup, getent",[31,260,262],{"className":33,"code":261,"language":35,"meta":36,"style":36},"dig example.com              # A kaydı, TTL, yanıt veren sunucu\ndig +short example.com\ndig example.com AAAA         # IPv6\ndig example.com MX\ndig example.com TXT          # SPF, doğrulama kayıtları\ndig @8.8.8.8 example.com     # belirli bir DNS sunucusuna sor\ndig +trace example.com       # kökten itibaren çözümleme zinciri\ndig -x 203.0.113.10          # ters (PTR) sorgu\nnslookup example.com\ngetent hosts example.com     # sistemin gerçekte kullandığı sonuç (\u002Fetc\u002Fhosts dahil)\nresolvectl status            # systemd-resolved kullanan sistemlerde DNS sunucuları\ncat \u002Fetc\u002Fresolv.conf\n",[19,263,264,274,284,296,305,317,329,341,355,363,377,389],{"__ignoreMap":36},[40,265,266,269,271],{"class":42,"line":43},[40,267,268],{"class":46},"dig",[40,270,187],{"class":50},[40,272,273],{"class":54},"              # A kaydı, TTL, yanıt veren sunucu\n",[40,275,276,278,281],{"class":42,"line":58},[40,277,268],{"class":46},[40,279,280],{"class":50}," +short",[40,282,283],{"class":50}," example.com\n",[40,285,286,288,290,293],{"class":42,"line":71},[40,287,268],{"class":46},[40,289,187],{"class":50},[40,291,292],{"class":50}," AAAA",[40,294,295],{"class":54},"         # IPv6\n",[40,297,298,300,302],{"class":42,"line":82},[40,299,268],{"class":46},[40,301,187],{"class":50},[40,303,304],{"class":50}," MX\n",[40,306,307,309,311,314],{"class":42,"line":99},[40,308,268],{"class":46},[40,310,187],{"class":50},[40,312,313],{"class":50}," TXT",[40,315,316],{"class":54},"          # SPF, doğrulama kayıtları\n",[40,318,319,321,324,326],{"class":42,"line":116},[40,320,268],{"class":46},[40,322,323],{"class":50}," @8.8.8.8",[40,325,187],{"class":50},[40,327,328],{"class":54},"     # belirli bir DNS sunucusuna sor\n",[40,330,331,333,336,338],{"class":42,"line":128},[40,332,268],{"class":46},[40,334,335],{"class":50}," +trace",[40,337,187],{"class":50},[40,339,340],{"class":54},"       # kökten itibaren çözümleme zinciri\n",[40,342,344,346,349,352],{"class":42,"line":343},8,[40,345,268],{"class":46},[40,347,348],{"class":50}," -x",[40,350,351],{"class":92}," 203.0.113.10",[40,353,354],{"class":54},"          # ters (PTR) sorgu\n",[40,356,358,361],{"class":42,"line":357},9,[40,359,360],{"class":46},"nslookup",[40,362,283],{"class":50},[40,364,366,369,372,374],{"class":42,"line":365},10,[40,367,368],{"class":46},"getent",[40,370,371],{"class":50}," hosts",[40,373,187],{"class":50},[40,375,376],{"class":54},"     # sistemin gerçekte kullandığı sonuç (\u002Fetc\u002Fhosts dahil)\n",[40,378,380,383,386],{"class":42,"line":379},11,[40,381,382],{"class":46},"resolvectl",[40,384,385],{"class":50}," status",[40,387,388],{"class":54},"            # systemd-resolved kullanan sistemlerde DNS sunucuları\n",[40,390,392,395],{"class":42,"line":391},12,[40,393,394],{"class":46},"cat",[40,396,397],{"class":50}," \u002Fetc\u002Fresolv.conf\n",[15,399,400,402,403,406,407,410,411,413],{},[19,401,268],{}," doğrudan DNS'e sorar; ",[19,404,405],{},"getent hosts"," ise ",[19,408,409],{},"\u002Fetc\u002Fhosts"," dahil uygulamaların gördüğü sonucu verir. İkisi farklıysa sorun genelde ",[19,412,409],{}," ya da lokal cache'tedir.",[15,415,416,417,419],{},"DNS kaydını yeni değiştirdiyseniz eski değer TTL süresi dolana kadar cache'lerde kalabilir; ",[19,418,268],{}," çıktısındaki TTL kalan süreyi gösterir.",[10,421,423],{"id":422},"_4-http-curl","4. HTTP: curl",[31,425,427],{"className":33,"code":426,"language":35,"meta":36,"style":36},"curl https:\u002F\u002Fapi.example.com\u002Fhealth\ncurl -I https:\u002F\u002Fexample.com                 # sadece başlıklar\ncurl -v https:\u002F\u002Fexample.com                 # DNS, TCP, TLS el sıkışması, başlıklar\ncurl -L http:\u002F\u002Fexample.com                  # yönlendirmeleri takip et\ncurl -sS -o \u002Fdev\u002Fnull -w \"%{http_code}\\n\" https:\u002F\u002Fexample.com\ncurl -X POST https:\u002F\u002Fapi.example.com\u002Fusers \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"name\":\"Şükrü\"}'\ncurl -H \"Authorization: Bearer $TOKEN\" https:\u002F\u002Fapi.example.com\u002Fme\ncurl --max-time 5 https:\u002F\u002Fexample.com\ncurl -k https:\u002F\u002Fself-signed.local           # sertifika doğrulamasını atla (sadece test)\ncurl --resolve example.com:443:203.0.113.10 https:\u002F\u002Fexample.com   # DNS'i atlayıp belirli IP'ye git\n",[19,428,429,436,448,460,473,502,519,533,547,567,579,592],{"__ignoreMap":36},[40,430,431,433],{"class":42,"line":43},[40,432,131],{"class":46},[40,434,435],{"class":50}," https:\u002F\u002Fapi.example.com\u002Fhealth\n",[40,437,438,440,442,445],{"class":42,"line":58},[40,439,131],{"class":46},[40,441,122],{"class":50},[40,443,444],{"class":50}," https:\u002F\u002Fexample.com",[40,446,447],{"class":54},"                 # sadece başlıklar\n",[40,449,450,452,455,457],{"class":42,"line":71},[40,451,131],{"class":46},[40,453,454],{"class":50}," -v",[40,456,444],{"class":50},[40,458,459],{"class":54},"                 # DNS, TCP, TLS el sıkışması, başlıklar\n",[40,461,462,464,467,470],{"class":42,"line":82},[40,463,131],{"class":46},[40,465,466],{"class":50}," -L",[40,468,469],{"class":50}," http:\u002F\u002Fexample.com",[40,471,472],{"class":54},"                  # yönlendirmeleri takip et\n",[40,474,475,477,480,483,486,489,493,496,499],{"class":42,"line":99},[40,476,131],{"class":46},[40,478,479],{"class":50}," -sS",[40,481,482],{"class":50}," -o",[40,484,485],{"class":50}," \u002Fdev\u002Fnull",[40,487,488],{"class":50}," -w",[40,490,492],{"class":491},"sMK4o"," \"",[40,494,495],{"class":50},"%{http_code}\\n",[40,497,498],{"class":491},"\"",[40,500,501],{"class":50}," https:\u002F\u002Fexample.com\n",[40,503,504,506,509,512,515],{"class":42,"line":116},[40,505,131],{"class":46},[40,507,508],{"class":50}," -X",[40,510,511],{"class":50}," POST",[40,513,514],{"class":50}," https:\u002F\u002Fapi.example.com\u002Fusers",[40,516,518],{"class":517},"sTEyZ"," \\\n",[40,520,521,524,526,529,531],{"class":42,"line":128},[40,522,523],{"class":50},"  -H",[40,525,492],{"class":491},[40,527,528],{"class":50},"Content-Type: application\u002Fjson",[40,530,498],{"class":491},[40,532,518],{"class":517},[40,534,535,538,541,544],{"class":42,"line":343},[40,536,537],{"class":50},"  -d",[40,539,540],{"class":491}," '",[40,542,543],{"class":50},"{\"name\":\"Şükrü\"}",[40,545,546],{"class":491},"'\n",[40,548,549,551,554,556,559,562,564],{"class":42,"line":357},[40,550,131],{"class":46},[40,552,553],{"class":50}," -H",[40,555,492],{"class":491},[40,557,558],{"class":50},"Authorization: Bearer ",[40,560,561],{"class":517},"$TOKEN",[40,563,498],{"class":491},[40,565,566],{"class":50}," https:\u002F\u002Fapi.example.com\u002Fme\n",[40,568,569,571,574,577],{"class":42,"line":365},[40,570,131],{"class":46},[40,572,573],{"class":50}," --max-time",[40,575,576],{"class":92}," 5",[40,578,501],{"class":50},[40,580,581,583,586,589],{"class":42,"line":379},[40,582,131],{"class":46},[40,584,585],{"class":50}," -k",[40,587,588],{"class":50}," https:\u002F\u002Fself-signed.local",[40,590,591],{"class":54},"           # sertifika doğrulamasını atla (sadece test)\n",[40,593,594,596,599,602,604],{"class":42,"line":391},[40,595,131],{"class":46},[40,597,598],{"class":50}," --resolve",[40,600,601],{"class":50}," example.com:443:203.0.113.10",[40,603,444],{"class":50},[40,605,606],{"class":54},"   # DNS'i atlayıp belirli IP'ye git\n",[15,608,609],{},"Yanıtın nerede yavaşladığını görmek için zamanlama çıktısı:",[31,611,613],{"className":33,"code":612,"language":35,"meta":36,"style":36},"curl -sS -o \u002Fdev\u002Fnull -w \"dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\\n\" https:\u002F\u002Fexample.com\n",[19,614,615],{"__ignoreMap":36},[40,616,617,619,621,623,625,627,629,632,634],{"class":42,"line":43},[40,618,131],{"class":46},[40,620,479],{"class":50},[40,622,482],{"class":50},[40,624,485],{"class":50},[40,626,488],{"class":50},[40,628,492],{"class":491},[40,630,631],{"class":50},"dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\\n",[40,633,498],{"class":491},[40,635,501],{"class":50},[15,637,638,641],{},[19,639,640],{},"--resolve",", DNS'i değiştirmeden önce yeni sunucuyu test etmek ya da load balancer arkasındaki tek bir node'u denemek için çok kullanışlıdır.",[10,643,645],{"id":644},"_5-port-ve-bağlantılar-ss-lsof","5. Port ve bağlantılar: ss, lsof",[31,647,649],{"className":33,"code":648,"language":35,"meta":36,"style":36},"ss -tlnp                     # dinleyen TCP portları ve süreçler\nss -ulnp                     # dinleyen UDP portları\nss -tnp                      # kurulu TCP bağlantıları\nss -tn state established '( dport = :5432 )'   # PostgreSQL'e giden bağlantılar\nss -s                        # özet istatistik\nsudo lsof -i :8080           # 8080'i kullanan süreç\nsudo fuser -k 8080\u002Ftcp       # 8080'i kullanan süreci öldür\n",[19,650,651,661,671,681,705,714,731],{"__ignoreMap":36},[40,652,653,655,658],{"class":42,"line":43},[40,654,163],{"class":46},[40,656,657],{"class":50}," -tlnp",[40,659,660],{"class":54},"                     # dinleyen TCP portları ve süreçler\n",[40,662,663,665,668],{"class":42,"line":58},[40,664,163],{"class":46},[40,666,667],{"class":50}," -ulnp",[40,669,670],{"class":54},"                     # dinleyen UDP portları\n",[40,672,673,675,678],{"class":42,"line":71},[40,674,163],{"class":46},[40,676,677],{"class":50}," -tnp",[40,679,680],{"class":54},"                      # kurulu TCP bağlantıları\n",[40,682,683,685,688,691,694,696,699,702],{"class":42,"line":82},[40,684,163],{"class":46},[40,686,687],{"class":50}," -tn",[40,689,690],{"class":50}," state",[40,692,693],{"class":50}," established",[40,695,540],{"class":491},[40,697,698],{"class":50},"( dport = :5432 )",[40,700,701],{"class":491},"'",[40,703,704],{"class":54},"   # PostgreSQL'e giden bağlantılar\n",[40,706,707,709,711],{"class":42,"line":99},[40,708,163],{"class":46},[40,710,134],{"class":50},[40,712,713],{"class":54},"                        # özet istatistik\n",[40,715,716,719,722,725,728],{"class":42,"line":116},[40,717,718],{"class":46},"sudo",[40,720,721],{"class":50}," lsof",[40,723,724],{"class":50}," -i",[40,726,727],{"class":50}," :8080",[40,729,730],{"class":54},"           # 8080'i kullanan süreç\n",[40,732,733,735,738,740,743],{"class":42,"line":128},[40,734,718],{"class":46},[40,736,737],{"class":50}," fuser",[40,739,585],{"class":50},[40,741,742],{"class":50}," 8080\u002Ftcp",[40,744,745],{"class":54},"       # 8080'i kullanan süreci öldür\n",[747,748,749,764],"table",{},[750,751,752],"thead",{},[753,754,755,761],"tr",{},[756,757,758,760],"th",{},[19,759,163],{}," parametresi",[756,762,763],{},"Anlamı",[765,766,767,782,792,802],"tbody",{},[753,768,769,779],{},[770,771,772,775,776],"td",{},[19,773,774],{},"-t"," \u002F ",[19,777,778],{},"-u",[770,780,781],{},"TCP \u002F UDP",[753,783,784,789],{},[770,785,786],{},[19,787,788],{},"-l",[770,790,791],{},"Sadece dinleyenler",[753,793,794,799],{},[770,795,796],{},[19,797,798],{},"-n",[770,800,801],{},"İsim çözümlemesi yapma (port numarası göster)",[753,803,804,809],{},[770,805,806],{},[19,807,808],{},"-p",[770,810,811],{},"Süreci göster (başkasının süreçleri için sudo)",[15,813,814,817,818,822,823,826,827,830,831,834],{},[19,815,816],{},"ss -tlnp"," çıktısında ",[819,820,821],"strong",{},"Local Address"," sütununa dikkat edin: ",[19,824,825],{},"127.0.0.1:8080"," sadece sunucunun kendisinden erişilebilir, ",[19,828,829],{},"0.0.0.0:8080"," ya da ",[19,832,833],{},"*:8080"," tüm arayüzlerden. \"Lokalde çalışıyor, dışarıdan erişilemiyor\" sorununun en yaygın sebebi budur.",[10,836,838],{"id":837},"_6-tcp-portunu-test-etmek-nc","6. TCP portunu test etmek: nc",[31,840,842],{"className":33,"code":841,"language":35,"meta":36,"style":36},"nc -zv db.example.com 5432           # port açık mı?\nnc -zv 10.0.1.15 20-25               # port aralığı\ntimeout 3 bash -c '\u003C\u002Fdev\u002Ftcp\u002F10.0.1.15\u002F6379' && echo açık || echo kapalı   # nc yoksa\nopenssl s_client -connect example.com:443 -servername example.com \u003C\u002Fdev\u002Fnull   # TLS ve sertifika zinciri\n",[19,843,844,861,875,916],{"__ignoreMap":36},[40,845,846,849,852,855,858],{"class":42,"line":43},[40,847,848],{"class":46},"nc",[40,850,851],{"class":50}," -zv",[40,853,854],{"class":50}," db.example.com",[40,856,857],{"class":92}," 5432",[40,859,860],{"class":54},"           # port açık mı?\n",[40,862,863,865,867,869,872],{"class":42,"line":58},[40,864,848],{"class":46},[40,866,851],{"class":50},[40,868,207],{"class":92},[40,870,871],{"class":50}," 20-25",[40,873,874],{"class":54},"               # port aralığı\n",[40,876,877,880,883,886,888,890,893,895,898,902,905,908,910,913],{"class":42,"line":71},[40,878,879],{"class":46},"timeout",[40,881,882],{"class":92}," 3",[40,884,885],{"class":50}," bash",[40,887,181],{"class":50},[40,889,540],{"class":491},[40,891,892],{"class":50},"\u003C\u002Fdev\u002Ftcp\u002F10.0.1.15\u002F6379",[40,894,701],{"class":491},[40,896,897],{"class":491}," &&",[40,899,901],{"class":900},"s2Zo4"," echo",[40,903,904],{"class":50}," açık",[40,906,907],{"class":491}," ||",[40,909,901],{"class":900},[40,911,912],{"class":50}," kapalı",[40,914,915],{"class":54},"   # nc yoksa\n",[40,917,918,921,924,927,930,933,935,938,941],{"class":42,"line":82},[40,919,920],{"class":46},"openssl",[40,922,923],{"class":50}," s_client",[40,925,926],{"class":50}," -connect",[40,928,929],{"class":50}," example.com:443",[40,931,932],{"class":50}," -servername",[40,934,187],{"class":50},[40,936,937],{"class":491}," \u003C",[40,939,940],{"class":50},"\u002Fdev\u002Fnull",[40,942,943],{"class":54},"   # TLS ve sertifika zinciri\n",[15,945,946],{},"Sonuçları yorumlamak:",[747,948,949,958],{},[750,950,951],{},[753,952,953,956],{},[756,954,955],{},"Sonuç",[756,957,763],{},[765,959,960,973,983],{},[753,961,962,970],{},[770,963,964,775,967],{},[19,965,966],{},"succeeded",[19,968,969],{},"open",[770,971,972],{},"Port açık, bir süreç dinliyor",[753,974,975,980],{},[770,976,977],{},[19,978,979],{},"Connection refused",[770,981,982],{},"Hosta ulaşıldı ama o portta dinleyen yok",[753,984,985,988],{},[770,986,987],{},"Zaman aşımı",[770,989,990],{},"Arada bir firewall paketi sessizce düşürüyor ya da host erişilemez",[10,992,994],{"id":993},"_7-paket-yakalama-tcpdump","7. Paket yakalama: tcpdump",[15,996,997],{},"Diğer her şey makul görünüyorsa ama sorun devam ediyorsa, kabloda gerçekte ne olduğuna bakın:",[31,999,1001],{"className":33,"code":1000,"language":35,"meta":36,"style":36},"sudo tcpdump -i any port 8080                     # 8080 trafiği\nsudo tcpdump -i eth0 host 10.0.1.15               # belirli host\nsudo tcpdump -i any -nn 'tcp port 443 and host 203.0.113.10'\nsudo tcpdump -i any -nn port 53                   # DNS sorguları\nsudo tcpdump -i any -A -s 0 port 80               # HTTP içeriğini ASCII göster\nsudo tcpdump -i any -w capture.pcap port 5432     # Wireshark için dosyaya yaz\nsudo tcpdump -r capture.pcap\n",[19,1002,1003,1024,1042,1062,1082,1108,1130],{"__ignoreMap":36},[40,1004,1005,1007,1010,1012,1015,1018,1021],{"class":42,"line":43},[40,1006,718],{"class":46},[40,1008,1009],{"class":50}," tcpdump",[40,1011,724],{"class":50},[40,1013,1014],{"class":50}," any",[40,1016,1017],{"class":50}," port",[40,1019,1020],{"class":92}," 8080",[40,1022,1023],{"class":54},"                     # 8080 trafiği\n",[40,1025,1026,1028,1030,1032,1034,1037,1039],{"class":42,"line":58},[40,1027,718],{"class":46},[40,1029,1009],{"class":50},[40,1031,724],{"class":50},[40,1033,110],{"class":50},[40,1035,1036],{"class":50}," host",[40,1038,207],{"class":92},[40,1040,1041],{"class":54},"               # belirli host\n",[40,1043,1044,1046,1048,1050,1052,1055,1057,1060],{"class":42,"line":71},[40,1045,718],{"class":46},[40,1047,1009],{"class":50},[40,1049,724],{"class":50},[40,1051,1014],{"class":50},[40,1053,1054],{"class":50}," -nn",[40,1056,540],{"class":491},[40,1058,1059],{"class":50},"tcp port 443 and host 203.0.113.10",[40,1061,546],{"class":491},[40,1063,1064,1066,1068,1070,1072,1074,1076,1079],{"class":42,"line":82},[40,1065,718],{"class":46},[40,1067,1009],{"class":50},[40,1069,724],{"class":50},[40,1071,1014],{"class":50},[40,1073,1054],{"class":50},[40,1075,1017],{"class":50},[40,1077,1078],{"class":92}," 53",[40,1080,1081],{"class":54},"                   # DNS sorguları\n",[40,1083,1084,1086,1088,1090,1092,1095,1097,1100,1102,1105],{"class":42,"line":99},[40,1085,718],{"class":46},[40,1087,1009],{"class":50},[40,1089,724],{"class":50},[40,1091,1014],{"class":50},[40,1093,1094],{"class":50}," -A",[40,1096,134],{"class":50},[40,1098,1099],{"class":92}," 0",[40,1101,1017],{"class":50},[40,1103,1104],{"class":92}," 80",[40,1106,1107],{"class":54},"               # HTTP içeriğini ASCII göster\n",[40,1109,1110,1112,1114,1116,1118,1120,1123,1125,1127],{"class":42,"line":116},[40,1111,718],{"class":46},[40,1113,1009],{"class":50},[40,1115,724],{"class":50},[40,1117,1014],{"class":50},[40,1119,488],{"class":50},[40,1121,1122],{"class":50}," capture.pcap",[40,1124,1017],{"class":50},[40,1126,857],{"class":92},[40,1128,1129],{"class":54},"     # Wireshark için dosyaya yaz\n",[40,1131,1132,1134,1136,1139],{"class":42,"line":128},[40,1133,718],{"class":46},[40,1135,1009],{"class":50},[40,1137,1138],{"class":50}," -r",[40,1140,1141],{"class":50}," capture.pcap\n",[15,1143,1144,1147,1148,1151,1152,1155],{},[19,1145,1146],{},"-nn"," IP ve port adlarını çözümlemez, çıktı hem daha hızlı hem daha okunur olur. İstemciden giden ",[19,1149,1150],{},"SYN"," paketlerini görüp sunucudan yanıt (",[19,1153,1154],{},"SYN-ACK",") gelmiyorsa, sorun arada bir firewall ya da security group'tadır.",[10,1157,1159],{"id":1158},"_8-firewall","8. Firewall",[31,1161,1163],{"className":33,"code":1162,"language":35,"meta":36,"style":36},"# firewalld (AlmaLinux \u002F RHEL)\nsudo firewall-cmd --list-all\nsudo firewall-cmd --permanent --add-port=8080\u002Ftcp\nsudo firewall-cmd --reload\n\n# ufw (Ubuntu)\nsudo ufw status verbose\nsudo ufw allow 8080\u002Ftcp\n\n# Doğrudan nftables \u002F iptables\nsudo nft list ruleset\nsudo iptables -L -n -v\n",[19,1164,1165,1170,1180,1192,1201,1207,1212,1224,1236,1240,1245,1258],{"__ignoreMap":36},[40,1166,1167],{"class":42,"line":43},[40,1168,1169],{"class":54},"# firewalld (AlmaLinux \u002F RHEL)\n",[40,1171,1172,1174,1177],{"class":42,"line":58},[40,1173,718],{"class":46},[40,1175,1176],{"class":50}," firewall-cmd",[40,1178,1179],{"class":50}," --list-all\n",[40,1181,1182,1184,1186,1189],{"class":42,"line":71},[40,1183,718],{"class":46},[40,1185,1176],{"class":50},[40,1187,1188],{"class":50}," --permanent",[40,1190,1191],{"class":50}," --add-port=8080\u002Ftcp\n",[40,1193,1194,1196,1198],{"class":42,"line":82},[40,1195,718],{"class":46},[40,1197,1176],{"class":50},[40,1199,1200],{"class":50}," --reload\n",[40,1202,1203],{"class":42,"line":99},[40,1204,1206],{"emptyLinePlaceholder":1205},true,"\n",[40,1208,1209],{"class":42,"line":116},[40,1210,1211],{"class":54},"# ufw (Ubuntu)\n",[40,1213,1214,1216,1219,1221],{"class":42,"line":128},[40,1215,718],{"class":46},[40,1217,1218],{"class":50}," ufw",[40,1220,385],{"class":50},[40,1222,1223],{"class":50}," verbose\n",[40,1225,1226,1228,1230,1233],{"class":42,"line":343},[40,1227,718],{"class":46},[40,1229,1218],{"class":50},[40,1231,1232],{"class":50}," allow",[40,1234,1235],{"class":50}," 8080\u002Ftcp\n",[40,1237,1238],{"class":42,"line":357},[40,1239,1206],{"emptyLinePlaceholder":1205},[40,1241,1242],{"class":42,"line":365},[40,1243,1244],{"class":54},"# Doğrudan nftables \u002F iptables\n",[40,1246,1247,1249,1252,1255],{"class":42,"line":379},[40,1248,718],{"class":46},[40,1250,1251],{"class":50}," nft",[40,1253,1254],{"class":50}," list",[40,1256,1257],{"class":50}," ruleset\n",[40,1259,1260,1262,1265,1267,1270],{"class":42,"line":391},[40,1261,718],{"class":46},[40,1263,1264],{"class":50}," iptables",[40,1266,466],{"class":50},[40,1268,1269],{"class":50}," -n",[40,1271,1272],{"class":50}," -v\n",[15,1274,1275,1276,1279],{},"Bulut sunucularda işletim sistemi firewall'una ek olarak sağlayıcının ",[819,1277,1278],{},"security group \u002F cloud firewall"," kurallarını da kontrol etmeyi unutmayın.",[10,1281,1283],{"id":1282},"_9-adım-adım-kontrol-listesi","9. Adım adım kontrol listesi",[15,1285,1286,1289],{},[19,1287,1288],{},"https:\u002F\u002Fapi.example.com","'a erişilemiyor:",[31,1291,1293],{"className":33,"code":1292,"language":35,"meta":36,"style":36},"dig +short api.example.com                      # 1. DNS doğru IP'yi veriyor mu?\nnc -zv api.example.com 443                      # 2. Port dışarıdan açık mı?\ncurl -v https:\u002F\u002Fapi.example.com\u002Fhealth          # 3. TLS ve HTTP yanıtı ne?\n# Sunucuda:\nss -tlnp | grep -E ':443|:8080'                 # 4. Nginx ve uygulama dinliyor mu, hangi adreste?\ncurl -s localhost:8080\u002Fhealth                   # 5. Uygulama lokalde yanıt veriyor mu?\nsudo firewall-cmd --list-all                    # 6. Firewall izin veriyor mu?\nsudo tail -n 50 \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log        # 7. Proxy ne diyor?\njournalctl -u myapp -n 100                      # 8. Uygulama ne diyor?\n",[19,1294,1295,1307,1321,1333,1338,1363,1375,1387,1404],{"__ignoreMap":36},[40,1296,1297,1299,1301,1304],{"class":42,"line":43},[40,1298,268],{"class":46},[40,1300,280],{"class":50},[40,1302,1303],{"class":50}," api.example.com",[40,1305,1306],{"class":54},"                      # 1. DNS doğru IP'yi veriyor mu?\n",[40,1308,1309,1311,1313,1315,1318],{"class":42,"line":58},[40,1310,848],{"class":46},[40,1312,851],{"class":50},[40,1314,1303],{"class":50},[40,1316,1317],{"class":92}," 443",[40,1319,1320],{"class":54},"                      # 2. Port dışarıdan açık mı?\n",[40,1322,1323,1325,1327,1330],{"class":42,"line":71},[40,1324,131],{"class":46},[40,1326,454],{"class":50},[40,1328,1329],{"class":50}," https:\u002F\u002Fapi.example.com\u002Fhealth",[40,1331,1332],{"class":54},"          # 3. TLS ve HTTP yanıtı ne?\n",[40,1334,1335],{"class":42,"line":82},[40,1336,1337],{"class":54},"# Sunucuda:\n",[40,1339,1340,1342,1344,1347,1350,1353,1355,1358,1360],{"class":42,"line":99},[40,1341,163],{"class":46},[40,1343,657],{"class":50},[40,1345,1346],{"class":491}," |",[40,1348,1349],{"class":46}," grep",[40,1351,1352],{"class":50}," -E",[40,1354,540],{"class":491},[40,1356,1357],{"class":50},":443|:8080",[40,1359,701],{"class":491},[40,1361,1362],{"class":54},"                 # 4. Nginx ve uygulama dinliyor mu, hangi adreste?\n",[40,1364,1365,1367,1369,1372],{"class":42,"line":116},[40,1366,131],{"class":46},[40,1368,134],{"class":50},[40,1370,1371],{"class":50}," localhost:8080\u002Fhealth",[40,1373,1374],{"class":54},"                   # 5. Uygulama lokalde yanıt veriyor mu?\n",[40,1376,1377,1379,1381,1384],{"class":42,"line":128},[40,1378,718],{"class":46},[40,1380,1176],{"class":50},[40,1382,1383],{"class":50}," --list-all",[40,1385,1386],{"class":54},"                    # 6. Firewall izin veriyor mu?\n",[40,1388,1389,1391,1394,1396,1398,1401],{"class":42,"line":343},[40,1390,718],{"class":46},[40,1392,1393],{"class":50}," tail",[40,1395,1269],{"class":50},[40,1397,241],{"class":92},[40,1399,1400],{"class":50}," \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log",[40,1402,1403],{"class":54},"        # 7. Proxy ne diyor?\n",[40,1405,1406,1409,1412,1415,1417,1420],{"class":42,"line":357},[40,1407,1408],{"class":46},"journalctl",[40,1410,1411],{"class":50}," -u",[40,1413,1414],{"class":50}," myapp",[40,1416,1269],{"class":50},[40,1418,1419],{"class":92}," 100",[40,1421,1422],{"class":54},"                      # 8. Uygulama ne diyor?\n",[747,1424,1425,1435],{},[750,1426,1427],{},[753,1428,1429,1432],{},[756,1430,1431],{},"Belirti",[756,1433,1434],{},"Muhtemel sebep",[765,1436,1437,1450,1459,1466,1478,1488],{},[753,1438,1439,1444],{},[770,1440,1441],{},[19,1442,1443],{},"Could not resolve host",[770,1445,1446,1447,1449],{},"DNS kaydı yok ya da yanlış; ",[19,1448,268],{}," ile kontrol",[753,1451,1452,1456],{},[770,1453,1454],{},[19,1455,979],{},[770,1457,1458],{},"Servis çalışmıyor ya da yanlış port",[753,1460,1461,1463],{},[770,1462,987],{},[770,1464,1465],{},"Firewall \u002F security group engelliyor",[753,1467,1468,1471],{},[770,1469,1470],{},"Lokalde çalışıyor, dışarıdan çalışmıyor",[770,1472,1473,1474,1477],{},"Uygulama ",[19,1475,1476],{},"127.0.0.1","'e bind olmuş",[753,1479,1480,1485],{},[770,1481,1482],{},[19,1483,1484],{},"SSL certificate problem",[770,1486,1487],{},"Sertifika süresi dolmuş, zincir eksik ya da domain uyuşmuyor",[753,1489,1490,1498],{},[770,1491,1492,775,1495],{},[19,1493,1494],{},"502",[19,1496,1497],{},"504",[770,1499,1500],{},"Reverse proxy arkadaki uygulamaya ulaşamıyor ya da yanıt geç geliyor",[10,1502,955],{"id":1503},"sonuç",[15,1505,1506,1507,1509,1510,146,1512,1514,1515,1518,1519,1522],{},"Ağ sorunlarının neredeyse tamamı bu yazıdaki on kadar komutla teşhis edilebilir. Önemli olan sırayı korumak: önce DNS (",[19,1508,268],{},"), sonra port (",[19,1511,848],{},[19,1513,163],{},"), sonra uygulama (",[19,1516,1517],{},"curl -v","), en son paketler (",[19,1520,1521],{},"tcpdump","). Her adım bir sonraki adımda bakılacak yeri daraltır ve \"her şeyi deneme\" yerine sorunu birkaç dakikada izole etmenizi sağlar.",[1524,1525,1526],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":36,"searchDepth":58,"depth":58,"links":1528},[1529,1530,1531,1532,1533,1534,1535,1536,1537,1538,1539],{"id":12,"depth":58,"text":13},{"id":28,"depth":58,"text":29},{"id":167,"depth":58,"text":168},{"id":257,"depth":58,"text":258},{"id":422,"depth":58,"text":423},{"id":644,"depth":58,"text":645},{"id":837,"depth":58,"text":838},{"id":993,"depth":58,"text":994},{"id":1158,"depth":58,"text":1159},{"id":1282,"depth":58,"text":1283},{"id":1503,"depth":58,"text":955},"2026-11-04","Bir servise neden ulaşılamadığını adım adım bulmak — ip, ping, dig, curl, ss, traceroute\u002Fmtr, nc, tcpdump ve firewall komutları.","md",{},"\u002Ftr\u002Fblog\u002Flinux-network-troubleshooting",{"title":5,"description":1541},"tr\u002Fblog\u002Flinux-network-troubleshooting",[1548,1549,1550,1551],"linux","network","devops","rehber","\u002Fen\u002Fblog\u002Flinux-network-troubleshooting","jCgHvBoyAnPdgiSwF5bVCQY6Tsq0jXQvafIhqYLymNo",[1555,1563,1570],{"path":1556,"title":1557,"description":1558,"date":1559,"tags":1560},"\u002Ftr\u002Fblog\u002Fssh-config-and-tunneling","SSH Config, Anahtar Yönetimi ve Tünelleme","ed25519 anahtar üretmek, ssh-agent, ~\u002F.ssh\u002Fconfig ile kısayollar, jump host, port yönlendirme (-L, -R, -D) ve sunucu tarafı güvenlik ayarları.","2026-10-31",[1561,1548,1562,1551],"ssh","güvenlik",{"path":1564,"title":1565,"description":1566,"date":1567,"tags":1568},"\u002Ftr\u002Fblog\u002Fsystemd-service-guide","systemd ile Linux Servisi Yazmak","Bir uygulamayı systemd servisi olarak çalıştırmak — unit dosyası, restart politikası, ortam değişkenleri, journalctl ile log okuma ve timer ile zamanlanmış görevler.","2026-10-30",[1548,1569,1550,1551],"systemd",{"path":1571,"title":1572,"description":1573,"date":1574,"tags":1575},"\u002Ftr\u002Fblog\u002Fgithub-actions-ci-cd","GitHub Actions ile CI\u002FCD — Build, Test ve Sunucuya Deploy","Bir projeyi her push'ta build edip test eden, main'e merge edilince SSH ile kendi sunucunuza deploy eden GitHub Actions workflow'u adım adım.","2026-10-29",[1576,1577,1550,1551],"github","ci-cd",1793754930816]