15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
08.10.2024

“ping: command not found” — Ubuntu’da Ping Nasıl Kurulur ve Kullanılır

`ping: command not found` hatası, Ubuntu’da iputils-ping paketi sistemde bulunmadığında ortaya çıkar. Bu durum, görüntü boyutunu küçültmek için gerekli olmayan yardımcı programların kaldırıldığı minimal kurulumlarda, bulut VPS görüntülerinde ve Docker konteynerlerinde yaygındır. Çözüm tek bir `apt` komutudur: `sudo apt install iputils-ping`. Bu makale, paketin neden eksik olduğunu, farklı Ubuntu ortamlarında nasıl doğru şekilde kurulacağını ve `ping`’ın gerçek dünya ağ tanılamaları için nasıl etkili biçimde kullanılacağını açıklamaktadır.

Ping Komutu Aslında Ne Yapar?

`ping`, hedef bir ana bilgisayara ICMP Echo Request paketleri gönderen ve ICMP Echo Reply yanıtlarını dinleyen bir ağ tanılama yardımcı programıdır. Her paket için gidiş-dönüş süresi (RTT) milisaniye cinsinden ölçülerek ağ gecikmesi, erişilebilirlik ve kararlılık hakkında kesin bir sinyal sağlar.

Arka planda `ping`, RFC 792’de tanımlanan İnternet Kontrol Mesajı Protokolü’ne (ICMP) dayanır. OSI modelinin ağ katmanında (Katman 3) çalışır; bu da TCP ve UDP’yi tamamen atladığı anlamına gelir. Bu özellik, bir bağlantı sorununu IP yönlendirme düzeyinde mi yoksa uygulama ya da taşıma katmanında mı olduğunu tespit etmek için kullanışlıdır.

Temel Kullanım Alanları

  • Erişilebilirlik testi — Uzak bir ana bilgisayarın çalışır durumda olup olmadığını ve yanıt verip vermediğini doğrular.
  • Gecikme ölçümü — RTT’yi milisaniye cinsinden raporlar; yüksek RTT, ağ tıkanıklığına veya coğrafi olarak uzak bir sunucuya işaret eder.
  • Paket kaybı tespiti — Düşen ICMP yanıtları, donanım arızalarına, aşırı yüklenmiş yönlendiricilere veya kararsız bağlantılara işaret eder.
  • Ağ yolu doğrulaması — Yeni yapılandırılmış bir rotanın veya güvenlik duvarı kuralının trafiği engellemediğini doğrulamak için kullanışlıdır.
  • Güvenlik duvarı ve ICMP filtreleme tespiti — `ping` zaman aşımına uğrasa da TCP hizmetleri yanıt veriyorsa, güvenlik duvarı muhtemelen ICMP trafiğini özellikle engelliyor demektir.
  • DNS çözümleme doğrulaması — Bir IP yerine ana bilgisayar adına ping atmak, DNS çözümlemesinin doğru çalıştığını onaylar.

Ubuntu’da Ping Neden Eksik?

Ubuntu’nun tam masaüstü kurulumu varsayılan olarak `ping`’ı içerir. Ancak birkaç yaygın senaryo, ikili dosyanın bulunmadığı bir sistemle sonuçlanır:

  • Minimal sunucu kurulumları — Ubuntu Server’ın minimal ISO’su, ayak izini küçük tutmak için birçok yardımcı programı kasıtlı olarak dışarıda bırakır.
  • Bulut ve VPS görüntüleri — Sağlayıcılar genellikle daha hızlı sağlama için sıkıştırılmış Ubuntu görüntüleri dağıtır. Bir VPS Hosting örneği çalıştırıyorsanız, bununla ilk önyüklemede karşılaşabilirsiniz.
  • Docker ve LXC konteynerleri — Resmi Ubuntu temel görüntüleri (`ubuntu:22.04`, `ubuntu:24.04`) varsayılan olarak `iputils-ping`’ı içermez.
  • Otomatik dağıtımlar ve CI/CD ardışık düzenleri — Minimal temel görüntülerden oluşturulan betikli ortamlarda standart ağ araçları sıklıkla eksiktir.
  • Chroot ortamları ve WSL — Linux için Windows Alt Sistemi ve chroot jail’leri de paketi dışarıda bırakabilir.

