iptables 활용한 아이피 포워딩 관련 문의드립니다.
안녕하세요.
이틀째 서치 및 적용을 해보았으나, 잘 적용되지 않는 탓에 이렇게 질문드려봅니다.
상황은 "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
제가 파악을 잘 못하는 것인지도 모르지만,질문을
제가 파악을 잘 못하는 것인지도 모르지만,
질문을 읽어봐도 원하시는 바가 무엇인지 정확히 그림이 그려지지는 않는군요.
일단 두 서버의 주소는 아래와 같이 가정했습니다.
[1] 만약 클라이언트 -> [A서버 eth0] -> [A서버 eth1] -> [B서버 eth1] 식의 단순 패킷포워딩을 원하시는 것이면
[2] 만약 A서버 내부에서 비롯되는 192.xxx.xxx.102:1111 트래픽을 B서버 210.XXX.XXX.102:1111 로 포워딩을 원하시는 것이면
[1],[2] 모두 두 번째 규칙은 아래와 같이 해도 됩니다.
[1]은 A서버가 단순히 패킷전달만 할 뿐 A서버의 자체 웹서버 등의 개입이 전혀 없는 상황을 가정한 것이고
[2]는 A서버의 자체 웹서버가 동작하면서 내부처리상 또다른 서비스에 의존하는 상황을 가정한 것입니다.
현 상황과 다르다면, 큰 줄기만 파악하시고 상황에 맞게 적당히 수정해서 쓰시면 될 것입니다.
댓글 달기