पिंग icmp ओपन सॉकेट: ऑपरेशन की अनुमति नहीं है


14

मैं कई वर्चुअल मशीनों के साथ एक vserver वातावरण चला रहा हूं। एक एकल वीएम में निम्नलिखित समस्या है:

$ 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

ध्यान दें कि मेजबान मशीन के साथ-साथ अन्य सभी वीएम होस्टेट पर, पिंग ठीक काम करता है।

किसी को भी मेरी मदद करने के लिए कोई विचार है, कृपया?


क्या /bin/pingअन्य मशीनों पर सेट-यूआईडी है? क्या इस वीएम पर टीसीपी / आईपी सही ढंग से स्थापित है? क्या अन्य चीजें जैसे डीएनएस, ट्रेसरआउट, एचटीटीपी काम करती हैं?
डेविड श्वार्ट्ज

2
क्या आपने iputils-ping को पुन: स्थापित करने का प्रयास किया?
नबील बोरनेन

एक और जानकारी उपयोगी हो सकती है: यह एक अत्यधिक उत्पादक मशीन है जो अपाचे को प्रति सेकंड 5 से 7 एक्सेस के साथ चला रही है - इसलिए नेटवर्क कॉन्फ़िगरेशन को संशोधित करने के बारे में कोई विचार नहीं है। यह कल रात एक नए हार्डवेयर में चला गया है, और तब से, मुनिन दिखाता है कि पिंग काम नहीं कर रहा है।
rexkogitans

जवाबों:


12

TL; DR संस्करण: पुनर्स्थापित करें iputils-ping

मैंने ऑनलाइन देखा है जहां इसका उपयोग करने का सुझाव दिया गया है

chmod u+s $( which ping );

हालांकि यह उपयोगकर्ता को प्रीलोड और बाढ़ को बदलने की अनुमति देगा। जिसके परिणामस्वरूप USER आपके स्थानीय मशीन या किसी अन्य मशीन या आपके नेटवर्क की सेवा से इनकार कर सकता है।

मैंने कोशिश की कि @ 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 रूट बायनेरिज़ बहुत अधिक नहीं बदलेगी।
फाल्कन मोमेंट

@FalconMomot, मैंने समाधान जोड़ा।
रेक्सकोगिटंस

IPutils को पुनर्स्थापित करना (इससे पहले / बाद में एक ही संस्करण) मेरे लिए सेंटोस 7 पर काम करता था। इससे पहले, getcap / bin / ping ने कोई क्षमताएं निर्धारित नहीं कीं। पुनः स्थापित करने के बाद, getcap /bin/pingवापस लौटे /bin/ping = cap_net_admin,cap_net_raw+p:। अब सवाल यह है कि यह क्षमताओं को क्यों खो दिया। rpm --verify iputilsक्या पता चला कि पिंग, आर्पिंग और क्लॉकडिफ़ सभी ने दिखाया कि कैप सेटिंग्स बदल गई थीं (पुनर्स्थापना से पहले)।
जुआन

मेरे मामले में, यह एक डंप छवि से बहाल करने के बाद फ़ाइल क्षमताओं को खो सकता है। यह भी देखें unix.com/unix-for-advanced-and-expert-users/… । उस मामले में, उन्होंने टार का इस्तेमाल किया। मेरे मामले में, मैं उम्मीद कर रहा था कि उन सभी फ़ाइल विशेषताओं (attrs, क्षमताओं, acls, आदि) को डंप / रिस्टोर किया जाए। मुझे आश्चर्य है कि ऐसा नहीं हुआ, इसलिए मुझे यह देखना होगा कि क्या मैं इसे पुन: उत्पन्न कर सकता हूं (और शायद एक बग लॉग कर सकता हूं)।
जुआन

1

मेजबान मशीन पर कच्चे सॉकेट की अनुमति देने के लिए लिनक्स सिस्टम कैपेबिलिटीज़ सेट करना समाधान है।

चूंकि यह एक बहुत ही वी-सर्वर विशिष्ट समस्या है, इसलिए समाधान एकल-लाइन वाली फ़ाइल बनाने के लिए है जिसका नाम है /etc/vservers/VMNAME/bcapabilities:

NET_RAW

और VM को रीबूट करें।


1
"और आप इसे कैसे पूरा करते हैं?" एक पूर्ण उत्तर के रूप में उपयोगी होगा।
ILMostro_7

4 साल बाद, मैंने स्वीकार किए गए उत्तर को बदल दिया, क्योंकि यह वास्तव में सवाल का जवाब देता है। यह वी-सर्वर की समस्या है और पिंग एक्जीक्यूटिव के फाइल मोड से इसका कोई लेना-देना नहीं है।
रेक्सकोगिटंस

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- पिंग को कॉन्फ़िगर करते समय कहता है, पहले सेट करने का प्रयास करें, यदि वह विफल रहता है तो chmod u + s का उपयोग करें। यही कारण है कि iputils- पिंग कार्यों को फिर से स्थापित करना।


1
तो यह काम करेगा: सेट cap_net_raw + ep / bin / ping
rlf

यह मेरी टिप्पणी नहीं थी, बल्कि मेरे अपने प्रश्न का उत्तर था। समस्या कंटेनर के भीतर से हल नहीं की जा सकती है, इसलिए जो भी पोस्ट इंस्टॉल हुक करता है वह व्यर्थ है।
rexkogitans

दरअसल, setcap cap_net_raw+p $(which ping)जैसे ही रूट इसे ठीक करता है। इस ब्लॉग पोस्ट पर पूरी तरह से स्पष्टीकरण है: लिनक्स क्षमताएं और पिंग
mivk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.