NAT를 구현하려고 하는데여..

익명 사용자의 이미지

NAT기능을 개발하려고 해요.
NAT 종류는 cone으로, Dynamic NAT를 구현하는데,
이게 좀 헷갈려서요..

사설 IP가 여러개이고 , 공인 IP도 여러개인데
저는 사설 IP-Port : 공인 IP-Port로 매핑을 해주려고 해요.
그러니까 목적지가 다르더라도 출발지가 같으면 같은 공인 IP-Port로 가는 거죠.
여기서 질문이 있어요~

1. 제가 하려는게 NAT-PAT 를 섞은건데 일반적인 NAT 장비도 이렇게 돌아가는건지.
2. 공인 IP를 매핑해 줄 때 어떤 방법으로 매핑을 해주어야 하는지(검색해 보니 IP Pool이란 개념이 있었는데
이 부분에 대해서 잘 모르겠어요ㅠㅠ)
3. 만약에 공인 IP의 IP, Port를 다 쓰면 어떻게 되는건지....ㅠㅠ
4. 외부에서 먼저 요청이 들어올 경우는 그 요청을 Drop 시켜야 하는건지.. (테이블에 내부 IP - 공인 IP 매핑 정보가 없으니깐요)

이상입니다.
NAT 구현해 보신 분 있으시면 설명해주시면 감사하겠습니다. ㅠㅠ

wariua의 이미지

NAT 기능을 직접 만들어본 사람은 흔치 않을 것 같습니다. 운영 체제에서 이미 NAT 기능을 제공하니까요.

1. NAT 장비 중 어느 정도는 리눅스를 기반으로 하고 있을 텐데, 리눅스는 iptables의 SNAT, DNAT, MASQUERADE, NETMAP 타겟을 가지고 NAT 기능을 제공합니다. SNAT와 DNAT는 1:1 정적 NAPT, MASQUERADE는 동적 NAPT, NETMAP은 정적 NAT 정도라 할 수 있겠네요.

2. 개발하려고 한다 하셨는데 요구 사항을 물어보시면... 좀 어렵습니다. 할당 알고리즘은 정해졌는데 구현을 어떻게 해야 할지 고민이라는 말씀이신가요?

3. 사용할 주소:포트 짝이 바닥났을 때 어떡할지는 요구 사항에 따라야겠죠. 새로운 세션의 패킷 전달을 거절할 수도 있겠고 기존 세션 정보를 삭제할 수도 있겠고요. 근데... 주소:포트 쌍이 바닥나는 것도 쉽지 않을 일일 텐데요...

4. full cone NAT가 아니라면 drop이겠죠?

$PWD `date`

chang의 이미지

NAT를 예전에 구현했던 사람으로서 간단하게 답변 드릴께요.
1. 예 NAT, PAT를 섞어야만 합니다. 그렇지 않고, NAT만 사용하면 Table refresh를 계속 짧은 시간에 해 주어야 합니다.
2. src-address , src-port, dst-address, dst-port 에 관련된 테이블을 어떻게 만드느냐는 개발하는 사람 마음이겠죠.
3. 다 사용하기전에 refresh를 해야 합니다. 만약 생긴다면 모두 지우고 비우는 것이 맞을 것 같습니다.
4. port forwarding을 사용하는 경우에는 요청이 들어와도 drop하면 안되겠죠.

chang

댓글 달기

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