फायरवॉल्ड के साथ डॉकर का उपयोग करना

टीएल;डॉ सब कुछ बहाना करने की कोशिश कर रहा है Docker साथ में firewalld मैन्युअल रूप से ।

मैंने अभी उपयोग करना शुरू किया है firewalld मेरी डेबियन 10 मशीन पर क्योंकि मैं सीखना चाहता हूं कि यह कैसे काम करता है ।

मेरे पास है Docker होस्ट पर स्थापित और मैं अपने आप से फ़ायरवॉल का प्रबंधन करना चाहता हूं कि डॉकर क्या करता है, क्या नियम आदि के बारे में अधिक जानने के लिए । यह तब लागू होता है जब कंटेनर बनाए जाते हैं और फायरवॉल्ड कैसे काम करता है ।

चूंकि डेबियन 10 उपयोग करता है nftables डिफ़ॉल्ट रूप से और किसी प्रकार का उपयोग करें iptables उपयोग करने में सक्षम रैपर iptables फ़ायरवॉल नियम बनाने के लिए आदेश । Docker बस ठीक चलाता है जब --iptables सक्षम है ।

हालांकि मैं उपयोग करना चाहता हूं firewalld साथ में nftables बैकएंड और सब कुछ छोड़ दें जो इसके साथ करना है iptables चूंकि यह सिर्फ भ्रमित करने वाला है । तो में /etc/systemd/system/multi-user.target.wants/docker.service मैंने जोड़ा --iptables=false तो डॉकर फ़ायरवॉल के साथ गड़बड़ नहीं करता है । मैंने सभी आईपीटीबल्स नियमों आदि को फ्लश कर दिया । और अब तक सब अच्छा है ।

अब मेरी समस्या के लिए ।

सभी कंटेनर होस्ट और एक दूसरे तक पहुंच सकते हैं लेकिन इंटरनेट नहीं । चूंकि वे सभी 172.17.0.0/16 पर चल रहे हैं और मेरा होस्ट 192.168.9.0/24 पर है, इसलिए मुझे कंटेनरों से ट्रैफ़िक को बहाना होगा ।

मुझे डॉकर का उपयोग करते समय मैन्युअल रूप से फ़ायरवॉल के प्रबंधन के बारे में अधिक जानकारी नहीं मिल रही है और चूंकि मैं फायरवॉल्ड के लिए नया हूं, इसलिए मैं सिर्फ अनुमान लगा रहा हूं ।

मेरे इंटरफेस इस प्रकार हैं:

eno1 (main interface)docker0 (docker bridge)veth******* (one for each container)

सभी veth इंटरफेस में हैं docker0 पुल।

इसलिए मैंने सोचा कि मैं एक नया क्षेत्र बना सकता हूं जिसे कहा जाता है docker और से सब कुछ बहाना docker0 पुल।

~# firewall-cmd --permanent --new-zone=docker~# firewall-cmd --permanent --zone=docker --change-interface=docker0~# firewall-cmd --permanent --zone=docker --add-rich-rule='rule family="ipv4" source address=172.17.0.0/16 masquerade'~# firewall-cmd --reload

सक्रिय क्षेत्रों को सूचीबद्ध करने से मुझे यह मिलता है:

~# firewall-cmd --get-active-zonesdocker  interfaces: docker0public  interfaces: eno1

मैं अभी भी कंटेनरों से इंटरनेट का उपयोग नहीं कर सकता । मुझे नहीं पता कि यह जाने का सही तरीका है या मुझे क्या याद आ रहा है । किसी भी मदद की सराहना की है ।

फायरवॉल्ड में, मास्कराइडिंग को उस क्षेत्र पर सेट करने की आवश्यकता होती है जो इंटरनेट की ओर जाता है । आपके मामले में, यह लगता है public जोन।