Soket terbuka icp PING: Operasi tidak diizinkan di vserver

14

Saya menjalankan lingkungan vserver dengan beberapa mesin virtual. VM tunggal memiliki masalah berikut:

$ 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

Perhatikan bahwa pada mesin host dan juga pada semua hostet VM lain di sana, Ping berfungsi dengan baik.

Adakah yang punya ide untuk membantu saya?

rexkogitans
sumber
Apakah /bin/pingset-uid di komputer lain? Apakah TCP / IP diatur dengan benar pada VM ini? Apakah hal lain berfungsi seperti DNS, traceroute, HTTP?
David Schwartz
2
Apakah Anda mencoba menginstal ulang iputils-ping?
Nabil Bourenane
Informasi lain mungkin berguna: Ini adalah mesin yang sangat produktif menjalankan Apache dengan sekitar 5 hingga 7 akses per detik - jadi tidak ada ide tentang memodifikasi konfigurasi jaringan. Itu telah pindah ke perangkat keras baru tadi malam, dan sejak itu, Munin menunjukkan bahwa Ping tidak berfungsi.
rexkogitans

Jawaban:

12

TL; Versi DR: instal ulang iputils-ping

Saya telah melihat online di mana ia disarankan untuk digunakan

chmod u+s $( which ping );

Namun ini akan memungkinkan pengguna untuk mengubah preload dan banjir. Yang dapat mengakibatkan PENGGUNA dapat Denial Of Service baik mesin lokal Anda atau mesin lain atau jaringan Anda.

Saya mencoba apa yang disarankan @ nabil-bourenane , menginstal ulang iputils-pingyang menyelesaikan masalah untuk saya dan tidak memiliki bit SUID.

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

Jika bit SUID diset maka akan terlihat seperti

username@server:~$ ls -l $( which ping );
-rwsr-xr-x 1 root root 44104 Nov  8  2014 /bin/ping
Linx
sumber
Jika Anda sudah melakukan root, biner root SUID tidak akan banyak berubah.
Falcon Momot
@ FalconMomot, saya menambahkan solusinya.
rexkogitans
1

Solusinya adalah mengatur Linux System Capabilites untuk memungkinkan soket mentah pada mesin host.

Karena ini adalah masalah khusus v-server, solusinya adalah membuat file single-lined bernama /etc/vservers/VMNAME/bcapabilities:

NET_RAW

dan reboot VM.

rexkogitans
sumber
1
"Dan bagaimana kamu mencapai ini?" akan bermanfaat sebagai jawaban lengkap.
ILMostro_7
Setelah 4 tahun, saya mengubah jawaban yang diterima untuk saya, karena itu BENAR-BENAR MENJAWAB PERTANYAAN. Ini adalah masalah v-server dan tidak ada hubungannya dengan mode file ping yang dapat dieksekusi.
rexkogitans
1

Maaf saya tidak bisa berkomentar. Masalah ini menimpa saya setelah saya mengekstrak arsip sistem kerja melalui instalasi minimal.

Semua jawaban di atas berfungsi. Tetapi yang diusulkan oleh @Nabil Bourenane dan @Linx lebih disukai untuk keamanan. Untuk menjawab komentar @ rexkogitans, di sini saya kutip dari 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

yang pada dasarnya mengatakan ketika mengkonfigurasi iputils-ping, pertama coba setcap kemudian jika gagal gunakan chmod u + s. Itu sebabnya menginstal ulang iputils-ping berfungsi.

rlf
sumber
1
Jadi ini akan berhasil: setcap cap_net_raw + ep / bin / ping
rlf
Itu bukan komentar saya, tetapi jawaban saya untuk pertanyaan saya sendiri. Masalahnya tidak dapat diselesaikan dari dalam wadah, jadi apa pun yang dilakukan kait penginstalan tidak ada gunanya.
rexkogitans
Memang, setcap cap_net_raw+p $(which ping)saat root memperbaikinya. Ada penjelasan menyeluruh pada posting blog ini: Kemampuan Linux dan Ping
mivk