"आईपी Addr परिवर्तन" और "आईपी Addr बदलें" आदेश को समझना


10

फिलहाल मेरे पास ethv इंटरफ़ेस से जुड़े IPv4 पते हैं :

T60:~ # ip -V
ip utility, iproute2-ss110629
T60:~ # ip addr show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:15:58:2a:84:3e brd ff:ff:ff:ff:ff:ff
    inet 10.11.12.2/24 scope global eth0
    inet 10.11.12.3/24 scope global secondary eth0
    inet 10.11.12.4/24 scope global secondary eth0
    inet6 fe80::215:58ff:fe2a:843e/64 scope link 
       valid_lft forever preferred_lft forever
T60:~ # 

मैं 10.11.12.3/24 पते को 10.11.12.6/24 पर बदलना या बदलना चाहूंगा। यह कैसे करना है? यदि मैं निष्पादित करता हूं ip addr change 10.11.12.6/24 dev eth0या ip addr replace 10.11.12.6/24 dev eth0फिर 10.11.12.6 को eth0 में जोड़ा जाता है। इसके अलावा, परिवर्तन / बदलने के मामले में, वाक्यविन्यास नहीं होना चाहिए change/replace from 10.11.12.3/24 to 10.11.12.6/24? मुझे पता है कि मैं ip addr delकमांड का उपयोग कर सकता हूं , लेकिन इसके साथ कैसे प्राप्त करें ip addr changeया ip addr replace?

जवाबों:


19

(मुझे पता है कि यह एक पुराना सवाल है, लेकिन Google ने मुझे यहां लाया क्योंकि मैं यह जानने की कोशिश कर रहा था कि क्या changeऔर replaceक्या और कैसे अलग हैं)।

मुझे विश्वास है कि दोनों replaceऔर changeकिसी मौजूदा पते को संशोधित करने के लिए उपयोग किया जाता है। विचार करें:

ip addr add 192.168.1.10/32 dev dummy0

यह मुझे मिलता है:

32: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 
    link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff
    inet 192.168.111.10/32 scope global dummy0
       valid_lft forever preferred_lft forever
    inet6 fe80::58ec:58ff:fe4f:d135/64 scope link 
       valid_lft forever preferred_lft forever

यदि मैं फिर से वही कमांड चलाता हूं, तो मुझे एक त्रुटि मिलती है:

# ip addr add 192.168.111.10/32 dev dummy0 
RTNETLINK answers: File exists

यदि मैं उस पते पर झंडे को संशोधित करना चाहता हूं, तो मैं changeया तो उपयोग कर सकता हूं या replace। यहां, मैं उस पते पर सेटिंग्स और सेटिंग्स ip addr changeको संशोधित करने का उपयोग करता हूं :preferred_lftvalid_lft

# ip addr change 192.168.111.10/32 dev dummy0  preferred_lft 300 valid_lft 300
# ip addr show dummy0
32: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default 
    link/ether 5a:ec:58:4f:d1:35 brd ff:ff:ff:ff:ff:ff
    inet 192.168.111.10/32 scope global dynamic dummy0
       valid_lft 298sec preferred_lft 298sec
    inet6 fe80::58ec:58ff:fe4f:d135/64 scope link 
       valid_lft forever preferred_lft forever

का व्यवहार ip addr replaceसमान है। वास्तव में, यदि आप कोड को देखते हैं, तो उनका परिणाम लगभग समान कार्यों में होता है:

    if (matches(*argv, "change") == 0 ||
            strcmp(*argv, "chg") == 0)
            return ipaddr_modify(RTM_NEWADDR, NLM_F_REPLACE, argc-1, argv+1);
    if (matches(*argv, "replace") == 0)
            return ipaddr_modify(RTM_NEWADDR, NLM_F_CREATE|NLM_F_REPLACE, argc-1, argv+1);

ऐसा लगता है कि यहां इरादा changeकेवल एक मौजूदा पते replaceको संशोधित करेगा , जबकि या तो एक मौजूदा पते को संशोधित करेगा या एक नया बना देगा यदि निर्दिष्ट पता मौजूद नहीं है। व्यवहार में, ऐसा लगता है जैसे दोनों changeऔर replaceपते को जोड़ देंगे यदि यह पहले से मौजूद नहीं है।

यदि आप वास्तव में एक नया पता जोड़ना चाहते हैं और एक पुराने को हटाना चाहते हैं, तो आपको दो चरणों में यह करना होगा, ip addr delइसके बाद ip addr add(या दूसरे तरीके से, निश्चित रूप से)।


इस उत्तर के लिए धन्यवाद। इसने मेरे उत्पादन वातावरण को एक टन डाउनटाइम बचाया (यदि केवल मैंने इसे पहले ही पाया था, तो मैं NO P0एस :( हो सकता था )
सैमवेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.