iptable을 이용한 포트 포워딩

rokmn3309의 이미지

안녕하세요.. iptable을 이용해서 방화벽안에 있는 pc에서, 막아논 포트를 사용하는 프로그램을
사용가능하게 할려고 하고 있습니다.

기존의 구성은 다음과 같습니다.

                      |dns:10.201.1.2~10.201.1.3|
---{internet}--------|firewall:10.102.1.1]     |----------------[pc:10.102.x.x]

방화벽은 dhcp서버이며, b클래스를 사용하고 있습니다. 그리고 pc에서 웹을 사용할때에는 각 pc에
프록시 서버를 지정해서 인터넷을 사용하고 있고, 프록시 서버의 ip는 10.201.1.3 입니다.

여기에 프록시와 pc사이에 iptable를 셋팅한 pc를 넣어서 막아논 포트를 포트 포워딩후에 외부에서
이 포트로 들어온 데이터는 다시 복원하게 할려고 생각했는데요..

 
                 61.113.x.x                  
                |dns:10.201.1.2~10.201.1.3|     10.102.x.x   192.168.100.1
---{internet}---|firewall:10.102.1.1]     |-----------[iptable pc]--------------[pc:192.168.100.x]
 
                    220.218.x.x
---{internet}------[port restored]-------{internet}---

예를 들어서 21포트가 열려 있다면은 [iptable pc]에서는 다음과 같이 접속할 목적지와 포트를 변환하고,
dhcp 클라이언트로부터의 데이터를 자기에서 보낸것처럼 SNAT해줍니다. 원래 목적지는 203.104.x.x에
5000를 사용합니다.
iptables -A PREROUTING -t nat -p tcp -d 203.104.x.x --dport 5000 -j DNAT --to 220.218.x.x:21
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

다시 [port restored]에서는 다음과 같이 지정된 pc(61.113.x.x)로부터,지정한 포트(21)를 사용할경우에
미리 정한 목적지(203.104.x.x)와 포트(5000)로 다시 환원시켜줍니다.
iptables -A PREROUTING -t nat -p tcp -s 61.113.x.x -d 220.218.x.x --dport 21 -j DNAT --to 203.104.x.x:5000
iptables -t nat -A POSTROUTING -s 61.113.x.x -d 203.104.x.x -o eth0 -j SNAT --to 220.218.x.x

대충 사무실에서는 방화벽이 없는 상태에서 다른 네트웍단의 pc끼리 포트및 목적지를 바꿔서 테스트해본결과
문제 없이 되었습니다. 그런데 실제 환경에 pc를 가져다 놓고 해보면은 전혀 나가지를 않습니다.

브라우저의 프록시 서버 설정을 사용해서 인터넷을 했다면은 가운데서 투명 프록시를 한대 더 넣어서 포트 포워딩을 해주고
외부에서 다시 환원을 해주면은 정상적으로 되어야 하지 않는가요? 이것과는 다른것인가요?

woonuk의 이미지

관심있는 내용이긴 한데 상황이 잘 이해가 안됩니다.

언급하신 21번 포트의 문제점은 FTP 프로토콜 특성상
데이터 포트에 대한 처리가 빠져 있다는 겁니다.

서버나 클라이이언트쪽에 방화벽이 있다면 passive 모드를 사용해야 할텐데,
고려할 포트 범위가 많아지겠지요.

rokmn3309의 이미지

21포트는 단순히 예로 21번 포트가 열려 있다면은 그 포트를 이용해서 다른 프로그램을 사용할려고 하는건데요.. FTP프로토콜 이야기가 왜 나오는지 이해가 잘 안됩니다만은.. 프록시(알아본봐로는) Raptor FW라는 방화벽이라고 하는데요.. 방화벽에서 21포트로 나갈 경우에는 ftp 프로토콜인지 검사를 한다는것인지..요.

댓글 달기

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