%EC%97%90%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다른 우분투 서버에 스크립트 가 있습니다 /etc/init.d/iptables start|stop|restart
(일반 쉘 스크립트).
각각의 새로운 서비스에 대해 포트를 열기 위해 줄을 편집하고 삽입해야 합니다. 이로 인해 서로 다른 시스템에서 init.d 스크립트의 다양한 버전이 생성됩니다.
에 모든 파일을 자동으로 포함시킬 수 있습니까 /etc/iptables/include.d/
?
목표는시작/etc/init.d/iptables의 기능은 다음과 같습니다.
include /etc/iptables/include.d/*
그리고 추가 파일 후에 /etc/iptables/include.d/
나는 간단히 말할 것입니다.
/etc/init.d/iptables restart
편집하다:Saurabh가 지적했듯이 명령에 특정 순서가 필요할 때 문제가 발생할 수 있습니다. 고급 설정에는 다음과 같은 다양한 디렉터리가 있을 수 있습니다.
/etc/iptables/include01.d/
/etc/iptables/include02.d/
/etc/iptables/include03.d/
다음과 같이 포함합니다.
/etc/iptables/include01.d/* 포함 ... 어쩌면 일부 코드가 여기 메인 파일에 있을 수도 있습니다... /etc/iptables/include02.d/* 포함 /etc/iptables/include03.d/* 포함
답변1
init.d 스크립트에 다음 줄을 추가하세요.
run-parts --report /etc/iptables/include.d
디렉토리의 모든 것을 쉘 스크립트로 실행합니다(실행 가능해야 함).
.port로 끝나는 파일만 실행하려면 다음과 같이 사용할 수 있습니다.
run-parts --regex '\.port$' /etc/iptables/include.d/
순서가 올바른지 확인하려면 파일 이름을 지정할 수 있습니다.
10_web.port
20_ssh.port
etc..
답변2
for f in /etc/iptables/include.d/*
. $f
done
점과 %f 사이의 공백을 메모하세요.
Saurabh의 말이 맞습니다. 의도한 대로 작업할 필요는 없지만 10-xxx, 20-yyy 등과 같은 명명 규칙을 사용하면 관리가 가능할 수 있습니다.
답변3
Bash에서 간단한 함수를 정의할 수 있습니다.
function include() {
for FILE in $( find "$1" -type f -print | sort )
do
source $FILE
done
}
그런 다음:
include some_dir/*
또는:
include some_dir/*.conf
답변4
iptables 구성에 파일을 포함할 수 없다고 생각합니다. 방화벽 규칙은 작성 순서에 따라 크게 달라지므로 선택하는 것이 합리적입니다. 폴더에 파일만 포함하면 iptables는 어떤 규칙을 먼저 넣을지 나중에 넣을지 알 수 없습니다.