विंडोज पर वैश्विक प्रसारण पता (255.255.255.255) व्यवहार को कैसे बदला जाए?


10

वांछित व्यवहार

जब कोई एप्लिकेशन वैश्विक प्रसारण आईपी पते पर एक पैकेट भेजता है 255.255.255.255, तो मैं चाहूंगा कि पैकेट को सभी वैश्विक ff:ff:ff:ff:ff:ffइंटरफेस पर ईथरनेट वैश्विक प्रसारण पते ( ) में भेजा जाए ।

लिनक्स और शायद अन्य OSes पर भी यह काम करने लगता है। विंडोज एक्सपी और विंडोज 7 इस बारे में अलग-अलग व्यवहार प्रदर्शित करते हैं, और न ही व्यवहार मेरी स्थिति के लिए वांछनीय है।

Windows XP व्यवहार

पैकेट को पहले नेटवर्क इंटरफ़ेस (इंटरफ़ेस ऑर्डर "नेटवर्क कनेक्शन / एडवांस्ड / एडवांस्ड सेटिंग्स") में निर्दिष्ट किया गया है। इसे अन्य इंटरफेस पर भी भेजा जाएगा।

अभी तक सब कुछ सही है। समस्या यह है कि अन्य इंटरफेस को भेजते समय, प्रसारण पैकेट का स्रोत पता पहले इंटरफ़ेस का आईपी पता है। उदाहरण के लिए, इस नेटवर्क कॉन्फ़िगरेशन की कल्पना करें (ऑर्डर महत्वपूर्ण है):

  • एडाप्टर 1: आईपी एड्रेस 192.168.0.1
  • एडाप्टर 2: आईपी एड्रेस 10.0.0.1
  • एडाप्टर 3: आईपी एड्रेस 172.17.0.1

अब अगर मैं एक प्रसारण पैकेट भेजता हूं, तो निम्नलिखित पैकेट भेजे जाएंगे (स्रोत और गंतव्य आईपी पते के साथ):

  • एडाप्टर 1 पर: 192.168.0.1=>255.255.255.255
  • एडाप्टर 2 पर: 192.168.0.1=>255.255.255.255
  • एडाप्टर 3 पर: 192.168.0.1=>255.255.255.255

    व्यवहार में, प्रसारण पैकेट का उपयोग करने वाले एप्लिकेशन एडॉप्टर 1 के अलावा किसी भी इंटरफेस पर काम नहीं करेंगे। मेरी राय में, यह विंडोज़ एक्सपी के टीसीपी / आईपी स्टैक में एक धुंधला बग है।

विंडोज 7 व्यवहार

नेटवर्क इंटरफ़ेस ऑर्डर को संशोधित करना विंडोज 7 पर कोई प्रभाव नहीं डालता है। इसके बजाय, आईपी मार्ग तालिका द्वारा प्रसारण को नियंत्रित किया जाता है।

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0   10.202.254.254       10.202.1.2    286
          0.0.0.0          0.0.0.0      192.168.0.1      192.168.0.3     10
       10.202.0.0      255.255.0.0         On-link        10.202.1.2    286
       10.202.1.2  255.255.255.255         On-link        10.202.1.2    286
   10.202.255.255  255.255.255.255         On-link        10.202.1.2    286
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
      192.168.0.0    255.255.255.0         On-link       192.168.0.3    266
      192.168.0.3  255.255.255.255         On-link       192.168.0.3    266
    192.168.0.255  255.255.255.255         On-link       192.168.0.3    266
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
        224.0.0.0        240.0.0.0         On-link       192.168.0.3    266
        224.0.0.0        240.0.0.0         On-link        10.202.1.2    286
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  255.255.255.255  255.255.255.255         On-link       192.168.0.3    266
  255.255.255.255  255.255.255.255         On-link        10.202.1.2    286
===========================================================================

255.255.255.255मार्ग देखें ? हां, वे प्रसारण पैकेट को नियंत्रित करते हैं। इस स्थिति में, प्रसारण पैकेटों को इसके माध्यम से भेजा जाएगा 192.168.0.3क्योंकि इसमें कम मीट्रिक है ... लेकिन अन्य इंटरफेस के लिए नहीं।

आप इंटरफ़ेस को बदल सकते हैं जिसके माध्यम से वैश्विक प्रसारण पैकेट बहुत आसानी से भेजे जाएंगे (बस 255.255.255.255कम मीट्रिक के साथ एक स्थायी मार्ग जोड़ें )। लेकिन आप कितनी भी कोशिश कर लें, प्रसारण पैकेट केवल एक ही इंटरफेस पर भेजा जाएगा , उन सभी को नहीं जैसे मैं यह करना चाहूंगा।

