한동안 오징어를 사용하지 않았기 때문에 구성을 꺼도 놀라지 않을 것입니다. 하지만 본질적으로 저는 다음을 수행할 수 있도록 Squid를 사용하여 프록시 서버를 설정하려고 합니다.
클라이언트(내 로컬 PC) -> Squid 프록시 서버 -> FTP 서버(foo.bar.net)
온라인에서 몇 가지 튜토리얼을 보았는데 모든 것이 매우 간단해 보였습니다. 여기에 내 구성의 일부가 있습니다.
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl ftp proto FTP
acl ftp_port port 21
acl SSL_ports port 443 21
acl Safe_ports port 20 # ftp port
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 280 # http-mgmt
acl CONNECT method CONNECT
acl ftp_port port 21
http_access allow ftp ftp_port
http_access allow ftp_port CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128
http_port 21
acl local-servers dstdomain foo.bar.net
always_direct allow local-servers
acl FTP proto FTP
always_direct allow FTP
서비스를 다시 로드하면 구성된 포트에 바인딩되는 것을 볼 수 있습니다. 하지만 로컬 PC에서 CyberDuck을 사용하여 연결하면 Squid의 access_log에 아무것도 기록되지 않습니다. 이는 FTP 서버에 대한 어떤 유형의 액세스 시도도 기록하지 않기 때문에 구성이 올바른지 확신할 수 없습니다. 내가 뭐 잘못 했어요?
답변1
~에서오징어 FAQ:
일반 FTP 클라이언트에서 Squid 캐싱을 사용하도록 할 수 있나요?
아니요, 불가능합니다. Squid는 HTTP 요청만 허용합니다. 서버 측에서는 FTP를 사용하지만 클라이언트 측에서는 FTP를 사용하지 않습니다.
아주 멋지다
wget
FTP URL은 Squid(그리고 다른 프록시 캐시도 가능)를 통해 다운로드됩니다.
"프록시"라는 용어가 HTTP의 맥락에서 가장 자주 언급되고 다른 많은 프로토콜이 HTTP CONNECT 메소드 사용을 허용하는 HTTP 프록시를 통해 전달될 수 있지만 HTTP 프록시는 여전히 "모든 것에 대한 프록시"가 아닙니다.
Cyberduck과 같은 실제 FTP 클라이언트와 함께 사용하려면 데비안에서 사용 가능한 것과 같은 전용 FTP 프록시가 필요합니다.FTP 프록시 패키지(제한된 수의 FTP 서버에 대한 액세스를 보호/제공하려는 경우) 또는 SOCKS 프록시(FTP 클라이언트가 SOCKS를 지원하고 클라이언트가 전 세계 모든 FTP 서버에 연결할 수 있도록 하려는 경우).
SSH는 실제로 SOCKS 프록시를 제공할 수 있지만 주요 목적은 SSH 연결을 통해 프록시 애플리케이션의 연결을 터널링하는 것입니다.
먼저 SOCKS 프록시가 활성화된 SSH 연결을 설정하고 SOCKS 지원 클라이언트 애플리케이션에 localhost
SSH 클라이언트 구성에 지정된 SOCKS 포트를 SOCKS 프록시로 사용하도록 지시해야 합니다. 그런 다음 SSH가 작동하는 한 정상적으로 사용할 수 있습니다. . 앱. 연결이 활성화되어 있습니다. 클라이언트 애플리케이션의 연결은 SSH 클라이언트에서 SSH 서버로, 그리고 거기에서 애플리케이션이 지정한 대상으로 터널링됩니다. 애플리케이션 서버의 관점에서 연결의 원본은 애플리케이션(또는 SSH 클라이언트)이 실제로 상주하는 호스트가 아니라 SSH 서버입니다.
답변2
이전에 오징어를 구성한 적이 없으므로 더 잘 아는 사람이 도움을 줄 수 있습니다.
.ssh/config에 ProxyCommand 줄이 있나요? Netcat을 설치해야 했던 때가 아직도 기억납니다.
.ssh/config의 내 줄은 다음과 같습니다.
Host sftp.example.com
ProxyCommand ssh [email protected] nc %h %p