iptable 명령으로 연결되어 있는 TCP 세션 끊는 방법

oasis76의 이미지

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

혹시 이러한 문제에 대한 해결 방안 도움 주실 분들은 자세한 답변 좀 부탁 드립니다.

커널 컴파일 새로 했는데 혹 커널 옵션 설정이 잘못되면 이러한 문제가 일어나는지도 알고 싶습니다.

그럼 수고하세요.

ahnhi의 이미지

일반적으로 넷필터의 경우 주소 변경은
PRE_ROUTE 또는 POST_ROUTE 훅에서 이루어집니다.

필터링은 INPUT , OUTPUT, FORWARD 훅에서 해주죠.

그러므로 FORWARD 훅에서 DROP 정책을 주는게 맞습니다.

다만 포트를 추가했을 경우 안된다고 하셨는데 앞에서 예로 드신 주소와 다른 주소 값이 들어 있어서 그런것 같습니다.
또는 Connection tracking이 동작할 경우 이미 만들어진 세션을 타고 동작하기 때문에 제대로 동작하지 않을 수도 있습니다.

참고로 이런식으로 iptables를 이용하여 이미 연결된 세션을 끊는 방법은 그리 좋은 방법이라고는 생각하지 않습니다.

不狂不及

oasis76의 이미지

답변감사드립니다..

안좋은 방법인줄은 아는데 어쩔 수 없이 해야된다는 ㅡㅡ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.