निष्कर्ष

  • विंडोज 7 केवल एक इंटरफेस में प्रसारण पैकेट भेजता है। आप चुन सकते हैं कि कौन सा है, लेकिन यहां बात नहीं है।
  • विंडोज एक्सपी सभी इंटरफेसों पर प्रसारण पैकेट भेजता है, लेकिन यह केवल उन्हें एक इंटरफ़ेस की अपेक्षा के अनुसार भेजता है, जो व्यवहार में विंडोज 7 व्यवहार के बराबर है।

लक्ष्य

मैं इस वैश्विक आईपी प्रसारण समर्थन को विंडोज में (अधिमानतः विंडोज 7) एक बार और सभी के लिए बदलना चाहता हूं। बेशक बेहतर तरीका यह होगा कि किसी प्रकार का समर्थित कॉन्फ़िगरेशन परिवर्तन (रजिस्ट्री हैक या समान) हो, लेकिन मैं सभी सुझावों के लिए तैयार हूं।

कोई विचार?


आप इन प्रसारणों को उत्पन्न करने के लिए क्या उपयोग कर रहे हैं। मैं अपने XP स्टैक को कुछ भी लेकिन निर्देशित प्रसारण करने के लिए नहीं मिल सकता। यानी 10.202.255.255 आपके मामले में।
स्कॉट लुंडबर्ग

क्या आप एक आरएफसी या अन्य दस्तावेज का संदर्भ दे सकते हैं जो आपके द्वारा वर्णित सही व्यवहार को इंगित करता है? जबकि मैं मानता हूं कि यह वांछित व्यवहार है, इसे सही व्यवहार कहना एक युक्ति का संदर्भ देना चाहिए जो सही को परिभाषित करता है। क्या यह हो सकता है कि विशिष्ट रूटिंग कार्यान्वयन प्रदाता (इस मामले में Microsoft) पर छोड़ दिया जाए?
जेसन आर। कोम्ब्स

स्कॉट लुंडबर्ग: कई एप्लिकेशन (विशेषकर गेम) वैश्विक प्रसारण भेजेंगे। आप netcat का उपयोग करके कुछ उत्पन्न कर सकते हैं: "nc -v -u 255.255.255.255 5000" उदाहरण के लिए।
एटिने डेकाम्प्स

जेसन आर। कोम्ब्स: वास्तव में, शायद मेरे पास शब्दों का एक खराब विकल्प था। मुझे "वांछनीय व्यवहार" का उपयोग करना चाहिए था। मुझे नहीं लगता कि इसके लिए कोई आरएफसी है, लेकिन मैं गलत हो सकता हूं।
एटिने डेकाॅम्प्स

क्या आप एक टीसीपी या यूडीपी पैकेट भेज रहे हैं? इसके अनुसार जो कि social.msdn.microsoft.com/Forums/en/peertopeer/thread/… मायने रखता है
निसान फैन

जवाबों:


6

ऐसा नहीं है कि मैं Microsoft का बचाव करने के व्यवसाय में हूं, लेकिन निम्नलिखित RFC के माध्यम से पढ़ने के बाद जो यह बताता है कि प्रसारण कैसे काम करता है, मुझे नहीं लगता कि Microsoft आवश्यक रूप से किसी RFC का उल्लंघन कर रहा है। IMO की समस्या को आवेदन स्तर (यानी निर्देशित प्रसारण, वैश्विक नहीं) पर तय किया जाना चाहिए जो रूटिंग टेबल में उपयुक्त मार्गों को हिट करेगा और केवल उस आईपी नेटवर्क के लिए सही इंटरफ़ेस से भेजा जाएगा।

