문제 : 서버가 재부팅 된 후 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에서 당신은 설치해야 할 iptables-services
패키지를 (덕분에 @RichieACC 에 대한 제안을 ) :
sudo yum install -y iptables-services
그런 다음 다음을 사용하여 서비스를 활성화하십시오 systemd
.
sudo systemctl enable iptables.service
그리고 initscript를 실행하여 방화벽 규칙을 저장하십시오.
sudo /usr/libexec/iptables/iptables.init save
답변
아마도 이런 스크립트가 누군가에게 도움이 되었습니까?
방화벽을 제거하고 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
답변
/ etc / sysconfig / iptables 파일을 직접 수정할 수 있습니다. iptables 서비스를 다시로드하여 해당 파일에서 규칙을 다시로드하십시오. 그러나 이미 언급했듯이 Centos의 새로운 기본 방화벽 시스템 인 방화벽은 이것이 사용 방법을 배울 수있는 좋은 기회라고 생각하지 않습니까?