PING icmp відкрита розетка: Операція заборонена в vserver


14

Я запускаю середовище vserver з кількома віртуальними машинами. У одного VM є така проблема:

$ 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

Зауважте, що на хост-машині, як і на всіх інших хостингах VM, Ping працює чудово.

Хтось має ідею допомогти мені, будь ласка?


Чи /bin/pingвстановлено налаштування на інших машинах? Чи правильно налаштовано TCP / IP для цього віртуального комп'ютера? Чи працюють інші речі, такі як DNS, traceroute, HTTP?
Девід Шварц

2
Ви намагалися перевстановити iputils-ping?
Nabil Bourenane

Інша інформація може бути корисною: Це високопродуктивна машина, що працює під управлінням Apache з приблизно 5 - 7 доступами в секунду, тому немає уявлення про зміну конфігурації мережі. Він перейшов до нового обладнання вчора ввечері, і з того часу Мунін показує, що Ping не працює.
rexkogitans

Відповіді:


12

Версія TL; DR: перевстановлення iputils-ping

Я бачив в Інтернеті, де це було запропоновано використовувати

chmod u+s $( which ping );

Однак це дозволить користувачеві змінити попереднє завантаження та затоплення. Це може призвести до того, що ПОТРІБНИК зможе відмовитись у сервісі або локальної машини, або іншої машини, або вашої мережі

Я спробував те, що запропонував @ nabil-bourenane , перевстановивши iputils-pingяке вирішило проблему для мене і не встановлено біт SUID.

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

Якщо біт SUID встановлений, він виглядатиме так

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

Якщо ви вже користуєтеся коренем, кореневі бінарні файли SUID сильно не зміняться.
Falcon Momot

@FalconMomot, я додав рішення.
rexkogitans

Перевстановлення iputils (та ж версія до / після) працювало для мене на centos7. Раніше getcap / bin / ping не встановив можливості. Після повторної установки, getcap /bin/pingповернеться /bin/ping = cap_net_admin,cap_net_raw+p. Тепер питання: чому вона втратила можливості. rpm --verify iputilsпоказали, що ping, arping та timediff все показали, що налаштування шапки змінилися (до перевстановлення).
Хуан

У моєму випадку, можливо, втрачені можливості файлу після відновлення з дамп-зображення. Дивіться також unix.com/unix-for-advanced-and-expert-users/… . У цьому випадку вони використовували дьоготь. У моєму випадку я сподівався скинути / відновити збережені всі ці атрибути файлів (attrs, sposobnosti, acls тощо). Я здивований, що цього не сталося, тому мені доведеться побачити, чи зможу я його відтворити (а потім, можливо, зафіксувати помилку).
Хуан

1

Рішення полягає в тому, щоб встановити Linux System Capabilites таким чином, щоб дозволити необмежений сокет на хост-машині.

Оскільки це дуже специфічна проблема для v-сервера, рішення полягає в створенні односкладового файлу з назвою /etc/vservers/VMNAME/bcapabilities:

NET_RAW

та перезавантажте VM.


1
"І як ви це досягаєте?" було б корисно як повноцінна відповідь.
ILMostro_7

Через 4 роки я змінив прийняту відповідь на свою, тому що вона дійсно відповідає на запитання. Це проблема v-сервера і не має нічого спільного з режимом файлів виконуваного файлу ping.
rexkogitans

1

Вибачте, що не можу коментувати. Ця проблема вразила мене після того, як я витягнув архів робочої системи за мінімальну установку.

Усі вищезазначені відповіді працюють. Але той, запропонований @Nabil Bourenane та @Linx, є кращим для безпеки. Щоб відповісти на коментар @ rexkogitans, тут я цитую з 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

що в основному говорить при налаштуванні iputils-ping, спершу спробуйте setcap, потім, якщо це не вдасться, використовувати chmod u + s. Ось чому переустановка iputils-ping працює.


1
Так це спрацює: setcap cap_net_raw + ep / bin / ping
rlf

Це був не мій коментар, а моя відповідь на моє власне запитання. Проблему неможливо вирішити зсередини контейнера, тому все, що робити гачок після встановлення, безглуздо.
rexkogitans

Дійсно, setcap cap_net_raw+p $(which ping)як корень це виправляє. У цьому дописі на блозі є ґрунтовне пояснення: Linux Capability and Ping
mivk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.