वे दोनों कहते हैं कि प्रसारण के लिए कोई मानक निर्धारित नहीं है। 919 में यह भी उल्लेख किया गया है कि प्रसारण के लिए एक विशिष्ट भौतिक इंटरफ़ेस का चयन किया जाना चाहिए। प्रसारण के लिए एक बहु-स्तरीय, बहु-एनआईसी मशीन के मामले में, मुझे नहीं लगता कि यह स्पष्ट रूप से कहा गया है कि क्या होना चाहिए। ब्रॉडकास्टरों को कभी भी एक इंटरफेस से दूसरे इंटरफेस में नहीं जाना चाहिए, इसलिए विंडोज मशीन राउटर है या नहीं?
यदि यह एक राउटर के रूप में कार्य कर रहा है , तो उस नेटवर्क के लिए गलत आईपी पते के साथ प्रसारण का जवाब देने वाला कोई भी होस्ट (आपके उदाहरण में एडेप्टर 2 और 3) को एडेप्टर के जवाब में पैकेट को एडेप्टर 2 और 3 के ईथरनेट पते पर वापस भेजना चाहिए। 1 के आईपी पते और विंडोज होस्ट को इसे उचित इंटरफ़ेस पर ले जाना चाहिए।
यह भ्रामक लगता है ... लेकिन इस वाक्यांश के लिए एक बेहतर तरीका नहीं सोच सकता

और अंत में, RFC 919 विशेष रूप से RFC 919 से कहता है

चूंकि हम मानते हैं कि डेटा लिंक लेयर पर समस्या पहले ही हल हो चुकी है, एक आईपी होस्ट जो
या तो एक स्थानीय प्रसारण या एक निर्देशित प्रसारण भेजने की इच्छा रखता है, केवल
उचित गंतव्य पता निर्दिष्ट करें और
हमेशा की तरह डेटाग्राम भेजें । किसी भी परिष्कृत एल्गोरिदम को केवल गेटवे में निवास करने की आवश्यकता होती है।

पढ़ने से यह पता चलता है कि प्रसारण के लिए स्रोत आईपी पता अप्रासंगिक है।


चूंकि प्रत्येक एप्लिकेशन प्रसारण को अलग तरीके से संभालता है, इसलिए मुझे लगता है कि जहां जिम्मेदारी रहती है। उदाहरण के लिए। nbtstatमल्टी-एनआईसीड मशीनों पर निर्देशित प्रसारण भेजता है, जबकि खेल वैश्विक प्रसारण का उपयोग कर सकते हैं।
संक्षेप में, आवेदन को ठीक किया जाना चाहिए, न कि इस मामले में ओएस ...

EDIT: यहां समान परिस्थितियों के लिए एक लिंक है, लेकिन लिनक्स पर। लिनक्स कर्नेल केवल एक पैकेट को डिफ़ॉल्ट इंटरफ़ेस (इस उदाहरण में एनआईसी ए) भेजकर संभालता है। वे सलाह देते हैं कि आवेदन एनआईसी को एनुमरेट करें और प्रत्येक एनआईसी को एक निर्देशित प्रसारण भेजें । संपर्क


2
RFC 919 और स्रोत पते से उद्धृत अनुच्छेद के बीच के संबंध को न समझें। मुझे यह स्पष्ट प्रतीत होता है कि पैकेट के प्रसारण / यूनिकस्ट प्रकृति की परवाह किए बिना किसी अन्य इंटरफ़ेस के स्रोत पते के साथ एक इंटरफ़ेस पर आईपी पैकेट भेजना हमेशा गलत होता है। मेरा मतलब है, आप यथोचित नहीं कह सकते हैं "स्रोत आईपी पता एक प्रसारण के लिए अप्रासंगिक है", निश्चित रूप से यह है! अनुप्रयोगों को कैसे पता चलता है कि प्रसारण किसने भेजा है?
एटिने डेकाॅम्प्स

1
"इसमें 919 में यह भी उल्लेख है कि प्रसारण के लिए एक विशिष्ट भौतिक इंटरफ़ेस का चयन किया जाना चाहिए।" कहाँ पे? "पता 255.255.255.255 स्थानीय हार्डवेयर नेटवर्क पर प्रसारण को दर्शाता है" (RFC919 7.)? उस मामले में मैं सम्मानपूर्वक असहमत हूं। हम चर्चा कर रहे हैं कि नेटवर्क स्तर पर नहीं, मेजबान स्तर पर प्रसारण के साथ क्या करना है। इसके अलावा, यह नीचे कहा गया है कि एक मेजबान "255.255.255.255 का उपयोग करके अपने सभी निकटतम पड़ोसियों के लिए" प्रसारित कर सकता है। इसके सभी पड़ोसी। "एक विशिष्ट नेटवर्क इंटरफ़ेस पर सभी पड़ोसी नहीं"।
इटियेन डेक्मम्प्स

