TCP 3 way handshake 과정에서 최종 ACK가 된 패킷의 IP를 수집할려면 어떻게 해야 하나요?

최영식의 이미지

리눅스의 TCP/IP에 대해 공부한지 얼마안된 초보 프로그래멉니다.
질문 자체도 두서가 없는 것 같지만, 조금 급한것이라서 올려봅니다.

궁금한 것은 먼저, TCP 3-way handshake 과정에서 최종 접속이 결정되기 위해서는
클라이언트로 부터 최종 ACK 신호를 받아야 하는걸로 알고 있는데

"이렇게 최종 응답을 보내준 클라이언트의 주소(IP)를 파일로 관리할려고 합니다."

단순히 tcpdump와 같은 tool을 쓰면 간단하겠지만

제가 필요한것은 실시간 저장되는 방법으로

"리눅스 커널을 수정해서 실시간 접속되는 클라이언트 주소를 특정파일 혹은 메모리에 저장하는 방법입니다."

아무래도 IP나 TCP쪽의 소스를 수정해야 할 것같은데
어떤 부분부터 접근해야 할지 난감합니다.

어떤 정보라도 감사하겠습니다. 관련사이트도 좋고요.
혹시 경험이 있으신 분들의 의견 부탁드립니다.

(참고로 linux kernel version 2.4.XX 를 사용중입니다.)

keizie의 이미지

psad였나, 보안 패키지를 깔려니까 iptables로 LOG 동작을 활성화하라고 하더군요. 예문 주는 거만 적용하고 자세히 살펴보진 않았습니다만, 아마 모든 패킷을 기록하는 것 같았습니다. 덕분에 하드에 마구 써대서 부하가 장난 아니었지요... (무념)

아마 적당한 조건에 맞춰서 LOG를 남기게 하면 될 겁니다. man iptables 해서 LOG를 찾아보세요.

yschoi의 이미지

잘은 모르겠지만 패킷을 일일이 모니터링해서 3-way의 세번째 를 찾는것은 부하면에서도 어려울것 같습니다.

불현듯 난 생각인데

TCP 스테이트 다이어그램있지않습니까?

3way의 마지막 패킷을 전송하거나 받으면 그즉시 state가 변경될꺼같은데,

차라리 그부분의 TCP 소스를 수정해서 추가하는 부분을 넣어주는것은 어떨까요?

ps)
많은 유틸리티에서 보여주는 연결되어있는 TCP상태하고 3 번째 ACK를 받을때의 상태하고 다른지 잘 모르겠네요.

최영식의 이미지

KZ님 처럼 할까도 생각했었는데
TCP의 소스 부분을 수정하는 방법을 고려하고 있습니다.

yschoi님 처럼 그 부분부터 살펴봐야겠네요...
왠지 무척 어려울듯.... T.T

즐거운 주말 되세요....^^

chirho의 이미지

cat /proc/net/tcp 하시거나,

netfilter가 포함된 커널이면, cat /proc/net/ip_conntrack 해 보세요.

TCP 이고, ESTABLISH 이면, 3-way HS 가 끝난 세션이라고 보시면 됩니다.

2005년 내 인생의 전환점.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.