İkili dosyanın kendisi `/bin/ping`’da (veya daha yeni sistemlerde `/usr/bin/ping`’da) bulunur. Bu yol mevcut değilse, kabuk `command not found` döndürür. İkili dosyanın yalnızca eksik mi yoksa standart dışı bir yolda mı olduğunu şu komutla doğrulayabilirsiniz:

“`bash

which ping

or

type ping

“`

Her ikisi de hiçbir şey döndürmezse, paket kurulu değildir.

Ubuntu’da Ping Nasıl Kurulur (Adım Adım)

Adım 1: Paket Dizinini Güncelleyin

Herhangi bir şey kurmadan önce her zaman yerel paket dizinini yenileyin. Bu, `apt`’ın mevcut en son paket sürümlerini çözmesini sağlar ve eski meta veri hatalarını önler:

“`bash

sudo apt update

“`

Bir Dedicated Server veya yeni sağlanmış bir VPS’te bu adım özellikle önemlidir; çünkü paket önbelleği günler veya haftalar kadar eski olabilir.

Adım 2: iputils-ping’i Kurun

Ubuntu’daki `ping` ikili dosyası, Linux çekirdek topluluğu tarafından sürdürülen daha geniş `iputils` paket grubunun bir parçası olan iputils-ping paketi tarafından sağlanır:

“`bash

sudo apt install iputils-ping

“`

`Do you want to continue? [Y/n]` istemiyle karşılaştığınızda `Y` ve `Enter` tuşlarına basın. Paket küçüktür (genellikle 100 KB’ın altında) ve saniyeler içinde kurulur.

Adım 3: Kurulumu Doğrulayın

İkili dosyanın artık mevcut ve işlevsel olduğunu onaylayın:

“`bash

ping -c 4 google.com

“`

`-c 4` bayrağı çıktıyı 4 paketle sınırlar. Başarılı bir yanıt şöyle görünür:

“`

PING google.com (142.250.185.46) 56(84) bytes of data.

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=1 ttl=118 time=12.4 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=2 ttl=118 time=11.9 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=3 ttl=118 time=12.1 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=4 ttl=118 time=12.3 ms

— google.com ping statistics —

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 11.9/12.175/12.4/0.185 ms

“`

%0 paket kaybı ve tutarlı RTT değerleri görmek istersiniz. RTT’deki yüksek varyans (`mdev`), gecikmeye duyarlı uygulamalar için önem taşıyan ağ titremesine işaret eder.

Adım 4: Kurulu İkili Dosya Yolunu ve İzinleri Kontrol Edin

“`bash

which ping

ls -la $(which ping)

“`

Ubuntu 20.04 ve sonrasında `ping` artık setuid bitini gerektirmez. Bunun yerine, kök ayrıcalıkları olmadan ham ICMP paketleri göndermek için Linux yeteneklerini (`cap_net_raw`) kullanır. Bunu şu komutla inceleyebilirsiniz:

“`bash

getcap $(which ping)

Expected output: /usr/bin/ping cap_net_raw=ep

“`

Bu, eski setuid tabanlı uygulamalara göre bir güvenlik iyileştirmesidir.

Docker Konteyneri İçinde Ping Kurulumu

Ubuntu tabanlı bir Docker konteyneri içinde çalışıyorsanız süreç aynıdır; ancak komutları root olarak çalıştırmanız gerekebilir (çoğu temel görüntüde varsayılan kullanıcı):

“`bash

apt update && apt install -y iputils-ping

“`

`-y` bayrağı istemi otomatik olarak onaylar; bu, etkileşimli olmayan Dockerfile derlemeleri için zorunludur. `ping`’ı özel bir görüntüye dahil etmek için `Dockerfile` dosyanıza ekleyin:

