PING icmp открывает сокет: Операция, не разрешенная в vserver

Я выполняю 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 hostet там, Ping хорошо работает.

У кого-либо есть какая-либо идея помочь мне?

14
задан 3 June 2015 в 12:37
3 ответа

Решение состоит в том, чтобы настроить возможности системы Linux, чтобы разрешить необработанный сокет на хост-машине.

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

NET_RAW

и перезагрузите виртуальную машину.

1
ответ дан 2 December 2019 в 21: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
11
ответ дан 2 December 2019 в 21:12

Извините, не могу прокомментировать. Эта проблема поразила меня после того, как я извлек архив рабочей системы за минимальную инсталляцию.

Все вышеприведенные ответы работают. Но то, что предлагают @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
ответ дан 2 December 2019 в 21:12

Теги

Похожие вопросы