CentOS 7 iptables रिबूट के बाद लगातार नहीं


11

मैंने kvm / qemu के साथ कुछ लिनक्स मेहमानों को वर्चुअलाइज करने के लिए एक डेवलपमेंट सर्वर पर एक न्यूनतम CentOS 7 संस्करण स्थापित किया।

firewalldमैं स्थापित करने iptables-serviceऔर करने के बजाय iptables का उपयोग करने के लिए:

systemctl stop firewalld
systemctl mask firewalld
systemctl enable iptables
systemctl start iptables

SELinux संपादन द्वारा अक्षम किया गया है /etc/sysconfig/selinux

Iptables के लिए मेरे नियम निम्नलिखित हैं:

iptables -Z
iptables -F
iptables -X
iptables -t nat -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -o enp6s0 -j MASQUERADE
iptables -A FORWARD -i enp6s0 -o virbr0 -j ACCEPT

अब मैं निम्नलिखित कमांड के साथ अपनी सेटिंग्स को बचाता हूं:

iptables-save > /etc/sysconfig/iptables

मेरा रूप iptables-file:

# Generated by iptables-save v1.4.21 on Thu Aug 20 10:46:40 2015
*mangle
:PREROUTING ACCEPT [16736:10889078]
:INPUT ACCEPT [1063:106860]
:FORWARD ACCEPT [15679:10784186]
:OUTPUT ACCEPT [570:71275]
:POSTROUTING ACCEPT [15728:10809742]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Thu Aug 20 10:46:40 2015
# Generated by iptables-save v1.4.21 on Thu Aug 20 10:46:40 2015
*filter
:INPUT ACCEPT [868:81772]
:FORWARD ACCEPT [8328:7311589]
:OUTPUT ACCEPT [233:32016]
-A FORWARD -i enp6s0 -o virbr0 -j ACCEPT
COMMIT
# Completed on Thu Aug 20 10:46:40 2015
# Generated by iptables-save v1.4.21 on Thu Aug 20 10:46:40 2015
*nat
:PREROUTING ACCEPT [1308:86998]
:INPUT ACCEPT [77:12475]
:OUTPUT ACCEPT [1:72]
:POSTROUTING ACCEPT [1228:74319]
-A POSTROUTING -o enp6s0 -j MASQUERADE
COMMIT
# Completed on Thu Aug 20 10:46:40 2015

यह देखने के लिए कि मेरे नियम अभी के लिए सही हैं या नहीं:

[root@dev1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

लेकिन सर्वर रिबूट करने के बाद iptables नियम इस तरह दिखता है:

[root@dev1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             10.0.1.0/24          ctstate RELATED,ESTABLISHED
ACCEPT     all  --  10.0.1.0/24          anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc

मुझे समझ में नहीं आता कि अन्य नियम कहां से आते हैं।

कॉल iptables-restore -c /etc/sysconfig/iptablesकरते समय अपेक्षित नियम प्रदर्शित होते हैं।

ऐसा लगता है कि सहेजे गए नियम बूट-टाइम पर लोड नहीं किए गए हैं या "डिफ़ॉल्ट" -rules फ्लश या जो भी नहीं हैं।

यहां क्या समस्या है ??? मुझे धीरे-धीरे भूरे बाल आ रहे हैं ...


आपकी त्वरित प्रतिक्रियाओं के लिए धन्यवाद :)

जैसा कि मेरे द्वारा iptables- सेवाओं के ऊपर उल्लेख किया गया था:

[root@dev1 ~]# rpm -aq iptables-services
iptables-services-1.4.21-13.el7.x86_64

सेवा systemctl enable iptables.serviceका उपयोग करने के बजाय सेवा को सक्षम करने से systemctl enable iptablesकोई फर्क नहीं पड़ता है क्योंकि एक ही सेवा फ़ाइल लिंक है:

[root@dev1 ~]# systemctl disable iptables
rm '/etc/systemd/system/basic.target.wants/iptables.service'
[root@dev1 ~]# systemctl enable iptables.service
ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants/iptables.service'

यह कॉल करने के बाद iptables फ़ाइल की सामग्री है /usr/libexec/iptables/iptables.init save

[root@develcluster1 ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Fri Aug 21 14:34:04 2015
*nat
:PREROUTING ACCEPT [351490:22546787]
:INPUT ACCEPT [15751:2400243]
:OUTPUT ACCEPT [324:21186]
:POSTROUTING ACCEPT [304860:18293418]
-A POSTROUTING -o enp6s0 -j MASQUERADE
COMMIT
# Completed on Fri Aug 21 14:34:04 2015
# Generated by iptables-save v1.4.21 on Fri Aug 21 14:34:04 2015
*filter
:INPUT ACCEPT [505048:69178501]
:FORWARD ACCEPT [55815086:22035726185]
:OUTPUT ACCEPT [325986:56595531]
-A FORWARD -i enp6s0 -o virbr0 -j ACCEPT
COMMIT
# Completed on Fri Aug 21 14:34:04 2015
# Generated by iptables-save v1.4.21 on Fri Aug 21 14:34:04 2015
*mangle
:PREROUTING ACCEPT [109215513:66867793592]
:INPUT ACCEPT [505243:69203589]
:FORWARD ACCEPT [108710264:66798590873]
:OUTPUT ACCEPT [326323:56634790]
:POSTROUTING ACCEPT [109036066:66855179944]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Fri Aug 21 14:34:04 2015

iptables -Lमेरे सहेजे गए नियमों को न दिखाने के लिए कॉल रिबूट करने के बाद :

[root@dev1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             10.0.1.0/24          ctstate RELATED,ESTABLISHED
ACCEPT     all  --  10.0.1.0/24          anywhere            
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootpc

शायद मैं कुछ मौलिक गलत कर रहा हूं। लेकिन मैं पढ़ा हर धागा इसी तरह से है और यह काम करना चाहिए।

अगर आपको अधिक जानकारी चाहिए तो कृपया मुझे बताएं

इस बीच, मैंने एक छोटी स्क्रिप्ट को कॉल करके मेरी मदद की जिसे मुझे प्रत्येक रिबूट के बाद कॉल करना चाहिए।

#!/bin/sh

iptables -Z
iptables -F
iptables -X
iptables -t nat -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -o enp6s0 -j MASQUERADE
iptables -A FORWARD -i enp6s0 -o virbr0 -j ACCEPT

iptables --flush
iptables-restore -c /etc/sysconfig/iptables

यह सेक्सी नहीं है, लेकिन अब तक काम करता है। लेकिन अंतिम समाधान नहीं हो सका।


क्या आपने फ़ायरवॉल की जाँच की है क्योंकि यह CentOS7 है? संबंधित लिंक: serverfault.com/questions/626521/… आशा है कि मैं विषय से बाहर नहीं हूं। भी इस जवाब की जाँच करें stackoverflow.com/a/24827438/2522966 है कि आप बंद करो और firewalld सेवा मुखौटा करने के लिए कह रहा है ( service stop|mask firewalld)
निको

जवाबों:


13

मुझे लगता है कि आपको सेवा को सक्षम करने की आवश्यकता है:

systemctl enable iptables.service

और आपको इस तरह से अपने नियमों को बचाने के लिए iptables init स्क्रिप्ट को चलाने की आवश्यकता है:

/usr/libexec/iptables/iptables.init save


3

सुनिश्चित करें कि आपके पास iptables-services पैकेज स्थापित है:

rpm -aq iptables-services

यदि यह स्थापित नहीं है:

yum install iptables-services

तब आप इसे नियंत्रित करने के लिए सर्विस कमांड का उपयोग कर सकते हैं, जैसे कि CentOS के पिछले संस्करणों के साथ:

service iptables save

save, stop, start, restartआदेश सभी काम करते हैं और यह बूट पर लोड करना चाहिए होगा।


मेरे पास iptables कमांड है। लेकिन `rpm -aq iptables-services` कुछ भी आउटपुट नहीं करता है। इसका क्या मतलब है?
साद मसूद

rpm -aqअपने आप सिस्टम और उनके संस्करण पर स्थापित सभी संकुल को सूचीबद्ध करेगा। rpm -aq <package>यदि यह स्थापित है, तो परिभाषित पैकेज के बारे में जानकारी प्रिंट करेगा। यदि rpm -aq iptables-services रिटर्न कुछ भी नहीं है जिसका अर्थ है कि 'iptables-services' पैकेज स्थापित नहीं है।
जीन

यदि आपके पास CentOS 7 और AWS के लिए एक विशिष्ट प्रश्न है, तो आपको एक पूरे नए प्रश्न को पोस्ट करना चाहिए, एक असंबंधित उत्तर पर टिप्पणी नहीं करनी चाहिए। मुझे नहीं पता कि अमेज़ॅन अपनी रिपॉजिटरी में क्या पैकेज रखता है, लेकिन मैं आपको बता सकता हूं कि iptables-servicesमानक, बेस सेंटोस 7 रिपॉजिटरी में उपलब्ध है।
जीन

1

मैंने 'iptables stop \ iptables --flush' कमांड को जोड़कर इसे लगभग प्राप्त कर लिया है, जो नीचे /etc/rc.d/rc.local से जुड़ी है

मेरा वातावरण Centos 7 KVM था और मेरा मुद्दा यह था कि libvirt रीबूट पर iptables को फिर से पॉप्युलेट करेगा - मेरी वर्चुअल मशीनों तक पहुँच को अवरुद्ध करता है।


0

यदि मुझे सही ढंग से याद है कि वर्चुअलाइजेशन सेवाओं में से एक (और आप एक को चलाने लगते हैं, virbr0 इंटरफ़ेस नाम से देखते हुए) कॉन्फ़िगर, वर्चुअल नेटवर्क और इंटरफेस को समायोजित करने के लिए कुछ फ़ायरवॉल नियम जोड़ रहे हैं। कृपया इस क्षेत्र में एक नज़र डालें (और libvirt-daemonयह एक अच्छा प्रारंभिक बिंदु है)।

हालांकि मुझे नहीं पता कि यह तथ्य कि यह आपके नियमों को अधिलेखित करने के लिए लगता है एक बग या एक विशेषता है। रेडहैट को आरएचईएल firewalldमें फ़ायरवॉल समाधान के रूप में बहुत ध्यान केंद्रित किया गया है (और यह सीधे CentOS के रूप में अच्छी तरह से अपरिवर्तित हो जाता है) और वे firewalldविकल्प के साथ अपने वर्चुअलाइजेशन समाधान के सही संचालन का समर्थन नहीं कर सकते हैं ।


0

इसे इस्तेमाल करे:

systemctl stop firewalld
systemctl disable firewalld
systemctl mask --now firewalld
yum -y remove iptables-services
yum -y install iptables-services
systemctl start iptables
systemctl status iptables

echo '# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT' > /etc/sysconfig/iptables

अब अपने iptables नियमों को निष्पादित करें

iptables-save > /etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables
systemctl restart iptables
systemctl restart iptables
systemctl enable iptables.service
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.