1
"एप्लिकेशन को परवाह नहीं है कि किस इंटरफ़ेस ने प्रसारण भेजा है। उन्हें बस इसका जवाब देने की आवश्यकता है।" हुह ... उन्हें प्रसारण भेजने की जरूरत है, न केवल उनका जवाब दें। LAN गेमर ब्राउजर के मामले पर विचार करें। यह नेटवर्क पर गेम सर्वर की खोज के लिए प्रसारण पैकेट भेजता है। यदि प्रसारण पैकेट सभी इंटरफेस को नहीं भेजे जाते हैं, तो गेमर्स ब्राउज़र इन इंटरफेस के माध्यम से पहुंच योग्य गेम सर्वर नहीं दिखाएगा। दूसरे शब्दों में, महाकाव्य विफल हो जाते हैं।
इटियेन डेक्म्प्स 16

1
"मुझे यकीन नहीं है, लेकिन मुझे लगता है कि ओएस 255.255.255.255 अनुरोध देख रहा है और कह रहा है कि इसे सभी इंटरफेस पर बाहर भेजने की जरूरत है (सभी तत्काल पड़ोसियों को खोजने के लिए), लेकिन यह एक विशिष्ट आवेदन से अनुरोध किया गया था, जो एक बाध्य है विशिष्ट आईपी (मीट्रिक के आधार पर डिफ़ॉल्ट हो सकता है)। " मैं सहमत हूँ। इसका मतलब यह नहीं है कि यह सही बात है। मेरी राय में यह पूरी तरह से आवेदन डेवलपर के दृष्टिकोण से कम से कम आश्चर्य के सिद्धांत का उल्लंघन करता है, जो सिर्फ पैकेट को सभी इंटरफेस पर सभी को भेजने की उम्मीद करता है।
इटियेन डेक्म्प्स

4
सुनिश्चित नहीं है कि आप नकल से क्या मतलब है। RFCs विशेष रूप से प्रसारण पैकेट को अग्रेषित करने से मना करते हैं। केवल एक पैकेट भेजा जाना चाहिए, जो मुझे लगता है कि हमारी चर्चा का पूरा हिस्सा है। यदि OS आप जैसा कहते हैं, उसे वास्तव में 9 कुल पैकेट (प्रत्येक इंटरफ़ेस के लिए 3) उत्पन्न करना होगा क्योंकि IP परत को अलग-अलग स्रोत IPs (लेयर 3 पर प्रत्येक एनआईसी के लिए एक) के साथ तीन पैकेट उत्पन्न करने होंगे और फिर प्रत्येक NIC को ईथरनेट (लेयर 2) पर भेजना होगा। यदि नेटवर्क के बीच मार्ग थे, तो आपको 3 प्रतिक्रियाएं मिलती हैं! कौनसा सही हैं?
स्कॉट लुंडबर्ग

4

अंत में, मैंने इसे प्रोग्रामिक रूप से हल किया। मैंने WinIPBroadcast नाम से एक बहुत छोटा सा सॉफ्टवेयर लिखा है जो प्रसारण इंटरफेस को सभी इंटरफेस में स्थानांतरित करने का ख्याल रखता है।

यह एक दिलचस्प तथ्य का उपयोग करके काम करता है: लूपबैक पते (127.0.0.1) पर सुनने पर स्थानीय रूप से उत्पन्न वैश्विक प्रसारण पैकेट प्राप्त करना संभव है। WinIPBroadcast RAW सॉकेट्स का उपयोग करके सभी प्रसारण के लिए स्थानीय पते पर सुनता है, फिर प्रत्येक प्रसारण पैकेट के लिए, यह पसंद किए गए को छोड़कर सभी इंटरफेस के लिए निर्भर करता है।


जैसा कि विंडोज़ स्टैक बीएसडी स्टैक का एक कांटा है, मुझे यह जानने के लिए उत्सुक होना चाहिए कि क्या बीएसडी एक ही व्यवहार प्रदर्शित करता है।
x0n

आपका सॉफ्टवेयर काम नहीं करता है। The program can't start becuase api-ms-win-core-rtlsupport-l1-2-0.dll is missing from your computer.। सौभाग्य है कि .dllगूगल पर मिल रहा है ।
एलेक्स जी।

@ एलेक्स: यह अजीब है, मुझे लगा कि मैंने उस समस्या को github.com/dechamps/WinIPBroadcast/commit/… के माध्यम से तय किया है । क्या आप वाकई अंतिम संस्करण (1.6) चला रहे हैं? बेझिझक github.com/dechamps/WinIPBroadcast/issues पर बग दर्ज करें और मैं देख लूंगा।
एटिने डेकाम्प्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.