내 임무는 서버를 통해 트래픽(포트 범위)을 리디렉션하는 것입니다. 아키텍처는 다음과 같습니다.
여기서 NAT가 부적절한 이유:NAT가 "터널 서버"로 설정되면 모든 사용자에게 동일한 IP가 할당됩니다.
나는 필요하다:사용자가 "터널 서버"에 연결할 때 자동으로 "서버"로 리디렉션되고 사용자의 IP가 변경되지 않기를 바랍니다. 엔드포인트는 사용자의 실제 IP를 확인해야 합니다.
편집하다:
이제 다음 NAT 규칙이 있습니다.
$IPT -t nat -A PREROUTING -d $SRV_IP -p tcp --dport 25550:25580 -j DNAT --to-destination $MC_IP
$IPT -t nat -A POSTROUTING -p tcp --dport 25550:25580 -o eth0 -d $MC_IP -j SNAT --to-source $SRV_IP
$IPT -A FORWARD -d $MC_IP -p tcp --dport 25550:25580 -j ACCEPT
엔드포인트 서버는 각 클라이언트에 있는 "터널 서버"의 IP를 표시합니다.
답변1
10.* 내부 주소가 있으므로~ 해야 하다일반적으로 인터넷에서 액세스할 수 있도록 하려면 NAT를 사용하십시오.
터널 서버에 DNAT(대상 NAT 또는 포트 전달) 규칙을 생성하여 사용자를 서버의 적절한 포트로 연결합니다.
질문의 출력을 보여주는 수정 사항에 응답하기 위해 업데이트하십시오 iptables
.
사용자가 서버 10.10.0.1에 연결할 수 있도록 하려면 SNAT 규칙이 필요하다고 하셨습니다. 터널 서버 10.10.0.3을 게이트웨이로 사용하여 서버에 기본 경로를 추가하는 경우 이 규칙을 삭제할 수 있습니다. 이는 인터넷에서 발생하는 패킷의 반환 경로를 정의합니다.
route add -net default gw 10.10.0.3