이 트래픽을 전달할 나가는 포트 및 소스

이 트래픽을 전달할 나가는 포트 및 소스

나는 인터넷을 검색하고 몇 가지 구성을 시도했지만 지금까지는 정체되어 있으므로 나보다 이 문제에 대해 더 나은 경험이 있는 사람이 있다면 도움이 필요할 것입니다. :)

프록시 뒤에 server1이라는 서버가 있습니다. 프록시 서버에는 공용 IP 1개와 내부 IP 1개가 있습니다. 프록시를 통해 소스를 통해 server1에서 인터넷의 특정 호스트:포트로 연결하고 싶습니다. server1의 기타 트래픽(예: 업데이트)은 프록시를 거치지 않고 인터넷으로 직접 이동합니다.

전임자:

  • server1에서 연결을 시도합니다.http://myApidestination.tld:81/myAPI
  • 트래픽이 프록시의 포트 8080으로 리디렉션됩니다.
  • 프록시는 포트 8080에서 트래픽을 수신하고 이를 포트 81의 myApidestination.tld로 전달합니다.
  • 이 트래픽은 대상 웹 서버가 프록시에 응답하도록 소스가 제공됩니다.

내가 뭘 한거지:

서버 1에서:

iptables -t nat -I OUTPUT -p tcp -d myApidestination.tld --dport 81 -j DNAT --to-destination proxy:8080

에이전트에서:

iptables -A FORWARD -i INT_IF -o EXT_IF -p tcp --dport 8080 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -i INT_IF  -o EXT_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i EXT_IF -o INT_IF  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P FORWARD DROP

iptables -t nat -A PREROUTING -i INT_IF -p tcp --dport 8080 -j DNAT --to-destination myApidestination.tld:81
iptables -t nat -A POSTROUTING -o EXT_IF -p tcp --dport 81 -d myApidestination.tld -j SNAT --to-source proxyPUBLIC_IP

커널에서 전달을 활성화하고 모듈을 로드합니다.

예상한 대로 server1의 트래픽은 프록시를 통과하여 포트 8080에 도달합니다.

그러나 트래픽은 프록시를 통과하지 않으며 상자 밖으로 나가지도 않습니다. 규칙이 제대로 작성되지 않았고 Paquet이 프록시 외부로 전달되지 않는 것 같습니다.

어떤 아이디어가 있나요?

미리 감사드립니다.

답변1

첫째, 이상한 방식으로 트래픽을 라우팅하려고 합니다.

규칙이 있는 프록시에서: 패킷은 사전 라우팅에서 포트 81로 전달된 다음 전달 체인에서 차단됩니다.

최소한 교체해야 합니다.

iptables -A FORWARD -i INT_IF -o EXT_IF -p tcp --dport8080-m conntrack --ctstate new -j 수락

그리고

iptables -A FORWARD -i INT_IF -o EXT_IF -p tcp --dport81-m conntrack --ctstate new -j 수락

또한 프록시의 라우팅 테이블을 확인하십시오.

차트를 고려해보세요 https://www.frozentux.net/iptables-tutorial/chunkyhtml/images/tables_traverse.jpg

~에서 Netfilter 체인 및 테이블 순회

관련 정보