iptable 명령으로 연결되어 있는 TCP 세션 끊는 방법
Iptable 복잡하군요.
네트웍 구성
211.41.50.0 네트웍 10.10.10.0 네트웍
internet ------- router ------------ nat --------------- 동영상 서버
iptables
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 211.41.50.68 anywhere tcp dpt:20000 to:10.10.10.2:8888
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.10.10.0/24 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
iptables 명령
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE
iptables -t nat -A PREROUTING -s 211.41.50.68 -p tcp --destination-port 20000 -j DNAT --to-destination 10.10.10.2:8888
이런식으로 망이 구성되어 있습니다.
현재 211.41.50.68의 IP을 가진 컴퓨터에서 NAT의 20000포트로 접근하면 동영상이 보이는 상태 입니다.(TCP사용)
이 상태에서 제가 원하는 건 NAT에서 명령(iptables)을 통해서 전송되고 있는 동영상을 끊어버리는 겁니다.
제가 시도한 방식입니다.
iptables -t nat -D PREROUTING -s 211.41.50.68 -p tcp --destination-port 20000 -j DNAT --to-destination 10.10.10.2:8888
이 명령을 동영상 서버에 새로운 사용자가 접근하지 못하게 했습니다. 기존에 연결된 세션은 통신이 잘 되더군요.
그래서
iptables -t nat -I POSTROUTING -s 211.41.14.68 -p tcp --destination-port 20000 -j DROP
이 명령을 내려서 동영상이 끊어지길 기대 했는데 안끊어지는군요. ㅡㅡ
수많은 경우에 iptables DROP명령을 내려 봤는데도 안끊어집니다.
하나 발견한 것은
iptables -I FORWARD -s 211.41.50.68 -p tcp -j DROP
이 명령을 사용해 주면 끊어 집니다.
iptables -I FORWARD -s 211.41.14.68 -p tcp --destination-port 20000 -j DROP
그런데 이 명령을 통해 여기에 포트를 추가 해주면 안끊어집니다.
컴퓨터에서 패킷캡쳐를 해보면 여전히 20000포트를 이용해서 잘 통신하고 있습니다.
포트를 이용해서 끊어야 되거든요 T.T
혹시 이러한 문제에 대한 해결 방안 도움 주실 분들은 자세한 답변 좀 부탁 드립니다.
커널 컴파일 새로 했는데 혹 커널 옵션 설정이 잘못되면 이러한 문제가 일어나는지도 알고 싶습니다.
그럼 수고하세요.
일반적으로 넷필터의 경우 주소 변경은PRE_ROUTE 또는 POST_
일반적으로 넷필터의 경우 주소 변경은
PRE_ROUTE 또는 POST_ROUTE 훅에서 이루어집니다.
필터링은 INPUT , OUTPUT, FORWARD 훅에서 해주죠.
그러므로 FORWARD 훅에서 DROP 정책을 주는게 맞습니다.
다만 포트를 추가했을 경우 안된다고 하셨는데 앞에서 예로 드신 주소와 다른 주소 값이 들어 있어서 그런것 같습니다.
또는 Connection tracking이 동작할 경우 이미 만들어진 세션을 타고 동작하기 때문에 제대로 동작하지 않을 수도 있습니다.
참고로 이런식으로 iptables를 이용하여 이미 연결된 세션을 끊는 방법은 그리 좋은 방법이라고는 생각하지 않습니다.
不狂不及
답변감사드립니다..안좋은 방법인줄은 아는데 어쩔 수 없이 해야된다
답변감사드립니다..
안좋은 방법인줄은 아는데 어쩔 수 없이 해야된다는 ㅡㅡ
댓글 달기