dhclient unicast DHCPREQUEST अत्यधिक लॉग


4

मैं ४.२.५ के साथ सेंटोस I का उपयोग कर रहा हूं:

$ uname -a
Linux hostname 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

$ dhclient -V
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.

हाल ही में मैंने देखा कि लॉग में बहुत सारे निम्नलिखित रिकॉर्ड होते हैं:

Dec 14 10:12:32 hostname dhclient[4186]: DHCPREQUEST on enp5s0f0 to 10.23.0.4 port 67 (xid=0xe1a88f7)
Dec 14 10:12:49 hostname dhclient[4186]: DHCPREQUEST on enp5s0f0 to 10.23.0.4 port 67 (xid=0xe1a88f7)
Dec 14 10:13:09 hostname dhclient[4186]: DHCPREQUEST on enp5s0f0 to 10.23.0.4 port 67 (xid=0xe1a88f7)
Dec 14 10:13:23 hostname dhclient[4186]: DHCPREQUEST on enp5s0f0 to 10.23.0.4 port 67 (xid=0xe1a88f7)
Dec 14 10:13:41 hostname dhclient[4186]: DHCPREQUEST on enp5s0f0 to 10.23.0.4 port 67 (xid=0xe1a88f7)

यह डीएचसीपी सर्वर के कारण प्रतीत होता है जो यूनिकस्ट अनुरोधों की अनदेखी करता है। ऐसी समस्या वाले अन्य लोग हैं: https://forum.pfsense.org/index.php?topic=51701.0

मैंने पैकेट गंतव्य IP को 255.255.255.255 पर iptables के साथ बदलने की कोशिश की है:

sudo iptables -t nat -I OUTPUT 1 -d 10.23.0.4 -p udp --dport 67 -j DNAT --to-destination 255.255.255.255

लेकिन किसी कारण से नियम पैकेट से मेल नहीं खा रहा है dhclient। हालाँकि यह nc से पैकेट से मेल खा रहा है:echo 123 | nc -u 10.23.0.4 67

मुझे यह लिंक मिला है जहां कहा गया है कि dhclient एक अलग तरीके से काम करता है जो iptables द्वारा संसाधित नहीं किया जाता है:

For most operations, DHCP software interfaces to the Linux IP stack at
a level below Netfilter. Hence, Netfilter (and therefore Shorewall)
cannot be used effectively to police DHCP. The “dhcp� interface option
described in this article allows for Netfilter to stay out of DHCP's
way for those operations that can be controlled by Netfilter and
prevents unwanted logging of DHCP-related traffic by
Shorewall-generated Netfilter logging rules.

इसलिए मेरे पास कुछ सवाल हैं:

  • क्या यह सही है कि dhclient कुछ निचले स्तर के एपीआई का उपयोग करता है जो कि iptables द्वारा संसाधित नहीं किया जाता है?
  • क्या अनुत्तरित यूनिकास्ट अनुरोधों के लिए ढोलक से लॉग की मात्रा को कम करने का कोई तरीका है?

जवाबों:


4
  • क्या यह सही है कि dhclient कुछ निचले स्तर के एपीआई का उपयोग करता है जो कि iptables द्वारा संसाधित नहीं किया जाता है?

लघु संस्करण: हाँ, कुछ डीएचसीपी सर्वरों के लिए (isc-dhcp और dnsmasq के शुरुआती संस्करण), कुछ अन्य सर्वरों के लिए नहीं (बाद में dnsmasq के संस्करण)।

लंबा संस्करण: इस मामले की उत्पत्ति एक है raw socket। एक कच्चा सॉकेट , विकिपीडिया के अनुसार है,

... एक इंटरनेट सॉकेट जो किसी भी प्रोटोकॉल-विशिष्ट परिवहन परत प्रारूपण के बिना इंटरनेट प्रोटोकॉल पैकेट को सीधे भेजने और प्राप्त करने की अनुमति देता है।

