क्या मैं इंटरफ़ेस के पते के बड़े (बड़े) ब्लॉक को बाँध सकता हूँ?


26

मुझे पता है कि आईपी उपकरण आपको एक इंटरफ़ेस से कई पते बाँधने देता है (जैसे, http://www.linuxplanet.com/linuxplanet/tutorials/6553/1/ )। अभी, हालाँकि, मैं IPv6 के शीर्ष पर कुछ बनाने की कोशिश कर रहा हूँ, और यह वास्तव में उपयोगी होगा कि पते का पूरा ब्लॉक (कहते हैं, (ए / 64) उपलब्ध है, ताकि कार्यक्रम सीमा से कोई भी पता उठा सकें। उसी से बांधो। कहने की जरूरत नहीं है, इस रेंज से प्रत्येक आईपी को एक इंटरफेस में संलग्न करने में थोड़ा समय लगेगा।

क्या लिनक्स एक इंटरफ़ेस के पते के एक पूरे ब्लॉक को बांधने का समर्थन करता है?


विभिन्न डिस्ट्रोस के पास इसे संभालने के विभिन्न तरीके हैं। एक चुनें।
इग्नासियो वाज़केज़-अब्राम्स

अभी उबंटू, लेकिन डिस्ट्रोस में काम करने वाले समाधानों को प्राथमिकता दी जाती है।
पी-स्टैटिक

यह ट्यूटोरियल एक ब्लॉक (/ 24) के भीतर एक एकल पते को बांधता है। / 24 यह निर्दिष्ट करता है कि यह किस ब्लॉक में है। इसे IPv6 के लिए पहचान के अनुसार काम करना चाहिए।
बिलचोर

क्रॉस-डिस्ट्रो एक स्क्रिप्ट लिखने के लिए होगा जो "आईपी एड्र ऐड" का उपयोग करता है। Red Hat, Ubuntu और SuSE की अलग-अलग नेटवर्किंग स्क्रिप्ट हैं ...
सीन रिफ़्शिनडर

1
@ChandraNakka क्या यह आपके लिए उपयोगी है?
कास्परड

जवाबों:


31

लिनक्स 2.6.37 और इसके बाद के संस्करण AnyIP नामक एक सुविधा के माध्यम से इसका समर्थन करता है । उदाहरण के लिए अगर मैं दौड़ता हूं

ip route add local 2001:db8::/32 dev lo

उबंटू 11.04 मशीन पर यह 2001 में किसी भी पते पर कनेक्शन स्वीकार करेगा: db8 :: / 32 नेटवर्क।


1
IPv4 के लिए कोई AnyIP समाधान है?
Coaku

क्या यह Ubuntu 14.04 पर काम करता है?
चंद्रा नक्का १३'१६ को

यह काम करने के लिए प्रकट होता है और मैं पते की श्रेणी को पिंग कर सकता हूं लेकिन जब मैं चलाता हूं ip route listया ip -6 route listजोड़ा मार्ग दिखाई नहीं देता है। आप एक AnyIP एड्रेस ब्लॉक को कैसे एनुमरेट करेंगे?
कॉल्टन

यह स्थानीय रूप से पतों के लिए काम करता है लेकिन मैं बाहरी स्रोतों से इन आईपी को पिंग या एक्सेस नहीं कर सकता। इसे ठीक करने का कोई तरीका? (मैं लो के साथ लो 0 की जगह लेने की कोशिश की, लेकिन फिर कुछ भी उपलब्ध नहीं है)
ब्रेनस्टोन

@BrainStone आपको उस के लिए ndppd स्थापित करने की आवश्यकता है, या अपने प्रदाता से उपसर्ग रूट किया गया है
आर्य

6

हां, लिनक्स नेटवर्क एड्रेस के एक ब्लॉक को नेटवर्क इंटरफेस में बाइंड करने का समर्थन करता है ... लेकिन केवल लूपबैक इंटरफेस पर। तो आप यह कर सकते हैं:

ip addr add 192.168.5.0/24 dev lo

और फिर ऐसा करें:

$ nmap -sP -oG - 192.168.5.0/24

# Nmap 5.21 scan initiated Tue Dec  7 11:38:28 2010 as: nmap -sP -oG - 192.168.5.0/24 
Host: 192.168.5.0 ()    Status: Up
Host: 192.168.5.1 ()    Status: Up
Host: 192.168.5.2 ()    Status: Up
[...]
Host: 192.168.5.254 ()  Status: Up
Host: 192.168.5.255 ()  Status: Up
# Nmap done at Tue Dec  7 11:38:46 2010 -- 256 IP addresses (256 hosts up) scanned in 0.11 seconds

IPv4 पतों के लिए उपयुक्त मार्गों के साथ यह वही करेगा जो आप चाहते हैं ... आपने IPv6 के बारे में पूछा है, और मुझे IPv6 के साथ कोई अनुभव नहीं है, लेकिन एक अच्छा मौका है कि यह उसी तरह काम करेगा।

मैंने मूल रूप से इस बारे में यहां पढ़ा है (लेख के नीचे की ओर)। ध्यान दें कि यह आलेख इस बात पर भी चर्चा करता है कि CentOS / Red Hat सुविधाओं का उपयोग करते हुए एक इंटरफ़ेस में स्पष्ट रूप से एक से अधिक पते कैसे दिए जा सकते हैं।


ठंडा! मैंने उबंटू (लुसिड एंड हार्डी) पर आईपीवी 6 के साथ बिना किसी भाग्य के यह कोशिश की। मुझे लगता है कि यह IPv6 के लिए एक हत्यारा सुविधा होगी - आप पते को डेटाबेस ऑब्जेक्ट कर सकते हैं या सत्र आईडी के रूप में पते का उपयोग कर सकते हैं।
गेराल्ड कॉम्ब्स

2
नहीं, आपको लो के लिए एक पता नहीं जोड़ना चाहिए। इसके बजाय, एक मार्ग जोड़ें ip -6 route add local <ip> dev lo:।
नवीन

2

तो मुझे यहाँ कुछ विकल्प दिखाई देते हैं:

  1. व्यक्तिगत रूप से इंटरफ़ेस में सभी पतों को बाँधने के लिए एक स्क्रिप्ट का उपयोग करें

  2. उस ब्लॉक को रूट करें जिसे आप अपनी मशीन के एकल पते पर चाहते हैं, और फिर उस मशीन ने पीक इंटरफेस का उपयोग करके उक्त ब्लॉक के लिए सभी ट्रैफ़िक को बाधित किया है (जैसे कि यह एक राउटर था) और इसे संभाल लें।

  3. आप एनएटी नियमों के साथ निर्णायक रूप से चालें खेल सकते हैं, फिर उस मशीन पर एक आंतरिक आईपी में एक मशीन को रूट किए गए Ips के एक ब्लॉक को फिर से लिखना ... लेकिन आप अभी भी एक आंतरिक आईपी प्रति आईपी के साथ समाप्त करेंगे जो आप वास्तव में भुगतान करना चाहते हैं। ध्यान, जो आपको समाधान 1 पर वापस जाता है।

अगर मैं तुम थे, तो मैं विकल्प 1 में छोटी स्क्रिप्ट लिखूंगा। या यहां से एक का उपयोग करें :

#!/bin/sh
if [ "$#" -ne "4" ]; then
        echo Usage:
        echo " $0 interface ip range netmask"
        echo " examples:"
        echo "  1) Assuming you want to bind the IP range 192.168.0.1..192.168.0.254 to eth0 with netmask 255.255.255.0:"
        echo "  $0 eth0 192.168.0. 1..254 255.255.255.0"
        echo "  2) Assuming you want to bind the IPv6 range 2001:41d0:1:5000::1-2001:41d0:1:5000::254 to eth0 with netmask /56"
        echo "  $0 eth0 2001:41d0:1:5000:: 1..254 56"
else
        echo "Attempting to assign the IP range $2($3) to interface $1 with netmask $4"
        for ip in $(eval echo "{$3}"); do ifconfig -v $1 add $2$ip netmask $4; done
fi

ऐसी स्क्रिप्ट का नाम कहां होगा?
कंकाल

2

जैसा कि अन्य लोगों ने कहा है, आप किसी पूरे सबनेट के लिए आने वाले पैकेटों को लोकलहोस्ट इंटरफेस पर रूट करने के लिए ओएनआईपी तंत्र का उपयोग कर सकते हैं, लेकिन ध्यान रखें कि आपको इस मशीन में वांछित पैकेट के सभी रूट करने के लिए अपना अपस्ट्रीम राउटर प्राप्त करना होगा। प्रथम स्थान। यह राउटर पर राउटिंग टेबल प्रविष्टियों के साथ या बीजीपी के माध्यम से बस किया जा सकता है। एआरपी वास्तव में उपयुक्त नहीं है कि आपकी मशीन को प्रत्येक आईपी के लिए व्यक्तिगत रूप से एआरपी करना होगा।


1

ऊपर वर्णित "Anyip" ने मेरे लिए सेंटो 7 पर काम नहीं किया। मुझे बूट पर ipv6 पतों को मैन्युअल रूप से बनाने के लिए एक स्क्रिप्ट बनानी पड़ी। ऐसा करने के लिए मैंने निम्नलिखित को / etc / crontab में जोड़ा है:

@reboot root /path/to/bashscript

यहाँ लगभग 3000 ipv6 पते बनाने के लिए बैश स्क्रिप्ट दी गई है:

#!/bin/bash
INETP="2a00:xxxx:xxxx:xxxx::"
PRE="64"
INTE="eth0"
IP1=/sbin/ip
echo -n "Adding IPv6 addresses..."
for i in {3..3000}
do
$IP1 -6 addr add ${INETP}$(printf '%x\n' $i)/${PRE} dev ${INTE}
done
echo "Done!"

यह विधि केवल तब तक काम करती है जब तक आप लगभग 4000 पतों पर नहीं पहुँचते। यदि आप इससे अधिक पतों को कॉन्फ़िगर करने का प्रयास करते हैं तो यह काम नहीं करेगा। ऐसे परिदृश्य हैं जहां एक एकल होस्ट करने के लिए संपूर्ण / 96 या / 64 असाइन करना वांछनीय है, ऐसा कोई तरीका नहीं है जिससे आपकी विधि उस पैमाने को मापेगी।
कास्परड

@kasperd जहाँ आप गेराल्ड कॉम्ब्स द्वारा तथाकथित "" वर्णित "सेंटिप 7 या डेबियन 8 पर काम करने में सक्षम हैं"?
निकोलस गुएरनेट

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