“`dockerfile

FROM ubuntu:22.04

RUN apt update && apt install -y iputils-ping && rm -rf /var/lib/apt/lists/*

“`

`rm -rf /var/lib/apt/lists/*` satırı, görüntü katmanını küçük tutmak için paket önbelleğini temizler — bu, üretim konteyner görüntüleri için en iyi uygulamadır.

İnternet Erişimi Olmadan Ubuntu’ya Ping Kurulumu (Çevrimdışı Yöntem)

Hava boşluklu sunucularda veya izole ağ segmentlerinde `apt` harici depolara ulaşamaz. Bu durumda iki seçeneğiniz vardır:

Seçenek 1: .deb paketini manuel olarak aktarın

İnternet erişimi olan bir makinede paketi indirin:

“`bash

apt download iputils-ping

“`

`.deb` dosyasını `scp` veya USB sürücü aracılığıyla hedef makineye aktarın, ardından kurun:

“`bash

sudo dpkg -i iputils-ping_*.deb

“`

Seçenek 2: Yerel bir yansıma veya dahili APT deposu kullanın

`/etc/apt/sources.list`’ı, paketi önbelleğe almış dahili bir yansımaya işaret edecek şekilde yapılandırın. Bu, katı çıkış denetimleri olan kurumsal ortamlar için standart yaklaşımdır.

Ping Engellendiğinde veya Kullanılamadığında Alternatif Araçlar

ICMP trafiği güvenlik duvarları, bulut güvenlik grupları veya barındırma sağlayıcıları tarafından sıklıkla engellenir. `ping` ana bilgisayara erişilebilir olmasına rağmen sürekli zaman aşımına uğruyorsa şu alternatifleri değerlendirin:

AraçProtokolBirincil KullanımKurulum Komutu
`ping`ICMPTemel erişilebilirlik ve gecikme`apt install iputils-ping`
`traceroute`ICMP / UDPAtlama atlama yol analizi`apt install traceroute`
`mtr`ICMPSürekli yol + gecikme istatistikleri`apt install mtr`
`nmap`TCP/UDP/ICMPPort tarama, ana bilgisayar keşfi`apt install nmap`
`curl` / `wget`HTTP/HTTPSUygulama katmanı erişilebilirliği`apt install curl`
`nc` (netcat)TCP/UDPHam soket bağlantı testi`apt install netcat-openbsd`
`hping3`TCP/UDP/ICMPÖzel paket oluşturma`apt install hping3`
`fping`ICMPToplu ana bilgisayar erişilebilirlik testi`apt install fping`

Temel içgörü: `mtr` (Matt’in Traceroute’u), aralıklı paket kaybını teşhis etmek için `ping`’dan tartışmasız daha kullanışlıdır; çünkü yoldaki her atlamayı sürekli olarak araştırır ve atlama başına kayıp yüzdelerini gerçek zamanlı olarak görüntüler. VPS with cPanel çalıştıranlar dahil üretim sunucularında — bir müşteri aralıklı bağlantı sorunları bildirdiğinde `mtr` ilk başvurmanız gereken araç olmalıdır.

Yaygın Hatalar ve Nasıl Düzeltilir

“permission denied” veya “operation not permitted”

Bu durum, `cap_net_raw` yeteneği ikili dosyada eksik olduğunda veya kısıtlı Linux yeteneklerine sahip bir konteyner içinde çalışırken ortaya çıkar:

“`bash

Check capabilities

getcap /usr/bin/ping

Restore if missing

sudo setcap cap_net_raw+ep /usr/bin/ping

“`

Docker içinde konteyneri `–cap-add NET_RAW` veya `–privileged` ile çalıştırmanız gerekebilir (`–privileged`’ı yalnızca güvenilir, izole ortamlarda kullanın):

“`bash

docker run –cap-add NET_RAW ubuntu:22.04 ping -c 2 8.8.8.8

“`

“unable to locate package iputils-ping”

