VPS의 공용 IP에서 NAT 후 가상 머신을 노출합니다.

VPS의 공용 IP에서 NAT 후 가상 머신을 노출합니다.

클라우드 어딘가에 공용 IP 주소를 가진 VPS가 있습니다. 또한 차고 깊숙한 곳에 NAT를 통해 인터넷에 연결된 가상 머신이 있습니다.

두 컴퓨터 사이에 영구 OpenVPN 링크를 설정했습니다. 그들은 아무런 문제 없이 서로 대화를 나눌 수 있습니다. VPS의 개인 IP는 10.0.0.1이고 VM의 개인 IP는 10.0.0.2입니다.

이제 누구든지 무엇이든 VPS의 공용 IP(모든 포트에서)에 연결을 시도할 수 있기를 바랍니다.가상 머신에 대한 실제 연결. 유일한 예외는 포트 22와 1194입니다. 이렇게 하면 VPS 자체에 계속 연결할 수 있고 VPN 링크는 계속 실행됩니다.

즉, VPS의 iptables, 라우팅 또는 전달하도록 구성해야 하는 기타 항목입니다.모두10.0.0.2로 들어오는 연결(지정된 2개 포트 제외)

그럼 우리는 어떻게 해야 합니까?

사용 사례: 가상 머신에서 실행되는 WebRTC 스트리밍 서버 노출. 하나 있다노출되어야 하는 다양한 포트와 프로토콜의 가비지 로드이므로 개별적으로 전달하는 것은 비현실적입니다. WebRTC는 설계된 대로 클라이언트가 공용 IP에 연결할 때 가상 머신에 대한 직접 P2P 연결을 부트스트랩/설정할 것으로 예상됩니다.

답변1

특정 포트를 제외하려면 해당 포트와 일치하지만 "아무 작업도 수행하지 않음"으로 추가 처리를 중지하는 규칙을 사용할 수 있습니다.

iptables -t nat -A PREROUTING -p TCP --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING -p UDP --dport 1194 -j ACCEPT

그런 다음 실제 전달을 수행하고 "returnpath"를 설정합니다.

iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 10.0.0.2
iptables -t nat -A POSTROUTING -d 10.0.0.2 -j MASQUERADE

관련 정보