CentOS 7 iptables yeniden başlatıldıktan sonra kalıcı değil


11

Bazı linux misafirlerini kvm / qemu ile sanallaştırmak için geliştirme sunucusuna en az CentOS 7 sürümünü yükledim.

firewalldBen yüklemek iptables-serviceve yapmak yerine iptables kullanmak için:

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

SELinux düzenleme ile devre dışı bırakıldı /etc/sysconfig/selinux.

Iptables için kurallarım şunlardır:

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

Şimdi ayarlarımı aşağıdaki komutla kaydediyorum:

iptables-save > /etc/sysconfig/iptables

Benim iptables-filegörünüyor:

# 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

Kurallarımın şimdilik doğru olup olmadığını hızlıca kontrol edin:

[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 

Ancak sunucuyu yeniden başlattıktan sonra iptables kuralları şöyle görünür:

[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

Diğer kuralların nereden geldiğini anlamıyorum.

Arama yaparken iptables-restore -c /etc/sysconfig/iptablesbeklenen kurallar görüntülenir.

Kaydedilen kuralların önyükleme zamanında yüklenmediği veya "varsayılan" kuralların temizlenmediği veya herhangi bir şekilde olmadığı anlaşılıyor.

Burada sorun ne ??? Yavaşça gri tüyler alıyorum ...


Hızlı yanıtlarınız için teşekkürler :)

Yukarıda belirtildiği gibi iptables-services benim tarafımdan kuruldu:

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

Aynı hizmet dosyası bağlı olduğu için hizmetin systemctl enable iptables.servicekullanmak yerine etkinleştirilmesinin systemctl enable iptableshiç bir önemi yoktur:

[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'

Bu, aradıktan sonra iptables dosyasının içeriğidir /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 -LKaydedilmiş kurallarımı göstermemek için bir çağrıyı yeniden başlattıktan sonra :

[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

Belki de temelden yanlış bir şey yapıyorum. Ama okuduğum her iş parçacığı aynı şekilde yapar ve çalışması gerekir.

Daha fazla bilgiye ihtiyacınız varsa lütfen bana bildirin.

Bu arada, her yeniden başlatmadan sonra aramam gereken küçük bir komut dosyası çağırarak bana yardımcı oldum.

#!/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

Bu seksi değil ama şimdiye kadar çalışıyor. Ancak nihai çözüm olamazdı.


Firosalld'i CentOS7 olarak kontrol ettiniz mi? İlgili bağlantı: serverfault.com/questions/626521/… Umarım konu dışında değilim. Ayrıca bu cevabı kontrol edin stackoverflow.com/a/24827438/2522966 Eğer firewalld hizmetini durdurmak ve maskelemek için söylüyor ( service stop|mask firewalld)
Nico

Yanıtlar:


13

hizmet ile etkinleştirmeniz gerektiğini düşünüyorum:

systemctl enable iptables.service

ve kurallarınızı kaydetmek için iptables init betiğini çalıştırmanız gerekir:

/usr/libexec/iptables/iptables.init save


3

İptables-services paketinin kurulu olduğundan emin olun:

rpm -aq iptables-services

Yüklemiyorsanız:

yum install iptables-services

Ardından, hizmet komutunu CentOS'un önceki sürümlerinde olduğu gibi denetlemek için kullanabilirsiniz:

service iptables save

save, stop, start, restartKomutlar bütün iş ve önyükleme üzerinde yük gerektiğini olacaktır.


iptables komutu var. ancak "rpm -aq iptables-services" hiçbir şey vermez. Bu ne anlama geliyor?
Saad Masood

rpm -aqtek başına bir sisteme yüklenen tüm paketleri ve sürümlerini listeler. rpm -aq <package>yüklüyse, tanımlanan paket hakkındaki bilgileri yazdırır. Eğer rpm -aq iptables-services araç 'iptables hizmetlerin paket yüklü olmadığını döndürür hiçbir şey.
Gene

CentOS 7 ve AWS'ye özgü bir sorunuz varsa, ilgisiz bir cevaba yorum yapmamak için tamamen yeni bir soru göndermelisiniz. Amazon'un depolarında hangi paketleri sakladığı hakkında hiçbir fikrim yok, ancak iptables-servicesstandart temel CentOS 7 deposunda mevcut olduğunu söyleyebilirim .
Gene

1

Altına /etc/rc.d/rc.local ekli 'service iptables stop \ iptables --flush' komutu ekleyerek bu sorunu çözdüm

Benim ortamım Centos 7 KVM idi ve benim sorunum libvirt sanal makineleri benim önleme erişimi engelleme iptables yeniden dolduracaktı.


0

Sanallaştırma hizmetlerinden birini doğru bir şekilde hatırlıyorsam (ve virbr0 arabirim adından yola çıkarak bir tane çalıştırıyor gibi görünüyorsanız), yapılandırılmış sanal ağlara ve arabirimlere uyum sağlamak için bazı güvenlik duvarı kuralları ekliyordu. Lütfen bu bölgeye bir göz atın (ve libvirt-daemonmuhtemelen iyi bir başlangıç ​​noktasıdır).

Bununla birlikte, kurallarınızın üzerine yazıldığı gerçeğinin bir hata veya özellik olup olmadığını bilmiyorum. RedHat firewalld, RHEL'deki güvenlik duvarı çözümü olarak oldukça odaklanmış gibi görünüyor (ve bu da doğrudan CentOS'a değişmiyor) ve sanallaştırma çözümlerinin firewalldalternatiflerle doğru çalışmasını desteklemeyebilir .


0

Bunu dene:

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 kurallarınızı şimdi burada yürütün

iptables-save > /etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables
systemctl restart iptables
systemctl restart iptables
systemctl enable iptables.service
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.