PING icmp açık soketi: Vserver'da işleme izin verilmiyor


14

Birkaç sanal makine ile vserver ortamı çalıştırıyorum. Tek bir VM'de aşağıdaki sorun vardır:

$ ping 8.8.8.8
ping: icmp open socket: Operation not permitted

$ ls -l $(which ping)
-rwsr-xr-x 1 root root 30736 2007-01-31 00:10 /bin/ping

$ whoami
root

$ mount
/dev/hdv1 on / type ufs (defaults)
none on /proc type proc (0)
none on /tmp type tmpfs (size=16m,mode=1777)
none on /dev/pts type devpts (gid=5,mode=620)

$ uname -a
Linux v-web1 2.6.27.55-vs2.3.0.36.9 #1 SMP Tue Apr 28 11:35:00 CEST 2015 i686 GNU/Linux

Ana makinede ve diğer tüm VM ana bilgisayarlarında Ping'in iyi çalıştığını unutmayın.

Bana yardım edecek bir fikri olan var mı, lütfen?


Is /bin/pingdiğer makinelerde set-uid? Bu VM'de TCP / IP doğru ayarlanmış mı? DNS, traceroute, HTTP gibi başka şeyler çalışıyor mu?
David Schwartz

2
İputils-ping'i yeniden yüklemeyi denediniz mi?
Nabil Bourenane

Başka bir bilgi yararlı olabilir: Bu, saniyede yaklaşık 5 ila 7 erişim ile Apache çalıştıran son derece üretken bir makinedir - bu nedenle ağ yapılandırmasını değiştirme hakkında hiçbir fikir yoktur. Dün gece yeni bir donanıma taşındı ve o zamandan beri Munin, Ping'in çalışmadığını gösteriyor.
rexkogitans

Yanıtlar:


12

TL; DR sürümü: yeniden yükle iputils-ping

İnternetin kullanılması önerilen yerlerde gördüm

chmod u+s $( which ping );

Ancak bu, kullanıcının önyüklemeyi ve seli değiştirmesine izin verecektir. Bu, bir KULLANICI'nın Yerel makinenizi veya başka bir makineyi veya ağınızı Hizmet Reddi'ne neden olabilir.

Ne @ nabil-bourenane önerilen , iputils-pingbenim için sorunu çözdü ve SUID biti ayarlanmayan yeniden denedim .

username@server:~$ ls -l $( which ping );
-rwxr-xr-x 1 root root 44104 Nov  8  2014 /bin/ping

SUID biti ayarlanmışsa,

username@server:~$ ls -l $( which ping );
-rwsr-xr-x 1 root root 44104 Nov  8  2014 /bin/ping

Zaten root iseniz, SUID kök ikili dosyaları çok fazla değişmez.
Falcon Momot

@FalconMomot, çözümü ekledim.
rexkogitans

İputils (önceki / sonraki aynı sürüm) yeniden benim için centos7 üzerinde çalıştı. Daha önce, getcap / bin / ping ayarlanmış bir yetenek göstermedi. Yeniden yükleme sonrasında getcap /bin/pingdöndürdü: /bin/ping = cap_net_admin,cap_net_raw+p. Şimdi soru şu: neden yeteneklerini kaybetti. rpm --verify iputilsping, arping ve clockdiff'in hepsinin kapak ayarlarının değiştiğini (yeniden yüklemeden önce) gösterdiğini gösterdi.
Juan

Benim durumumda, bir döküm görüntüsünden geri yüklendikten sonra dosya yeteneklerini kaybetmiş olabilir. Ayrıca bkz . Unix.com/unix-for-advanced-and-expert-users/… . Bu durumda katran kullandılar. Benim durumumda, tüm bu dosya özniteliklerini (attrs, yetenekler, acls, vb.) Koruyarak döküm / geri yükleme umuyordum. Sürmediğine şaşırdım, bu yüzden yeniden üretip üretemeyeceğimi görmek zorundayım (ve belki bir hata kaydedebilirim).
Juan

1

Çözüm, ana bilgisayardaki ham sokete izin vermek için Linux Sistem Kapasitelerini ayarlamaktır.

Bu çok v sunucusuna özgü bir sorun olduğundan, çözüm şu adda tek satırlı bir dosya oluşturmaktır /etc/vservers/VMNAME/bcapabilities:

NET_RAW

ve VM'yi yeniden başlatın.


1
"Peki bunu nasıl başarıyorsunuz?" tam bir cevap olarak faydalı olacaktır.
ILMostro_7

4 yıl sonra, benim için kabul edilen cevabı değiştirdim, çünkü bu gerçekten soruyu cevaplıyor. Bu v-sunucusu sorunudur ve ping yürütülebilir dosyasının dosya modu ile ilgisi yoktur.
rexkogitans

1

Üzgünüm yorum yapamam. Bu sorun, minimal bir kurulumda çalışan bir sistem arşivini çıkardıktan sonra beni vurdu.

Yukarıdaki tüm cevaplar işe yarar. Ancak @ Nabil Bourenane ve @Linx tarafından önerilen güvenlik için tercih edilir. @ Rexkogitans'ın yorumuna cevap vermek için burada iputils-ping.postinst (/ var / lib / dpkg / info / ...)

if command -v setcap > /dev/null; then
    if setcap cap_net_raw+ep /bin/ping; then
        chmod u-s /bin/ping
    else
        echo "Setcap failed on /bin/ping, falling back to setuid" >&2
        chmod u+s /bin/ping
    fi
else
    echo "Setcap is not installed, falling back to setuid" >&2
    chmod u+s /bin/ping
fi

Bu temelde iputils-ping yapılandırırken, önce setcap'ı deneyin, ardından başarısız olursa chmod u + s kullanın. Bu yüzden iputils-ping'i yeniden yüklemek işe yarar.


1
Bu işe yarayacak: setcap cap_net_raw + ep / bin / ping
rlf

Bu benim yorumum değil, kendi soruma cevabımdı. Sorun kaptan çözülemez, bu nedenle yükleme sonrası kancası ne yaparsa yapsın anlamsızdır.
rexkogitans

Gerçekten setcap cap_net_raw+p $(which ping)de kök onu düzeltirken. Bu blog yazısında kapsamlı bir açıklama var: Linux Yetenekleri ve Ping
mivk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.