Bu, `apt`’ın paketi mevcut depo listesinde bulamadığı anlamına gelir. Nedenler ve çözümler:

  1. Eski paket dizini — Önce `sudo apt update` çalıştırın.
  2. Bozuk sources.list — `/etc/apt/sources.list`’ın geçerli Ubuntu depo girişleri içerdiğini doğrulayın.
  3. Universe deposu olmayan minimal konteyner — Universe deposunu ekleyin: `sudo add-apt-repository universe`.
  4. Ağ bağlantısı yok — Makinenin Ubuntu’nun paket sunucularına ulaşıp ulaşamadığını doğrulamak için `curl https://archive.ubuntu.com` ile test edin.

“ping: connect: Network is unreachable”

İkili dosya kurulu, ancak sistemde yapılandırılmış ağ rotası yok. Bu bir ağ yapılandırma sorunudur, `ping` sorunu değildir. Şu komutla tanılayın:

“`bash

ip route show

ip addr show

“`

Varsayılan rota eksikse ekleyin:

“`bash

sudo ip route add default via <gateway_ip>

“`

“Name or service not known” (DNS hatası)

`ping google.com`, ICMP paketleri göndermeden önce ana bilgisayar adını çözer. DNS bozuksa bu hatayı görürsünüz. Doğrudan bir IP’ye ping atarak test edin:

“`bash

ping -c 2 8.8.8.8

“`

Bu başarılı olursa sorun DNS’e özgüdür. `/etc/resolv.conf`’ı kontrol edin ve geçerli bir ad sunucusunun yapılandırıldığından emin olun.

Her Sistem Yöneticisinin Bilmesi Gereken Temel Ping Bayrakları

BayrakAçıklamaÖrnek
`-c <n>`Tam olarak n paket gönder, sonra dur`ping -c 5 8.8.8.8`
`-i <sec>`Paketler arası aralık (varsayılan: 1s)`ping -i 0.2 8.8.8.8`
`-s <bytes>`Paket yük boyutunu ayarla (varsayılan: 56 bayt)`ping -s 1400 8.8.8.8`
`-t <ttl>`IP Yaşam Süresi değerini ayarla`ping -t 64 8.8.8.8`
`-W <sec>`Her yanıt için bekleme zaman aşımı`ping -W 2 8.8.8.8`
`-q`Sessiz mod — yalnızca özeti göster`ping -q -c 10 8.8.8.8`
`-f`Flood ping (root gerektirir)`sudo ping -f 8.8.8.8`
`-4` / `-6`IPv4 veya IPv6’yı zorla`ping -6 ipv6.google.com`
`-D`Her satırdan önce zaman damgası yazdır`ping -D -c 5 8.8.8.8`
`-O`Bekleyen yanıtları raporla (paket kaybını satır içi gösterir)`ping -O 8.8.8.8`

Pratik ipucu: MTU yol keşfini test etmek için `ping -s 1472 -M do <gateway>` kullanın. `-M do` bayrağı “Parçalama Yapma” bitini ayarlar; paket yol MTU’sunu aşarsa bir “Frag needed” ICMP mesajı alırsınız; bu, MTU ile ilgili TCP kara deliklerini teşhis etmenin kesin yoludur — VPN tünellerinde ve belirli bulut ağ yapılandırmalarında yaygın bir sorundur.

Güvenlik Değerlendirmeleri: ICMP Ne Zaman Devre Dışı Bırakılmalı

`ping` tanılama için paha biçilmez olsa da, kamuya açık sunucularda kısıtsız ICMP risk taşır:

  • ICMP flood saldırıları (ping flood) — Yüksek hacimli ICMP trafiği, eski donanımlarda bant genişliğini veya CPU’yu doyurabilir.
  • Ağ keşfi — ICMP’ye yanıt vermek, bir ana bilgisayarın çalışır durumda olduğunu ortaya koyar; bu da saldırganların altyapınızı haritalandırmasına yardımcı olur.
  • Smurf saldırıları — Güçlendirilmiş ICMP yayın saldırıları (büyük ölçüde modern ağlarda azaltılmış, ancak eski altyapıda hâlâ geçerli).