यह आईएससी विकी पेज (इंटरनेट सिस्टम कंसोर्टियम सबसे आम डीएचसीपी कार्यक्रम का लेखक है) कहता है कि:

डीएचसीपी प्रोटोकॉल के पास वास्तव में ठीक से काम करने के लिए कुछ विशिष्ट आवश्यकताएं हैं - विशेष रूप से सभी प्रसारित प्रसारण पते (255.255.255.255) को भेजे गए पैकेटों को प्रेषित करने और प्राप्त करने में सक्षम होने के नाते, और एआरपी के बिना एक यूनास्ट भेजने में सक्षम होने के नाते। बीएसडी / यूडीपी सॉकेट्स के माध्यम से ऐसा करना संभव नहीं है, हालांकि dhcpd बीएसडी / यूडीपी सॉकेट (जिसे "फ़ॉलबैक इंटरफ़ेस" कहा जाता है) को भी खोलता है, जिसे आप नेटस्टैट में देखेंगे।

यह दिलचस्प है, क्योंकि यह बताता है कि आपको अक्सर क्यों मिलेगा, गोग्लिंग द्वारा, iptablesयूडीपी बंदरगाहों 67 और 68 के माध्यम से डीएचसीपी अनुरोधों को नियंत्रित करने की कोशिश कर रहे लोग । यह बिल्कुल नहीं है कि इन बंदरगाहों को नहीं खोला गया है, यह केवल यही है न केवल चैनल के माध्यम से जो सर्वर और क्लाइंट के बीच संचार होता है।

यह पूरी तरह से सफल नहीं हो सकता है: कुछ लोग अपनी मशीन को पूरी तरह से बंद करने के चरम पर चले गए हैं (iptables सब कुछ छोड़ देता है!), फिर भी वे कच्चे पैकेट के माध्यम से खुद को डीएचसीपी से बंद करने में असमर्थ थे)।

एक और दिलचस्प प्रयोग है, एक बार फिर iptablesसे किसी के पीसी को बंद करना, और फिर DNS के लिए एक कच्चे सॉकेट का उपयोग करना, या टीसीपी कनेक्शन के लिए: iptables के बावजूद, ये संचार प्रयास सफल होते हैं।

इस पर एक बहुत ही आधिकारिक टिप्पणी नेटफिल्टर साइट पर पाई जा सकती है , जहाँ यह कहा गया है:

कच्ची कुर्सियां ​​टीसीपी / आईपी स्टैक को बायपास करती हैं। नेटफिल्टर हुक, और परिणामस्वरूप iptables, आईपी स्टैक के अंदर बैठते हैं।

और यही बात पैकेट स्निफर पर भी लागू होती है।

यहां वे यह भी समझाते हैं कि समस्या को कैसे दरकिनार किया जाए: सावधान, यह एक मजाक है, स्फाफ बताता है

यह एक सप्ताहांत परियोजना नहीं है।

अंत में, मैं यह भी बताना चाहूंगा कि स्थिति dnsmasq के लिए अलग है : एक डेबियन विकी पृष्ठ में , dnsmasq के लेखक साइमन केली कहते हैं:

Dnsmasq एक कच्चा सॉकेट खोलता है लेकिन यह सॉकेट से डेटा कभी नहीं पढ़ता है: इसके बजाय इसका उपयोग डीएचसीपी ग्राहकों से बात करने के लिए किया जाता है जो अभी तक पूरी तरह से कॉन्फ़िगर नहीं किए गए हैं और एआरपी नहीं कर सकते हैं। यह कोई सुरक्षा समस्या नहीं है। Dnsmasq के बाद के संस्करण एक अलग तकनीक का उपयोग करते हैं, और अब एक कच्चा सॉकेट नहीं खुला है।

संपादित करें :

क्या अनुत्तरित यूनिकास्ट अनुरोधों के लिए ढोलक से लॉग की मात्रा को कम करने का कोई तरीका है?

