![클라이언트와 프록시에서 HTTP CONNECT 터널의 대상에 액세스할 수 있습니까?](https://linux55.com/image/211779/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%99%80%20%ED%94%84%EB%A1%9D%EC%8B%9C%EC%97%90%EC%84%9C%20HTTP%20CONNECT%20%ED%84%B0%EB%84%90%EC%9D%98%20%EB%8C%80%EC%83%81%EC%97%90%20%EC%95%A1%EC%84%B8%EC%8A%A4%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
HTTP를 통해 SSH 터널을 설정하려고 합니다. 내 Apache 가상 호스트 구성은 다음과 같습니다.
<VirtualHost *:443>
ServerName proxy.example.org
ProxyRequests On
AllowCONNECT 22
<Proxy *>
Require all denied
</Proxy>
<Proxy ssh-container>
Require all granted
</Proxy>
</VirtualHost>
Proxytunnel은 다음을 출력합니다.
proxytunnel -E -p proxy.example.org:443 -d ssh-container:22
->
Via proxy.example.org:443 -> ssh-container:22
HTTP return code: 404 Not Found
ssh-container
Apache httpd 컨테이너와 동일한 네트워크에 있는 Docker 컨테이너입니다. ssh ssh-container
Apache 컨테이너 내부에서 성공적으로 수행되었습니다.
이제 ssh-container
Proxy.example.org를 통해 sshd(예: ssh.example.org:22)로 터널링하는 클라이언트에서 액세스 가능한 항목(예: ssh.example.org:22)으로 변경하면 작동합니다.
그럼 왜 이런가요? HTTP CONNECT를 통해 터널링하면 프록시만 대상에 도달할 수 있다고 가정합니다. 일부 DNS 문제가 있는 것 같지만(예: 클라이언트가 DNS를 확인해야 함) 대상이 작동하지 않으므로 컨테이너 IP를 사용하여 프록시를 통해 연결하는 경우에도 작동하지 않습니다.