डॉकर नेटवर्किंग अक्षम: चेतावनी: IPv4 अग्रेषण अक्षम है। नेटवर्किंग नहीं चलेगी


106

एक होस्ट "कंटेनर" में कंटेनर बाहरी दुनिया के कंटेनरों से कनेक्शन खो देता है। हालाँकि, कुछ मेजबानों को ताज़ा किया गया था और अचानक हमें निम्नलिखित स्थिति मिली:

  1. मेजबान अन्य मेजबानों के साथ संवाद कर सकता है।
  2. होस्ट में चल रहे कंटेनर अन्य होस्ट के साथ संवाद नहीं कर सकते हैं।

यहाँ एक उदाहरण है:

[root@pprdespap322 deploy]# ping ci.docker.company.net
PING pprdespap324.corp.company.net (10.137.55.22) 56(84) bytes of data.
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=1 ttl=64 time=0.282 ms
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=2 ttl=64 time=0.341 ms
^C
--- pprdespap324.corp.company.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.282/0.311/0.341/0.034 ms

अब कंटेनर से, हम एक ही मेजबान को पिंग नहीं कर सकते हैं:

[root@pprdespap322 deploy]# docker run -ti quay.io/coreos/registry ping ci.docker.company.net
WARNING: IPv4 forwarding is disabled. Networking will not work.
ping: unknown host ci.docker.company.net

पहली बार मैंने देखा कि यह चेतावनी डॉकर के शुरुआती संस्करणों में थी ... डॉकर 1.9.1 और 1.10.3 के साथ, इस समस्या को कैसे हल किया जाए?

जवाबों:


180

मैंने http://chrisgilmerproj.github.io/ubuntu/network/docker/2013/09/05/ipv4-forwarding-and-docker.html की समीक्षा की और इससे मुझे होस्ट पर समस्या हल करने में मदद मिली।

मैंने निम्नलिखित को /etc/sysctl.conf में जोड़ा :

net.ipv4.ip_forward=1

मैंने तब नेटवर्क सेवा को फिर से शुरू किया और सेटिंग को मान्य किया:

[root@pprdespap322 deploy]#  systemctl restart network
[root@pprdespap322 deploy]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
[root@pprdespap322 deploy]# docker run -ti quay.io/coreos/registry ping ci.docker.company.net
PING pprdespap324.corp.company.net (10.137.55.22) 56(84) bytes of data.
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=1 ttl=63 time=0.329 ms
64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=2 ttl=63 time=0.306 ms
^C
--- pprdespap324.corp.company.net ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.306/0.317/0.329/0.021 ms

सभी कंटेनर अब बाहरी दुनिया के कंटेनरों के साथ संवाद कर सकते हैं!


15
उबंटू पर मुझे sudo sysctl -pसेटिंग्स को फिर से लोड करने की आवश्यकता थी (सिस्टमक्टेल नहीं मिला)।
नाचो कोलोमा

2
सेंटोस 7 पर इस समाधान की आवश्यकता थी जब बस मेजबान (परीक्षण के लिए) से कंटेनर तक पहुंचने की कोशिश कर रहा था।
डेव सी

मैं विंडोज होस्ट (हाइपर- V पर) पर चलने वाले कंटेनरों में समान हूं। क्या विंडोज के लिए कहीं ऐसी ही सेटिंग है?
एंथनी मस्तरीन

4
लेकिन इसकी आवश्यकता क्यों है? नेटवर्क बिना
फॉरवर्ड

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

28

डॉकर सेवा को पुनः आरंभ करने का प्रयास करें।

उदाहरण के लिए Ubuntu:

$ sudo systemctl restart docker


5
CentOS7 पर यह समस्या अचानक दिखाई दी और बस docker सेवा को पुनः आरंभ करने से पूरी तरह से काम किया।
स्टीवन87वेट

1
यह काम किया, मुझे परेशान करता है कि मुझे नहीं पता कि यह क्यों काम किया। किसी के पास कोई सुराग है? या विफलता को दोहराने के लिए कम से कम कदम?
योशिय्याह

प्रजनन? डॉकर को अपग्रेड करने और रिबूट करने के बाद यह यहां हुआ। (Oracle लिनक्स सर्वर पर 7.8 कर्नेल के साथ रिलीज़: - 3.10.0-1127.el7.x86_64 # 1 SMP Wed Apr 1 10:20:09 PDT 2020 x86_64 x86_64 x86_64 GNU / Linux - अपग्रेड डॉकर को: docker-ce-3: 19.03.8-3.el7.x86_64 यम रेपो के माध्यम से: @ docker-ol7-prod)
जोहान्सबेल

1
यह काम करता है, धन्यवाद! लेकिन किसी को पता है कि इसने काम कैसे किया?
c0degeas

17

इसे ठीक करने के लिए कमांड --network=hostके साथ जोड़ने का प्रयास docker runकरें।

https://medium.com/@gchandra/docker-ipv4-forwarding-is-disabled-8499ce59231e


2
रन पर एकल कंटेनर के लिए उपयोगी है। पैरामीटर है--net=host
Max13

1
अब इस दृष्टिकोण के साथ समस्या यह है कि अगर आपके पास समानांतर में कई कंटेनर चल रहे हैं, जैसे जेनकिंस, बंदरगाहों को साझा किया जाता है और आप अपने साझा बंदरगाहों पर मुद्दों को मारने का जोखिम उठाते हैं। विशिष्ट होने के लिए हम सरू के साथ e2e परीक्षण चला रहे हैं और हमें Xvfb के साथ ऐसे मुद्दे मिल रहे हैं जो नए उदाहरणों को नहीं दिखा पा रहे हैं क्योंकि पोर्ट पहले ही ले लिए गए हैं।
एलेक्स राशकोव

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