Linux
[Linux] IPTables 개념
하녕
2023. 9. 21. 13:46
반응형
해당 패키지는 필요한 테이블을 선택하여 각 규칙을 정할 수 있는데, 클라우드 시스템에서는 가장 많이 사용되는 테이블은 NAT 입니다.
- Iptables의 명령어 구조
- iptables [ -t 테이블 ] [ 액션 ] [ 체인 ] [ 매치 ] [ -j 타겟 ]
- ex
- ex 1) iptables -t nat -A PREROUTING -j DNAT -p tcp --dport 22222 --to-destination 172.27.0.208:22
- 해석
NAT 테이블을 사용하여 PREROUTING 정책을 추가한다(DNAT), 매치되는 22222포트를 사용하는 패킷은 DNAT로 처리하고 타겟은 172.27.0.208:22로 한다.
- 해석
- ex 2) iptables -t nat -A POSTROUTING -j SNAT -o eth0 -d 172.27.0.0/24 --to-source 172.27.0.162
- 해석
NAT 테이블을 사용하여 POSTROUTING 정책을 추가한다(SNAT), eth0 인터페이스로 나가는 172.27.0.0/24의 모든 ip 대역은 172.27.0.162의 주소로 변환된다.
- 해석
- ex 1) iptables -t nat -A PREROUTING -j DNAT -p tcp --dport 22222 --to-destination 172.27.0.208:22
- 테이블 : 사용할 테이블 기본은 filter
- filter : 방화벽
- nat : 주소 변환
- mangle : 패킷 데이터 변경 특수 규칙 OR 성능향상 TOS
- raw : 넷필터의 연결추적 하위시스템과 독립적 동작 규칙
- 액션 : 정책의 변경 추가 삭제 등
- -A : APPEND 정책 추가
- -I : INSERT 정책 삽입
- -D : DELETE 정책 삭제
- -R : REPLACE 정책 교체
- -F : FLUSH 모든 정책 삭제
- -P : POLICY 기본 정책 설정
- -:L : LIST 정책 나열
- 체인 : 정책의 대해 어떤 행동을 취할 것인가?
- INPUT : 호스트를 향한 모든 패킷 (입력)
- OUTPUT : 호스트에서 발생하는 모든 패킷 (출력)
- FORWARD : 호스트가 목적지가 아닌 패킷, 경유지 (라우터)
- PREROUTING : 외부 패킷의 목적지 변경 INPUT으로 가야할 패킷을 FORWARDING
- POSTROUTING : 패킷이 OUTPUT에서 ip , port를 변경
- 매치 : 출발지, 목적지, 인터페이스 등 지정
- -s : 출발지 매칭, 도메인 IP 주소 ,넷마스크 값을 이용하여 표기 (--source, --src)
- -d : 목적지 매칭, 도메인 IP 주소, 넷마스크 값을 이용하여 표기 (--destination, --dst)
- -p : 프로토콜과 매칭 대소문자는 구분하지 않음 ( TCP, UDP, ICMP 등)
- -i : 입력 인터페이스와 매칭 ( --in-interface)
- -o : 출력 인터페이스와 매칭 (--out-interface)
- -j : 매치되는 패킷을 어떻게 처리할지 지정 (--jump)
- 타겟 : 패킷이 규칙과 일치할 때 매치가 취하는 정책
- ACCEPT : 패킷 허용
- DROP : 패킷을 버림
- REJECT : 패킷을 버리고 응답 패킷 전송
- LOG : 패킷을 syslog에 기록
- SNAT --to [주소] : 소스 IP를 변환
- DNAT --to [주소] : 목적지 IP를 변환
- RETURN : 호출 체인 내에서 패킷 처리를 계속함
- 참조
nat 기능 사용 시, /etc/sysctl.conf에 net.ipv4.ip_forward=1 추가해야함
- 자주 사용하는 명령어
1. iptables -nL -t {테이블} : 테이블 조회
2. iptables -F -t {테이블} : 테이블 초기화
3. iptables save > /etc/sysconfig/iptables : 정책 저장
4. iptables -t {테이블} -L {정책} --line-numbers : 테이블의 정책을 번호로 출력
5. iptables -t {테이블} -D {정책} 숫자 : 선택한 테이블의 정책 삭제
반응형