問題:サーバーの再起動後、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を開く)ルールが機能しなくなりました。
これらの設定を保持するにはどうすればよいですか?
CentOS 7は現在 FirewallD を使用しています!
例:
firewall-cmd --zone=public --add-port=3000/tcp --permanent
ルールの再読み込み:
firewall-cmd --reload
次のコマンドでファイアウォールを無効にします。
systemctl disable firewalld
次に、次のコマンドでiptables-serviceをインストールします。
yum install iptables-services
次に、サービスとしてiptablesを有効にします。
systemctl enable iptables
次のコマンドでiptableルールを保存できます。
service iptables save
CentOS 7 Minimalでは、iptables-services
パッケージのインストールが必要になる場合があります( @ RichieACC を suggestion に感謝します)。
Sudo yum install -y iptables-services
次に、systemd
を使用してサービスを有効にします。
Sudo systemctl enable iptables.service
そして、initscriptを実行してファイアウォールルールを保存します。
Sudo /usr/libexec/iptables/iptables.init save
たぶん、このようなスクリプトは誰にとっても役に立ちましたか?
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
iptables-save
他のライブラリやサービスをインストールする必要なく現在の構成を保存します。
/ etc/sysconfig/iptablesファイルを直接変更できます。 iptablesサービスをリロードして、そのファイルからルールをリロードします。しかし、すでにおっしゃったように、firewalldはCentosの新しいデフォルトのファイアウォールシステムであり、これを使用する方法を学ぶ良い機会だと思いませんか。