web-dev-qa-db-ja.com

Centos 7はiptables設定を保存します

問題:サーバーの再起動後、iptablesがデフォルト設定にリセットされます。

私はこのようなルールを設定しようとしています:

iptables -I INPUT -p tcp --dport 3000 -j ACCEPT

その後私はします:

service iptables save

そしてそれはこのようなものを書き戻します

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

そしてこの後私は走っただけです(これは一度行われました):

chkconfig iptables on(再起動後に設定を復元するためにこれを行う必要があることを読みました)

その後、再起動して次のコマンドを実行します。

systemctl list-unit-files | grep iptables

iptables.serviceが有効になっているのを確認しましたが、(ポート3000を開く)ルールが機能しなくなりました。

これらの設定を保持するにはどうすればよいですか?

63
user1463822

CentOS 7は現在 FirewallD を使用しています!

例:

firewall-cmd --zone=public --add-port=3000/tcp --permanent

ルールの再読み込み:

firewall-cmd --reload
71
roothahn

次のコマンドでファイアウォールを無効にします。

systemctl disable firewalld

次に、次のコマンドでiptables-serviceをインストールします。

yum install iptables-services

次に、サービスとしてiptablesを有効にします。

systemctl enable iptables

次のコマンドでiptableルールを保存できます。

service iptables save
76
HosseinGBI

CentOS 7 Minimalでは、iptables-servicesパッケージのインストールが必要になる場合があります( @ RichieACCsuggestion に感謝します)。

Sudo yum install -y iptables-services

次に、systemdを使用してサービスを有効にします。

Sudo systemctl enable iptables.service

そして、initscriptを実行してファイアウォールルールを保存します。

Sudo /usr/libexec/iptables/iptables.init save
22
qris

たぶん、このようなスクリプトは誰にとっても役に立ちましたか?

firewalldが削除され、INPUTテーブルの現在のルールがフラッシュされるため、現在構成されているものはすべて失われることに注意してください

yum remove firewalld && yum install iptables-services

iptables --flush INPUT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv4 is OK
iptables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service iptables save       # Save IPv4 IPTABLES rules van memory naar disk
systemctl enable iptables   # To make sure the IPv4 rules are reloaded at system startup

あなたのシステムがIPv6トラフィックによって(今またはいつでも)到達する可能性がある場合に備えて、同じようにしたいと思います。

ip6tables --flush INPUT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT            # Any packages related to an existing connection are OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT   # ssh is OK
ip6tables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT   # Port 3000 for IPv6 is OK
ip6tables -A INPUT -j REJECT # any other traffic is not welcome - this should be the last line
service ip6tables save       # Save IPv6 IPTABLES rules van memory naar disk
systemctl enable ip6tables   # To make sure the IPv6 rules are reloaded at system startup
2
JohannesB
iptables-save

他のライブラリやサービスをインストールする必要なく現在の構成を保存します。

2
stormdrain

/ etc/sysconfig/iptablesファイルを直接変更できます。 iptablesサービスをリロードして、そのファイルからルールをリロードします。しかし、すでにおっしゃったように、firewalldはCentosの新しいデフォルトのファイアウォールシステムであり、これを使用する方法を学ぶ良い機会だと思いませんか。

1
stoned