NAT에 컴퓨터실이 있습니다(dnsmasq 및 arno iptables 방화벽 사용). 그리고 이 전산실은 대학 프록시 내부에 있기 때문에 모든 인터넷 브라우징은 인증을 받아야 합니다. 토폴로지는 다음과 같습니다(죄송합니다. 내 ASCII 아트가 비어 있습니다).
클라이언트 -> 서버 eth1(내부) -> 서버 eth0(외부) -> 인증이 포함된 대학 프록시 -> 인터넷
일반적으로 우리는 학생들에게 브라우저에서 프록시를 구성하도록 지시하며 그 이상은 없습니다. 그러나 최근 우리는 인증이 필요한 명령줄에서 클라이언트를 사용하기 시작했습니다. 예를 들어 git push and pull, rstudio 다운로드 패키지, emacs 등이 있습니다. 우리는 이 사용 사례에서 학생들에게 변수 https_proxy 및 관련 변수를 내보내도록 지시합니다. 이는 때때로 작동하지만 항상 그런 것은 아닙니다. 명령줄을 항상 잊어버리거나 나중에 사용하기 위해 .bashrc에 저장하지 않는 등의 문제가 있습니다. 특히 emacs는 이러한 변수를 엄격하게 존중하지 않으며 emacs에서 다시 인증하지 않으면 패키지 등을 쉽게 설치할 수 없습니다.
그래서 어제 로컬 클라이언트에서 놀다가 실제 대학 프록시로 트래픽을 전달하고 인증하는 캐시_피어를 사용하는 오징어와 함께 로컬 프록시를 사용하면 emacs가 문제 없이 작동한다는 것을 발견했습니다(프록시를 설정하면 됩니다). 에서는 인증이 필요하지 않습니다). 그래서 모든 학생을 대상으로 이를 복제하고 서버에 오징어를 설치하여 투명 프록시로 만들어 보았지만 작동하지 않았습니다. Bad Hello 메시지 등과 같은 SSL 오류가 계속 발생합니다.
그래서 내 질문은: 클라이언트가 실제 프록시를 구성하지 않고도 콘솔에서 연결을 사용할 수 있도록 모든 연결을 실제 프록시로 전달하고 인증을 위해 단일 계정을 사용하는 투명 프록시를 설정할 수 있습니까? ? 저는 학생들이 명령줄 탐색을 더 쉽게 하기 위해 SSL 트래픽을 제한하고 싶지 않습니다.
서버에는 squid3, 투명 프록시 플러그인이 활성화된 arno iptables 방화벽, 서버로 구성된 게이트웨이 클라이언트가 있는 dnsmasq가 있습니다. 저는 iptables에 대해 잘 모르지만 배우려고 노력합니다. 나는 인터넷에서 많은 예제를 시도했지만 성공하지 못했습니다. 차단이 인증과 충돌해서 불가능할 수도 있겠네요...
내 현재 오징어 구성은 다음과 같습니다.https://stackoverflow.com/questions/10787087/use-elpa-emacs-behind-a-proxy-requiring-authentication):
# Allow all for now
acl all src all
http_access allow all
icp_access allow all
never_direct allow all
# logs
access_log /var/log/squid/access.log squid
# turn off proxy-headers (no idea what is it :))
via off
forwarded_for off
# describe external proxy server
cache_peer <proxy_ip> parent <proxy_port> 0 no-query default proxy-only login=<my_login>:<my_password>
http_port 10000 transparent
acl port10000 myport 10000
cache_peer_access <proxy_ip> allow port10000
acl CONNECT method CONNECT
미리 감사드립니다