iptables
시작 시 실행되는 여러 스크립트가 있고 모두 iptables -A ...
규칙 추가와 같은 작업을 실행한다고 가정해 보겠습니다 . 이 모든 쉘 스크립트를 iptables-save
.
하지만 이 모든 규칙 세트를 읽으려고 하면 제가 뭔가 잘못하고 있는 것 같습니다. 시작 시 실행 되는 스크립트 는 이러한 파일을 반복하고 iptables-restore
. 이는 일부 규칙(기본 체인에 저장됨)에는 작동하지만 다른 체인의 대부분의 규칙에는 작동하지 않습니다. 다음은 서로 새로 고치는 두 개의 규칙 세트의 예입니다(세트 a 읽기, 확인; 세트 b 읽기, 확인하지만 세트 a 사라짐).-n
--noflush
여러 iptables 규칙 세트를 어떻게 읽나요?
예:
$ cat fake1-a.rules
*nat
:PREROUTING ACCEPT [7:997]
:INPUT ACCEPT [7:997]
:OUTPUT ACCEPT [28:1810]
:POSTROUTING ACCEPT [28:1810]
COMMIT
*mangle
:PREROUTING ACCEPT [344:84621]
:INPUT ACCEPT [344:84621]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [296:37971]
:POSTROUTING ACCEPT [296:37971]
COMMIT
*filter
:INPUT ACCEPT [102:26513]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [89:10767]
:TESTCHAIN - [0:0]
-A TESTCHAIN -p tcp -m tcp --dport 12345 -j DROP
COMMIT
$ cat fake1-b.rules
*nat
:PREROUTING ACCEPT [7:997]
:INPUT ACCEPT [7:997]
:OUTPUT ACCEPT [28:1810]
:POSTROUTING ACCEPT [28:1810]
COMMIT
*mangle
:PREROUTING ACCEPT [344:84621]
:INPUT ACCEPT [344:84621]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [296:37971]
:POSTROUTING ACCEPT [296:37971]
COMMIT
*filter
:INPUT ACCEPT [102:26513]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [89:10767]
:TESTCHAIN - [0:0]
-A TESTCHAIN -p tcp -m tcp --dport 54321 -j DROP
COMMIT
# cat fake1-a.rules | iptables-restore --noflush
# iptables -nL | grep DROP
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:12345
# cat fake1-b.rules | iptables-restore --noflush
# iptables -nL | grep DROP
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:54321
답변1
--noflush
iptables-restore
옵션은 사용자 정의 체인에는 적용되지 않습니다 . 예를 들어 TESTCHAIN
내장 체인에만 적용됩니다. 가장 좋은 방법은 TESTCHAIN
모든 규칙을 하나의 파일로 결합하고 다음 iptables-restore
과 같은 모든 규칙을 사용하는 것입니다.
egrep -r "\sTESTCHAIN\s" firewall_rules_directory/*