Ifconfig केवल systemd-networkd के साथ कॉन्फ़िगर किए गए नेटवर्क इंटरफेस के पहले आईपी को क्यों दिखाता है?


3

इसलिए मुझे यकीन नहीं है कि यहां क्या हो रहा है, लेकिन मैंने उबंटू 17.04 (आज तक) पर कई अलग-अलग सर्वरों पर इस समस्या को दोहराया है, फिर भी मुझे इसकी कोई अन्य रिपोर्ट नहीं मिल रही है, इसलिए मुझे कल्पना करनी होगी कुछ गलत कर रहा है। मुझे अभी कुछ पता नहीं है।

संक्षेप में, मैं एक इंटरफ़ेस को कॉन्फ़िगर कर सकता हूं जिसमें systemd.networkdकई आईपी हो। वे ऐसा करके दिखाएंगे:

root@nuprobe:/etc/systemd/network# ip addr show dev mike-home
11: mike-home: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 4088 qdisc pfifo_fast state UP group default qlen 1000
    link/ether d8:eb:97:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet 10.12.1.2/24 brd 10.12.1.255 scope global mike-home
       valid_lft forever preferred_lft forever
    inet 10.12.1.3/24 brd 10.12.1.255 scope global secondary mike-home
       valid_lft forever preferred_lft forever

फिर भी अगर मैं एक ही चीज़ का उपयोग करते हुए क्वेरी करता हूं ifconfig, जबकि बाद के आईपी को सामान्य रूप से पेसो-नेटवर्क डिवाइस मिलेगा जिसका नाम mike-home:N(एन एक संख्या है), यह आउटपुट की संपूर्णता है:

root@nuprobe:/etc/systemd/network# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 4559  bytes 659801 (659.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4559  bytes 659801 (659.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

mike-home: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 4088
        inet 10.12.1.2  netmask 255.255.255.0  broadcast 10.12.1.255
        ether d8:eb:97:b6:0b:64  txqueuelen 1000  (Ethernet)
        RX packets 54202  bytes 67720330 (67.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 36690  bytes 4503051 (4.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

क्या चल रहा है के रूप में किसी भी विचार?

यहाँ मेरी systemd.networkफाइल है:

[Match]
Name=mike-home

[Link]
MACAddress=d8:eb:97:b6:0b:64
MTUBytes=4088
ARP=true

[Network]
BindCarrier=mike-home
Description=Mike Home Network
DHCP=no
IPv4LLRoute=no
MulticastDNS=no
LinkLocalAddressing=no
Domains=vasto.la

[Address]
Address=10.12.1.2/24
Broadcast=10.12.1.255
PreferredLifetime=forever

[Address]
Address=10.12.1.3/24
Broadcast=10.12.1.255
PreferredLifetime=forever

[Route]
Gateway=10.12.1.1
Source=10.12.1.0/24
PreferredSource=10.12.1.2
Destination=10.12.5.0/24
Scope=link

[Route]
Gateway=10.12.1.1
Source=10.12.1.0/24
PreferredSource=10.12.1.2
Destination=10.12.10.0/24
Scope=link

[Route]
Gateway=10.12.1.1
Source=10.12.1.0/24
PreferredSource=10.12.1.2
Destination=10.12.20.0/24
Scope=link

# vim: set filetype=systemd:

किसी भी अनुमान (से अधिक) का स्वागत है।


एक साइड नोट के रूप में: 1) प्रसारण को हमेशा नेटमास्क से गणना की जा सकती है, इसलिए इसे सेट करने में परेशान न करें जब तक कि आपके पास वास्तव में विशेष नेटवर्क न हो। 2) स्रोत आधारित रूटिंग ( Source=) केवल IPv6 के लिए लिनक्स पर लागू किया गया है। यदि आपको वास्तव में IPv4 के लिए इसकी आवश्यकता है, तो आपको उपयोग करना होगा ip rule। 3) परिभाषा के द्वारा एक प्रवेश द्वार के साथ मार्गों लिंक-दायरे वाले ... नहीं कर रहे हैं
grawity

अच्छी पकड़ (तों)। उन सभी फिक्स्ड (हटा दिया Source=, Scope=और Broadcast=), लेकिन शामिल करने की आवश्यकता हो सकती है Source=लेकिन अब मैं त्रुटि मिल रही है Could not set route. Network is unreachable.जब इंटरफ़ेस ऊपर आता है तीन बार। किसी भी विचार के कारण क्या होगा? मैं पिंग 10.12.1.1और एथलूल एक अच्छी लिंक की रिपोर्ट कर सकता हूं लेकिन मार्गों को जोड़ा नहीं जा रहा है।
माईकव

जवाबों:


1

लिनक्स में, जैसे "उर्फ" इंटरफेस eth0:0हैं पूरी तरह से वैकल्पिक। वे केवल IPv4 के लिए पुराने ioctl- आधारित "SIOCGIFADDR" API के साथ संगतता के लिए अनुकरण कर रहे हैं, जो अन्यथा प्रति इंटरफ़ेस नाम के कई पतों का समर्थन नहीं करता है - जो कि ifconfigइस दिन का उपयोग करता है।

इस बीच, उपकरण जो आधुनिक नेटलिंक इंटरफ़ेस का उपयोग करते हैं - जैसे कि - ipया तो पते की systemd-networkdएक सूची के साथ काम करते हैं, सभी एक ही मुख्य इंटरफ़ेस पर। यह भी संगत है कि IPv6 ने पहले दिन से किस तरह का व्यवहार किया है।

जब आप Netlink के माध्यम से IPv4 पते जोड़ते हैं, तो आप एक पता लेबल सेट कर सकते हैं जो अनुकरण को सक्रिय करता है और ifconfigउस पते को "उपनाम" इंटरफ़ेस के रूप में देखने की अनुमति देता है। Systemd-networkd में, कि हो सकता है Label=eth0:0के तहत [Address]

मेरी सिफारिश लिनक्स पर उपकरणों ifconfigऔर routeउपकरणों से बचने की है , क्योंकि वे अनिवार्य रूप से बीएसडी से केवल बचे हुए हैं जो कई, कई सालों से नए लिनक्स सुविधाओं के लिए अपडेट नहीं किए गए हैं।


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

इसके साथ काम करता है ip addr add। यह संभव है कि नेटवर्कड स्वतः eth0:उपसर्ग जोड़ता है , इसलिए Label=0इसके बजाय बस प्रयास करें । (मुझे लगता है कि यह डिफ़ॉल्ट रूप से नहीं किया गया है क्योंकि ioctl एपीआई IPv4-only है और कई अन्य तरीकों से सीमित है; यह व्यर्थ प्रयास होगा।)
प्रचंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.