테스트 설정이 있습니다.
- 서버 1: 1.1.1.1
- 서버 2: 2.2.2.2
- 클라이언트: 3.3.3.3
1.1.1.1 서버에서 HTTP 요청을 만들기 위해 클라이언트 IP 3.3.3.3을 얻으려고 합니다. 하지만 저는 1.1.1.1 서버가 이 요청을 실제 HTTPD 서버 2.2.2.2에 전달하기를 원합니다.
나는 2.2.2.2가 HTTP 응답을 사용하여 클라이언트 3.3.3.3과 직접 통신하기를 원합니다.
내 생각에는 HTTP 요청을 수락한 다음 요청을 2.2.2.2로 전달하고 2.2.2.2가 응답하도록 한 다음 다시 3.3.3.3으로 전달하고 이 문제를 해결하려면 1.1.1.1이 필요하다고 생각합니다. 그렇지 않으면 클라이언트 3.3.3.3이 2.2.2.2에서 응답을 받게 되지만 왜 1.1.1.1 대신 2.2.2.2가 응답하고 무시하는지 궁금하십니까?
iptables
어쨌든, 1.1.1.1에서 시도한 것은 다음과 같습니다 .
iptables -t nat -A POSTROUTING -o venet0:0 -j SNAT --to-source 2.2.2.2
iptables -t nat -A PREROUTING -i venet0:0 -j DNAT --to-destination 2.2.2.2
iptables -t nat -A PREROUTING -d 3.3.3.3 -j DNAT --to-destination 2.2.2.2
iptables -t nat -A POSTROUTING -s 2.2.2.2 -j SNAT --to-source 3.3.3.3
이건 변하지 않은 것 같습니다.
답변1
나는 그것을 알아 냈습니다 :
iptables -t nat -A PREROUTING -d 3.3.3.3 -j DNAT --to-destination 2.2.2.2
iptables -t nat -A POSTROUTING -s 2.2.2.2 -j SNAT --to-source 3.3.3.3