iptables와 포트 포워딩
June/리눅스

iptables와 포트 포워딩

iptables란?

iptables는 netfliter라는 프로젝트에서 만든 패킷 제어 기능이다.
패킷의 필터링, 제어 등의 기능을 제공한다.
iptables는 방화벽 cmd보다는 한 단계 아래 레벨에서 룰을 정의할 수 있기 때문에 설정의 자유도가 높은 편이고, 데비안/레드햇 등 OS에 관계 없이 보편적으로 사용할 수 있다는 장점이 있다.

하지만 CentOS7 이상부터는 Firewalld라는 동적 방화벽이 대중화 되고 있다.


iptables 종류 및 용어

  • filter : 패킷을 걸러내는 용도 In/Out bound 및 Forward 총 3가지 종류의 패킷을 처리하는 규칙
  • nat : Source ↔︎ Destination 등을 변경할 수 있도록 각종 규칙을 정의하는 테이블
  • mangle
  • raw
  • chain : 규칙의 속성
    • PREROUTING(DNAT) : 패킷의 도착지 주소를 변경하는 것(Destination NAT)
    • PPOSTROUTING(SNAT) : 패킷의 출발지 주소를 변경하는 것(Source NAT)
    • OUTPUT : 호스트에서 밖으로 흐르는 패킷의 도착지 주소를 변경하는 것
    • INPUT : 호스트에 들어오는 패킷의 주소를 변경하는 것

iptables 실습

목표: 서버에서 iptables를 조회하고, 규칙을 만든 뒤 삭제하여 본다.
  • iptables 내용 확인
iptables -nL -t nat

  • iptables 재조회
iptables -nL PREROUTING -t nat --line-numbers
  • iptables 삭제
iptables -t nat -D PREROUTING {number}

iptables 실전

목표: 실제 서비스 사용되도록 80포트를 8051로 포트포워딩 시킨다.
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8051
service iptables save

#### iptables 설치
systemctl stop firewalld
systemctl mask firewalld
yum install iptables-services
systemctl enable iptables

tip) iptables save 명령어는 설정 바뀌는 것을 저장해주지만, 세션이 끊기면 설정도 사라지게 된다.
이를 방지하기 위해 /etc/sysconfig/iptables에 파일이 생겼는지 확인하고 없으면 만들어주자.


기타 참조

https://stackoverflow.com/questions/24756240/how-can-i-use-iptables-on-centos-7 

https://m.blog.naver.com/PostView.nhn?blogId=monkey5255&logNo=221001636693&proxyReferer=https:%2F%2Fwww.google.com%2F 

https://sepiros.tistory.com/7
https://m.blog.naver.com/PostView.nhn?blogId=minki0127&logNo=220721115360&proxyReferer=https:%2F%2Fwww.google.com%2F