2012-11-07 7 views
1

모든 웹 트래픽 (HTTP, HTTPS 및 DNS - 다른 것이 있습니까?)은 로컬 응용 프로그램을 통해 서버 응용 프로그램으로 이동하고 거기에서 인터넷으로 연결됩니다. 어떻게해야합니까?C#의 터널 HTTP, HTTPS 및 DNS

비동기 TCP 서버를 작성했으며 SocketAsyncEventArgs를 사용하여 C#에서 소켓 비동기 프로그래밍을 알고 있습니다 (하나의 프로젝트가있는 마스터가 아니지만 몇 가지 기본 사항을 이해할 수 있다고 생각합니다).

답변

1

이 작업을 수행하는 유일한 방법은 Windows 네트워크 드라이버를 작성하는 것입니다. 사용자 영역에서는이 작업을 수행 할 수 없습니다. 이것이 VPN 작동 방식입니다.

단일 터널을 개발할 수있는 사용자 지역 터널이 있지만 먼저 사용자가 응용 프로그램을 사용하도록 구성해야하므로 모든 네트워크 활동을 일방적으로 리디렉션 할 수 없습니다.

당신의 질문에 나는 당신이 Winsock의 내부 구조 나 커널 네트워크 드라이버를 너무 잘 알고 있지 않다고 생각합니다. 그래서 나는 지금 이것이 당신의 능력보다 뛰어나다 고 생각할 것입니다.

그러나 불완전한 접근 방법으로 해결할 수 있다면 SOCKS 프록시를 쉽게 구현할 수 있지만 브라우저에 프록시 서버를 사용하도록 구성해야합니다. HTTP와 HTTPS를 터널링하거나, 그러나 나는 브라우저가 DNS 용으로 SOCKS 서버를 사용하는지 또는 OS 제공 DNS 기능을 사용하는지에 대해 확신하지 못합니다.

+0

+1. Fiddler를 사용하여 제공하는 것이 충분한 지 확인하십시오. C#에서 비교적 쉽게 구현할 수 있다면 그렇지 않으면 - Dai가 지적했듯이 스택의 더 깊은 계층에 코드가 필요하고 C#이 받아 들여지지 않을 것입니다. 그곳에. –

+0

@Alexei Levenkov 감사합니다. 그러나 Fiddler는 오픈 소스가 아니므로 배울 수 있습니다. –

+0

@Dai 감사합니다. 그러나 C#에서 오픈 소스 SOCKS 프록시를 찾지 못했습니다. Firefox는 DNS 용으로 SOCKS를 사용하도록 구성 할 수 있습니다. –

0

@Dai가 제안한 것과 마찬가지로 SOCKS 프록시를 사용하십시오. 그것은 위의 전송 계층을 작동하므로 SOCKS 서버는 일반적인 TCP/UDP에서 작동하는 모든 응용 프로그램 프로토콜을 제공하도록 구성 될 수 있습니다.

정확하게 이것은 TOR이 HTTP가 아닌 모두 트래픽을 마스킹하기 위해 수행하는 작업입니다.