IPTABLES를 사용하여 특정 IP로 트래픽 전달


0

3 대의 머신 (VM)을 다루고 있습니다 :-

A : -172.20.10.1 (클라이언트)

B : -172.20.10.2 (원본 서버)

C : -172.20.10.5 (리디렉션 서버)

이제 A가 B와 B를 방문하여 C로 전달하기를 원합니다.

나는 이것을 사용하여 이것을 달성 할 수 있었다 :-

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 172.20.10.5:80 iptables -t nat -A POSTROUTING -j MASQUERADE

그러나 이제는 172.20.10.2에 액세스하려고 할 때 하나의 IP (IE) 172.20.10.1에서 172.20.10.5에 대해서만이 작업을 수행하려고합니다. 이미 답변을 시도 했습니다 .

그리고 net.ipv4.ip_forward = 1예도 설정되어 있습니다.


1
B가 C의 A에 대한 다음 홉이 아니면 작동하지 않습니다. 그렇지 않으면 C가 A에 직접 응답을 보내므로 B의 응답이 예상됩니다. 따라서 응답은 요청되지 않은 트래픽으로 처리되어 삭제됩니다. 이것은 HTTP에 관한 것이므로 리버스 프록시를 기꺼이 배치 하시겠습니까?
Daniel B

답변:


0

사전 라우팅에 다음을 추가하십시오.

-s 172.20.10.1/32,172.20.10.2/31,172.20.10.4/31 

0

유닉스 SE에 대한 크로스 포스트 사본에서 나는 다음과 같이 대답했다.

규칙과 일치하는 IP와 일치하는 항목을 추가하기 만하면됩니다.

iptables -t nat -A PREROUTING -s 172.20.10.1 -p tcp --dport 80 -j DNAT --to-destination 172.20.10.5:80

그리고 OP는 단순히 "이것은 작동하지 않습니다."라고 말하면서 의견을 남겼습니다. 전달 된 트래픽이 없거나 다른 클라이언트의 트래픽이 계속 전달됩니까? ...


1
나는 이것이 왜 작동하지 않는지를 명확히하기 위해 질문에 논평했다 : C는 A에게 직접 응답을 보낼 것이다. B는 그것을 기대한다. 포트 포워딩은 매우 특정한 상황에서만 작동한다. 기본적으로 NAT 라우터를 통해 다른 모든 것에 연결된 네트워크에서는 아무것도 없습니다.
Daniel B

다소 복잡해졌으며 (보기가 어렵습니다) C의 B를 통해 A에 경로를 추가하면 문제가 해결 될 수 있습니다 (테스트하기 위해 세 개의 상자를 설정하지는 않습니다).
Henrik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.