Üretim sunucuları için — özellikle web uygulamaları veya Email Hosting hizmetleri barındıranlar — makul bir politika, ICMP’ye yalnızca güvenilir yönetim IP’lerinden izin vermek ve `iptables` veya `nftables` kullanarak genel internetten gelen ICMP’yi hız sınırlamak ya da engellemektir:

“`bash

Allow ICMP from a trusted management IP

sudo iptables -A INPUT -p icmp –icmp-type echo-request -s 203.0.113.10 -j ACCEPT

Rate-limit ICMP from all other sources (max 10 pings/second)

sudo iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 10/second -j ACCEPT

Drop remaining ICMP echo requests

sudo iptables -A INPUT -p icmp –icmp-type echo-request -j DROP

“`

Bu yaklaşım, ekibiniz için tanılama yeteneğini korurken saldırı yüzeyini azaltır.

Sunucu ve Barındırma Ortamları Bağlamında Ping

`ping` davranışını anlamak, barındırma ortamınıza göre önemli ölçüde farklılık gösterir:

Paylaşımlı Barındırma: Shared Web Hosting planlarında genellikle kabuk erişiminiz olmaz. Ping tabanlı tanılamalar, sunucunuzun IP’sini hedef alan yerel bir makineden veya harici bir izleme hizmetinden gerçekleştirilmelidir.

VPS ve Dedicated Sunucular: Tam root erişimi, `iputils-ping`’ı kurmanıza ve tüm tanılama komutlarını serbestçe çalıştırmanıza olanak tanır. Sunucunuz ile yukarı akış sağlayıcıları arasındaki bağlantı sorunlarını gidermek için `ping`, `mtr` ve `traceroute` en değerli araçlardır.

GPU Sunucuları: GPU Hosting düğümleri gibi yüksek performanslı hesaplama ortamları, hesaplama iş yüklerine kaynak tahsisini en üst düzeye çıkarmak için genellikle minimal işletim sistemi görüntüleri çalıştırır. Ping ve diğer tanılama araçları rutin olarak eksiktir ve açıkça kurulması gerekir.

Konteynerler ve Orkestrasyon: Kubernetes pod’larında veya Docker Swarm hizmetlerinde, ağ hata ayıklama araçları genellikle üretim görüntülerinde bulunmaz. Önerilen yaklaşım, üretim görüntülerini tanılama yardımcı programlarıyla şişirmek yerine özel bir hata ayıklama sidecar konteyneri veya geçici hata ayıklama pod’u (`kubectl debug`) kullanmaktır.

Hızlı Başvuru Karar Matrisi

Belirli senaryonuza göre doğru eylemi belirlemek için bu matrisi kullanın:

SenaryoÖnerilen Eylem
Yeni Ubuntu sunucu kurulumu, ping eksik`sudo apt update && sudo apt install iputils-ping`
Docker konteyneri, root istemi yok`apt update && apt install -y iputils-ping`
Ping kurulu ama “permission denied”`sudo setcap cap_net_raw+ep /usr/bin/ping`
Ping zaman aşımına uğruyor, ana bilgisayara HTTP üzerinden erişilebilirICMP güvenlik duvarı tarafından engelleniyor — bunun yerine `curl` veya `nc` kullanın
Ana bilgisayar adına ping atarken DNS çözümlemesi başarısız`/etc/resolv.conf`’ı kontrol edin; `ping 8.8.8.8` ile test edin
Atlama atlama yol analizi gerekiyor`mtr` kurun ve `ping` yerine kullanın
Çevrimdışı / hava boşluklu sunucuBaşka bir makinede `.deb` indirin, `scp` ile aktarın, `dpkg -i` ile kurun
Bulut sağlayıcısında ICMP engellendiGüvenlik grubu / güvenlik duvarı kurallarını kontrol edin; gelen ICMP tip 8’e izin verin

