고려된 연구/방법

고려된 연구/방법

사용자 공간 UDP 역방향 프록시를 수행하는 쉬운 방법이 있습니까?

특히, 나는 다음과 같은 것을 원합니다.

ssh -R 10000:localhost:10000 $server

그러나 UDP의 경우.

나는이 접근 방식이 희망신뢰할 수 없는어떤 의미에서는 나와 서버 사이에서 패킷이 손실되면 재전송이 발생하지 않습니다. 또한 클라이언트 컴퓨터가받다UDP 패킷.

고려된 연구/방법

  • OpenVPN은 IP 수준에서 이 터널링을 수행합니다. 구성이 매우 무겁게 느껴지고 설정이 많이 필요합니다.
  • socat어쩌면 이것을 마술처럼 할 수 있을지도 모릅니다. 하지만 문서를 살펴봐도 방법을 찾을 수 없습니다.
  • "VPN TAP" 인터페이스라는 것이 있는데, 이는 사용자와 서버 사이의 가상 회선처럼 들립니다. 사용자 공간 TAP 인터페이스를 생성한다고 주장하는 일부 오픈 소스 프로그램을 발견했습니다.
  • 이 페이지TCP를 통한 UDP 라우팅에 대해 논의합니다(이렇게 하면 재전송이 생성된다는 점에 유의하세요).
  • 유리섬유간단할 것 같지만 초기 검사에서는 그것이 무엇을 하는지 알 수 없습니다.

오픈VPN

사람들이 의견에서 명확하게 언급했듯이 OpenVPN은 원시 성능 측면에서 가장 좋은 접근 방식입니다(TCP 패킷 전달에 작동하므로 암호화가 필요하다고 가정). 물론 단점은 연결 양쪽, 인증서, 구성 파일, 몇 개의 IP 주소 및 해당 IP 주소에 대한 일부 라우팅 규칙에 루트 프로세스가 필요하다는 것입니다.

답변1

SSH 터널의 반대편에 SOCKS 프록시를 배치할 수 있습니다.내 기억이 맞다면, 매개변수를 약간 조정한 후에는 포함된 예제 스크립트 중 하나로 libio-socket-socks-perl충분합니다 .

답변2

역방향 프록시 UDP에 사용할 수 있는 도구는 다음과 같습니다.

  • frp, 말씀하신 대로 테스트해봤습니다(DNS 예제가 있습니다).

  • 스트리밍 지시문을 사용하고 UDP를 수신하는 nginx:

    개울 {

    서버 { 10000 udp에서 수신; Proxy_pass 백엔드: 10000;

(보시다시피 첫 번째 역방향 프록시 UDP는 피어의 전체 비디오 및 오디오 스트림과 같이 DNS 응답이 여러 개일 수 있으므로 모든 응답을 다시 프록시합니다.)

관련 정보