iptables 활용한 아이피 포워딩 관련 문의드립니다.

rlaaudtnr82의 이미지

안녕하세요.
이틀째 서치 및 적용을 해보았으나, 잘 적용되지 않는 탓에 이렇게 질문드려봅니다.

상황은 "A" 서버에서 특정 아이피:포트에 대한 트래픽이 발생한 경우 또다른 아이피1:포트 로 포워딩을 하고자 합니다.

자세히 설명드리면

A서버
B서버(내부아이피:192.XXX,XXX.XXX, 공인아이피:210.XXX.XXX.XXX, 포트:1111)

를 이용하고 있을때, A서버는 당연 공인아이피를 통해 B서버로 접속가능합니다.

이때, A서버 웹서비스 내부 로직 실행 시, B서버의 내부아이피로 서비스 요청이 발생하게 됩니다.
웹서비스 내부 로직에서 B서버 서비스 요청 시, 외부아이피로 바꿔 요청할 수 없는 상황이라..

iptables 의 ip forward 등을 이용하여,
A서버에서 192.XXX,XXX.XXX:1111 로의 서비스 트래픽이 발생할 경우 210.XXX.XXX.XXX:1111 로 아이피 포워딩을 시켜서 B서버로 접속하도록 하려고 합니다.

일단, 이런형태로 처리가 가능한지도 잘 모르겠어서요..

방법이 있으면 조언좀 부탁드립니다.

===================================================================================

참고로 아래는 제가 나름 서치해서 설정해본 iptables 내용입니다.

일단, /proc/sys/net/ipv4/ip_forward 의 정보는 "1" 로 설정되어 있는 상태입니다.

시도1.

eth0 장치를 통해 들어오는 1111 포트에 대하여 210.XXX.XXX.XXX:1111 로 변경하여 도착지를 설정하는 형태...

-A PREROUTING -i eth0 -p tcp -m tcp --dport 1111 -j DNAT --to-destination 210.XXX.XXX.XXX:1111

시도2.

출발지의 주소까지 지정하여..다시 시도..

-t nat -A PREROUTING -s 192.XXX,XXX.XXX -p tcp --dport 1111 -j DNAT --to-destination 210.XXX.XXX.XXX:1111

*** iptables에 적용된 내용은 아래와 같은 형태로 확인가능하더군요..

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-t nat -A PREROUTING -s 192.XXX,XXX.XXX -p tcp --dport 1111 -j DNAT --to-destination 210.XXX.XXX.XXX:1111
COMMIT

chanik의 이미지

제가 파악을 잘 못하는 것인지도 모르지만,
질문을 읽어봐도 원하시는 바가 무엇인지 정확히 그림이 그려지지는 않는군요.
일단 두 서버의 주소는 아래와 같이 가정했습니다.

A 서버 주소 : eth0: 192.xxx.xxx.101, eth1: 210.XXX.XXX.101
B 서버 주소 : eth0: 192.xxx.xxx.102, eth1: 210.XXX.XXX.102

[1] 만약 클라이언트 -> [A서버 eth0] -> [A서버 eth1] -> [B서버 eth1] 식의 단순 패킷포워딩을 원하시는 것이면

$ sudo iptables -t nat -I PREROUTING -p tcp -d 192.xxx.xxx.101 --dport 1111 -j DNAT --to-destination 210.XXX.XXX.102:1111
$ sudo iptables -A POSTROUTING -o eth1 -j SNAT --to 210.XXX.XXX.101

[2] 만약 A서버 내부에서 비롯되는 192.xxx.xxx.102:1111 트래픽을 B서버 210.XXX.XXX.102:1111 로 포워딩을 원하시는 것이면

$ sudo iptables -t nat -I OUTPUT -p tcp -d 192.xxx.xxx.101 --dport 1111 -j DNAT --to-destination 210.XXX.XXX.102:1111
$ sudo iptables -A POSTROUTING -o eth1 -j SNAT --to 210.XXX.XXX.101

[1],[2] 모두 두 번째 규칙은 아래와 같이 해도 됩니다.

$ sudo iptables -A POSTROUTING -o eth1 -j MASQUERADE

[1]은 A서버가 단순히 패킷전달만 할 뿐 A서버의 자체 웹서버 등의 개입이 전혀 없는 상황을 가정한 것이고
[2]는 A서버의 자체 웹서버가 동작하면서 내부처리상 또다른 서비스에 의존하는 상황을 가정한 것입니다.

현 상황과 다르다면, 큰 줄기만 파악하시고 상황에 맞게 적당히 수정해서 쓰시면 될 것입니다.

댓글 달기

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