우리는 고객이 내가 일하는 성에 대한 일종의 오디오 가이드를 다운로드할 수 있는 앱을 제공할 예정입니다.
나는 우리 성에서(우리가 제공하는 무료 Wi-Fi를 통해) 앱을 다운로드하는 모든 사용자가 우리 성 외부(우리 네트워크 외부)의 앱 서버에서 전체 오디오 파일을 다운로드하는 것을 원하지 않습니다.
그래서 제가 조사한 바에 따르면 "동적" 데이터를 위해 무료 Wi-Fi 대역폭을 예약할 수 있도록 자주 사용하는 파일(제 경우에는 MP3 데이터)을 캐시하는 프록시를 구축해야 했습니다.
난 이걸 해야 해
- 네트워크를 통과하는 로드를 제어/제한하여 사무실 네트워크에 영향을 주지 않습니다.
- 무료 Wi-Fi를 원활하게 실행하세요. 우리는 많은 고객을 보유하고 있으며 무료 WiFi를 제공합니다. 우리 내부 네트워크는 10GBit를 사용하고 인터넷 대역폭은 약 1Gbit입니다.
그래서 저는 MP3 파일을 인터넷에서 계속해서 다운로드할 필요 없이 배포하기 위해 프록시를 사용하려고 합니다.
질문:
- 내가 찾고 있는 도구가 Squid인가요, 아니면 더 나은 도구가 있나요?
- 모든 무료 Wi-Fi 사용자가 자동으로 프록시를 사용하도록 강제하는 방법
- [선택사항] 이 사용 사례에 대한 경험입니다.
답변1
이 목적으로 Squid를 사용할 수 있지만 알아야 할 몇 가지 문제가 있습니다.
Squid는 아직 부분 콘텐츠 캐싱을 지원하지 않으므로 애플리케이션이 전체 파일을 다운로드하는 대신 범위 요청을 사용하는 경우 몇 가지 문제가 발생합니다. 범위 요청에 따라 캐시에 전체 파일을 가져오도록 Squid를 구성할 수 있지만, 이 경우 전체 파일이 다운로드될 때까지 차단됩니다. 캐시된 오디오 파일이 오래되어 새 복사본을 다운로드해야 하는 경우, 애플리케이션 사용자는 애플리케이션이 파일을 재생할 수 있으려면 서버가 전체 파일을 다운로드할 때까지 기다려야 합니다.
애플리케이션은 파일을 가져오기 위해 HTTP를 사용해야 합니다. 그렇지 않으면 프록시가 HTTPS 연결을 가로채려고 시도하는 경우 프록시에 대한 인증서를 생성하고 애플리케이션이 이를 신뢰하도록 허용하지 않으면 인증서 오류가 발생합니다. HTTPS 인증서 오류가 발생하고 할 수 있는 일이 많지 않습니다. 일반적으로 사용자에게 명확하게 알리고 인증서를 설치하도록 허용하지 않는 한 HTTPS를 차단하는 것은 나쁜 습관입니다.
아무런 구성 없이 클라이언트 트래픽이 Squid를 통과하도록 강제하려면 Squid를 투명 프록시로 구성한 다음 사용자가 인터넷에 액세스하는 데 사용하는 게이트웨이에서 일부 방화벽 마법을 사용하여 모든 HTTP 트래픽을 Squid 서버로 리디렉션해야 합니다.
http_port 3128 intercept # enable transparent proxy mode
게이트웨이 구성은 방화벽에 따라 다릅니다. IPtables의 경우 Squid 서버가 사용자와 동일한 게이트웨이 뒤에 있다고 가정하면 다음과 같이 작동합니다.
iptables -t nat -A PREROUTING -s <squid_server_IP> -p tcp --dport 80 -j ACCEPT # accept HTTP traffic from the Squid
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <squid_server_IP>:3128 # redirect your user's HTTP traffic to Squid
iptables -t nat -A POSTROUTING -j MASQUERADE # probably not needed since your gateway already has this
너는 좀 봐야 해오징어의 문서, 이를 위해 회사 방화벽을 구성하는 몇 가지 예가 있습니다.