Teknik Kontrol Listesi: Ping’i Doğru Çalıştırma

  • [ ] Kurulumu denemeden önce `sudo apt update` çalıştırın
  • [ ] `sudo apt install iputils-ping` ile kurun
  • [ ] İkili dosya yolunu doğrulayın: `which ping` `/usr/bin/ping` döndürmelidir
  • [ ] Yetenekleri doğrulayın: `getcap /usr/bin/ping` `cap_net_raw=ep` göstermelidir
  • [ ] Ana bilgisayar adıyla test etmeden önce önce IP ile test edin (`ping -c 2 8.8.8.8`)
  • [ ] Ana bilgisayar adı başarısız olup IP başarılı olursa `/etc/resolv.conf` aracılığıyla DNS’i tanılayın
  • [ ] Konteynerler için, izin hataları devam ederse `–cap-add NET_RAW` ekleyin
  • [ ] Üretim sunucularında, genel ICMP için `iptables` hız sınırlaması uygulayın
  • [ ] Kalıcı veya aralıklı bağlantı sorunları için `mtr`’ı değerlendirin
  • [ ] Çevrimdışı ortamlar için, bağlantılı bir makinede `apt download` kullanın ve `.deb`’ı aktarın

SSS

S: Ubuntu neden varsayılan olarak ping’i içermiyor?

Ubuntu’nun minimal ve sunucu görüntüleri, kurulum ayak izini küçültmek için `iputils-ping`’ı dışarıda bırakır. Paket, temel sistemin gerekli bağımlılıklarının bir parçası değildir; bu nedenle açıkça talep edilmediği sürece hariç tutulur. `sudo apt install iputils-ping` ile kurun.

S: Ubuntu’da `ping` ile `ping6` arasında bir fark var mı?

Modern Ubuntu sistemlerinde (18.04 ve sonrası), `ping` ikili dosyası hem IPv4 hem de IPv6’yı işler. IPv4’ü zorlamak için `ping -4`, IPv6’yı zorlamak için `ping -6` kullanın. Bağımsız `ping6` ikili dosyası kullanımdan kaldırılmıştır ve mevcut `iputils-ping` sürümlerinde artık ayrı olarak gönderilmemektedir.

S: Ping neden root olarak çalışırken normal kullanıcılar için başarısız oluyor?

Bu, `cap_net_raw` yeteneğinin ikili dosyada eksik olduğunu gösterir. Geri yüklemek için `sudo setcap cap_net_raw+ep /usr/bin/ping` çalıştırın. Alternatif olarak, paketi yeniden kurmak (`sudo apt install –reinstall iputils-ping`) ikili dosyanın yeteneklerini doğru varsayılanlarına sıfırlayacaktır.

S: Belirli bir portun açık olup olmadığını test etmek için ping kullanabilir miyim?

Hayır. `ping` ICMP kullanır ve TCP/UDP portları kavramına sahip değildir. Belirli bir portun açık olup olmadığını test etmek için `nc -zv <host> <port>` (netcat) veya `nmap -p <port> <host>` kullanın. Bir ana bilgisayar `ping` aracılığıyla erişilebilir olurken belirli bir portu engelleyebilir ya da tam tersi geçerli olabilir.

S: Ping çıktısındaki yüksek `mdev` (standart sapma) ne anlama gelir?

`mdev`, paketler arasındaki RTT varyansını ölçer. Yüksek bir `mdev` değeri (örneğin, 30 ms ortalama RTT’ye sahip bir bağlantıda 20–50 ms) ağ titremesini — tutarsız paket iletim sürelerini — gösterir. Bu durum, VoIP, video konferans ve çevrimiçi oyun gibi gerçek zamanlı uygulamalar için özellikle zararlıdır. Kalıcı titreme genellikle ara bir yönlendiricideki tıkanıklığa, arızalı bir ağ arabirimine veya yanlış yapılandırılmış bir QoS politikasına işaret eder.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın