-
Linux Network - iptables 사용법Linux/Network 2021. 12. 13. 14:53
network 관련 패키지인 iptables 사용법과 용어에 대해 정리해보겠습니다. 사용하면서 늘 헷갈렸었어욥 ㅜㅜ 옵션들이 많고 복잡한 테이블과 체인들...ㅎㅎ
테이블(Tables)
iptables에는 테이블이라는 광범위한 범주가 있고 이 테이블은 filter, nat, mangle, raw 같은 4개의 테이블로 구성됩니다. 이 중에서 우리에게 필요한 것은 패킷 필터링을 담당하는 filter 테이블입니다. 테이블을 명시하지 않으면 기본적으로 filter 입니다.
체인(Chain)
iptables에는 filter 테이블에 미리 정의된 세가지의 체인이 존재하는데 이는 INPUT, OUTPUT, FORWARD 이다. 이 체인들은 들어오는 패킷(INPUT)에 대하여 허용(ACCEPT)할 것인지, 거부(REJECT)할 것인지, 버릴(DROP)것인지를 결정한다.
- INPUT : 호스트 컴퓨터를 향한 모든 패킷이 방문하는 체인
- OUTPUT : 호스트 컴퓨터에서 발생하는 모든 패킷이 방문하는 체인
- FORWARD : 호스트 컴퓨터가 목적지가 아닌 모든 패킷이 방문하는 체인, 즉 타겟이 호스트가 아닌 호스트 컴퓨터를 경유하는 패킷이 방문하는 체인
타겟(Target)
target이란, 해당 table-chain에게 적용할 정책입니다. 기본 target은 다음과 같습니다.
- ACCEPT: 패킷이 해당 룰에 매치되면 해당 패키을 통과시킴, 패킷이 해다 스테이지에서 통과되면 다음 스테이지로 넘어감
- DROP: 패킷이 해당 rule에 매치되면 해당 패킷을 버림
- REJECT: 기본적으로 DROP과 같으나, 거절되었음을 응답하는 과정이 추가됨. 예를 들어 ping을 쏘는 ICMP 프로토콜의 경우 DROP은 무응답으로 timeout 되는 blackhole 상태지만, REJECT는 "port unreachable" 이라는 메시지를 mirror 해줌.
지금까지 용어에 대해 정리해보았고, 사용법이나 제가 실제 iptables를 사용하였던 예시를 들어보겠습니다.
* kubernetes 클러스터 구성 후, 서로 다른 노드에 떠 있는 pod 간의 통신이 되지 않는 이슈
- iptables -t filter -L FORWARD -vn (-t옵션: table 지정, -L옵션: list 출력, -vn옵션: 도메인을 주소로 변경) 결과값의 기본 정책이 DROP으로 세팅되어 있음.
- iptables -P FORWARD ACCEPT 명령어로 기본 정책을 ACCEPT로 변경.
- 그러자 서로 다른 노드에 떠 있는 파드간 통신이 정상적으로 이루어짐.
'Linux > Network' 카테고리의 다른 글
[Linux | Network] Network Trouble Shooting (0) 2021.06.22