Server/Ubuntu

[iptables] 등록되어있는 정책 제거 (feat. --line-numbers)

dalpang.e 2022. 1. 6. 23:54

 

웹 서버를 구성할 때 포트포워딩(예를들어 8080 포트로 접근 시 80포트로 이동시키는) 방법에는 지금 내 수준에서는 아래 2가지다.

 

1. 정적 리소스를 담당하는 웹 서버를 앞에 두고 뒤에 WAS를 따로 두어서 앞에 있는 웹서버에서 포트포워딩을 해주는 방식

2. iptables를 통해서 PREROUTING 정책을 등록하여 라우팅 시점에 포트포워딩을 해주는 방식
참고 : https://steady-snail.tistory.com/153

 

기존 서버 구성은 iptables로 Prerouting 포트를 잡아준 상태였는데, 예전에 정리해두었던 글(위에 참고 블로그)을 보면 정책을 추가하는 구문과 삭제하는 구문이 옵션 하나로 달라진다. 즉, 설정한 정책 내용을 모르면 삭제할 수 없다는것이다. 그래서 삭제를 어떻게 하지? 해매다가 다른 삭제 방법을 찾았다.

 

규칙번호 기준으로 삭제

iptables 목록 조회 시 옵션으로 번호를 출력할 수 있다.

 

# iptables -L INPUT --line-numbers

이 때 나오는 번호를 아이디처럼 활용하여 삭제할 수 있다고 한다.

 

# iptables -D INPUT 2

위의 명령어로 iptables -L INPUT 목록에서 2라는 순번을 가진 정책을 지울 수 있다.

 

그런데 나는 한가지 더 문제가 있었다. nat이라는 특정 테이블을 사용하고 있었기 때문에 기존에 INPUT, OUTPUT, FORWORD 체인에 목록이 나오지 않는다. nat 테이블을 사용하는 경우에는 다음과 같이 해야한다.

 

iptables nat 테이블 사용 시 line number로 삭제하는 방법

여기서는 PREROUTING을 기준으로 한다. 다른 라우팅 시점은 아마 해당 라우팅 시점을 지정하면 될 듯 싶다.

 

등록된 정책 조회하는 명령어는 다음과 같다.

# iptables -t nat -L PREROUTING --line-numbers

 

드디어 내가 원하는 삭제하는 명령문

# iptables -t nat -D PREROUTING 1

이렇게하면 등록할 때 내용을 몰라도 등록된 정책을 제거할 수 있다.

 

 

 

참고

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lionlyloveil&logNo=220777727325

http://daplus.net/linux-iptables%EC%97%90%EC%84%9C-%ED%8A%B9%EC%A0%95-%EA%B7%9C%EC%B9%99%EC%9D%84-%EC%A0%9C%EA%B1%B0%ED%95%98%EB%A0%A4%EB%A9%B4-%EC%96%B4%EB%96%BB%EA%B2%8C%ED%95%B4%EC%95%BC%ED%95%A9%EB%8B%88%EA%B9%8C/