준비하고 있는 새로 설치한 홈서버에 문제가 생겼습니다. CentOS7을 설치했는데 포트 80과 443이 기본적으로 닫혀 있는 것을 발견했습니다. 그래서 다음 명령을 사용하여 iptables에 추가했습니다.
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save
존재하지 않는 iptable 서비스도 설치했습니다. 문제는 컴퓨터를 재부팅할 때마다 새 구성이 지워진다는 것입니다.
chkconfig에 iptable 서비스를 추가하려고 시도했지만 다음 오류가 발생했습니다.
[root@CentOS-7]# chkconfig --add iptables
error reading information on service iptables: No such file or directory
이 오류가 발생하는 이유는 /etc/init.d/에 iptable 스크립트가 없기 때문이라고 생각합니다. 그러나 실제로 올바른 일을 하고 있거나/또는 더 쉽고 안정적인 방법이 있다면 누구든지 스크립트를 가지고 계시나요? 이에? 그렇지 않다면 어떻게 이 문제를 해결할 수 있습니까? 결국 홈 서버를 웹/메일 서버로 사용해야 했는데...
나는 또한 flemingovirus가 제안한 대로 "systemctl 활성화 iptables" 명령을 사용해 보았지만 성공하지 못했습니다. 명령을 입력하면 다음과 같은 결과가 출력됩니다.
ln -s '/usr/lib/systemd/system/iptables.service' '/etc/systemd/system/basic.target.wants`/iptables.service'`
업데이트: iptables를 확인했는데 "service iptables save" 명령이 제대로 작동합니다. 이 문제는 재부팅 시 서비스가 시작되지 않기 때문에 발생하는 것 같습니다. /etc/rc.local에 다음 줄을 추가한 후 재부팅 시 서비스가 성공적으로 실행되었습니다.
systemctl start iptables.service
하지만 이 경우 "systemctl 활성화 iptables" 명령이 작동하지 않는 이유를 알고 싶습니다. 내가 뭐 놓친 거 없니? 감사해요
답변1
이 질문은 오래되었지만 동일한 문제에 직면하여 해결책을 찾았습니다.여기.
systemctl mask firewalld
systemctl stop firewalld
기본적으로 Firewalld는 iptables와 충돌하므로 iptables가 로드되지 않습니다.
# cat /usr/lib/systemd/system/firewalld.service
[Unit]
Description=firewalld - dynamic firewall daemon
Before=network.target
Before=libvirtd.service
Before=NetworkManager.service
Conflicts=iptables.service ip6tables.service ebtables.service
...
방화벽이 자동으로 시작되지 않고 다시 시작되지 않도록 차단하여 이 문제를 해결할 수 있었습니다. 물론 iptables가 활성화되어 있는지 확인해야 합니다.
systemctl enable iptables
답변2
초기화 스크립트가 사라졌습니다. 이제 systemctl
모든 CentOS7 문서에 있습니다. 부팅 시 ipatables를 chkconfig하거나 iptables 서비스를 시작하려면 다음 명령을 사용해야 합니다.
systemctl은 iptable을 활성화합니다.
Cyberciti 문서에서 systemctl에 대한 간단한 지식을 확인해야 합니다.iptables.
답변3
먼저 시도해 보면 #chkconfig --add /sbin/iptables
"iptables"가 인식됩니다. 그런 다음 iptables 구성을 위한 스크립트를 생성한 다음 부팅 시 해당 스크립트가 시작되도록 해야 합니다. 스크립트를 생성합니다:
#!/bin/bash
#
iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/service iptables save
그리고 이름을 지어주세요 myfirewall
. 실행 가능하게 만들고 부팅 시 스크립트를 시작 하도록 chmod +x myfirewall
작성합니다 ../myfirewall
/etc/rc.local