यह तुच्छ क्योंकि उत्पादन से कम करने के लिए CLI विकल्प नहीं है, dhclient, -q से, CLI से लागू किया जा सकता है, लेकिन नहीं dhclient.conf । इसके अलावा, dhclientसीधे आपके नेटवर्क प्रबंधक द्वारा सामान्य रूप से नहीं, बल्कि एक निष्पादन योग्य द्वारा कहा जाता है ifup: वास्तव में,

# strings `(which ifup)` | grep dhclient
/sbin/dhclient
/sbin/dhclient3
dhclient -v -r -pf /run/dhclient.%iface%.pid -lf    /var/lib/dhcp/dhclient.%iface%.leases %iface%
dhclient3 -r -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp3/dhclient.%iface%.leases %iface%
dhclient -1 -v -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases %iface%  [[-e IF_METRIC=%metric%]]
dhclient3 -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp3/dhclient.%iface%.leases %iface%      [[-e IF_METRIC=%metric%]]
dhclient -6 -r -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface%
dhclient -1 -6 -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface%
dhclient -1 -6 -S -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases %iface%

जैसा कि आप देख सकते हैं, (= क्रिया!) विकल्प के साथ ifupआक्रमण करता है, जो आप चाहते हैं उसके विपरीत।dhclient-v

आपके पास क्या विकल्प हैं?

  • स्रोत कोड डाउनलोड करें, ऊपर दिए गए मंगलाचरण को संशोधित करें, और इसे अपने कर्नेल के लिए फिर से जोड़ें। यह एक चिंच होना चाहिए।

  • आप एक का उपयोग कर सकते द्विआधारी संपादक कन्वर्ट करने के लिए -vमें -q

  • आप के साथ मंगलाचरण को बदलकर, आप एक स्क्रिप्ट फ़ाइल को संशोधित कर सकते हैं/etc/init.d/networkingifup

    ifup .... > /dev/null 2>&1
    

    एक रिबूट, या networkingसेवा का पुनरारंभ , इस संशोधन को पूरा करेगा। यह आदर्श से कम है क्योंकि यह कचरा में बेकार चेतावनी और गंभीर त्रुटि संदेश दोनों को फेंक देता है ।

  • अंत में, आप निम्नलिखित हैक बाहर ले जाने के कर सकते हैं: इस कदम /sbin/dhclientके लिए /sbin/dhclient-trueहै, तो एक निष्पादन बुलाया फ़ाइल बनाने के /sbin/dhclientनिम्नलिखित सामग्री के साथ:

     #!/bin/bash
     ARGS=$(echo "$@" | sed 's/ -v / /g')
     exec /sbin/dhclient-true "-q" "$ARGS"
    

जोड़ा संस्करण जानकारी है, यह centos 7 dhclient 4.2.5 के साथ है
Misha नेस्तेरेंको

ओह, यह विंडोज़ सर्वर 2012 है, लेकिन मेरे पास इसे दुर्भाग्य से कॉन्फ़िगर करने के लिए एक्सेस नहीं है
misha nesterenko

0

डीएचसीपी है कि कैसे एक क्लाइंट को पहली बार में एक आईपी मिलता है, इसलिए यदि वह आईपी का इस्तेमाल करता है तो यह चिकन और अंडा होगा। इस प्रकार, यह मैक पते का उपयोग करके, L2 के नीचे एक स्तर पर संचालित होता है। इस प्रकार आईपी मार्ग अपने अस्तित्व से बेखबर है।

मैं इस समय PFSense का उपयोग नहीं करता हूं, इसलिए मैं आपके लिए विशेष रूप से इंगित करता हूं, लेकिन एक लॉग वर्बोसिटी सेटिंग होनी चाहिए, यदि आप इसे कम सेट करते हैं तो आपको केवल चेतावनी देखना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.