본문 바로가기
Linux/Linux Shell Command

iptables - 네트워크 설정하기 (포트 포워딩)

by 드로니뚜벅이 2023. 9. 30.

배퍼버전(Ubuntu, CentOS, 등)과 상관없이 리눅스에서 가장 많이 사용하는 방화벽입니다.
iptables 는 커널상에서 netfilter 패킷필터링 기능을 사용자가 제어할 수 있습니다.
패킷필터링이란 수신된 패킷의 헤더 정보를 보고 패킷을 폐기할지 수신할지를 결정하는 것을 말합니다.

 

헤더에 필터링할 정보인 출발지 ip:port / 도착지 ip:port 등 프로토콜 옵션을 가지며 각각의 전송 데이터가 들어갑니다.
특정 조건을 가지고 있는 패킷에 대해 허용(ACCEPT) 및 차단(DROP)등을 지정할 수 있습니다.

 

사용예:

# iptables 초기화
iptables -F

# 설정 내용 출력
iptables -nL

# TCP port 22 를 열어 ssh 접속을 가능하도록 설정
iptables -A INPUT -p tcp -m tcp --drpot 22 -j ACCEPT

# localhost 접속 허용
iptables -A INPUT -i lo -j ACCEPT

# DNS TCP 53 / UDP 53
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

# 80 443 포트 개방
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# iptables 는 등록 순서에 영향을 받는다. 먼저 등록한 정책이 우선순위가 높다.
# 나중에 추가로 추가할 경우 순서를 설정해서 추가할 수 있다. 1번으로 등록하는 예시이다.
# -A 옵션 대신 -I 옵션을 쓰고 번호를 지정해 주면 된다.
iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
 
# ip 차단
iptables -I INPUT -s 111.222.33.44 -j DROP

# 포워딩
iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 8080

# 확인
iptables -t nat -L

# 제거
iptables -D INPUT 1 -p tcp --dport 443 -j ACCEPT

# 변경후 저장을 해 주어야 os 재시작시 동일한 설정이 적용된다.
netfilter-persistent save
netfilter-persistent reload

위 예는 LukeHan님의 블로그에서 발췌했습니다.

 

참고사이트