오징어 투명 포트 리디렉션

오징어 투명 포트 리디렉션

저는 Ubuntu 20.04에서 Squid 5.2를 실행하고 있습니다. 저는 이 기계를 아이들을 위한 웹 필터로 설정했습니다. 프록시 기능이 제대로 작동하는 것 같습니다. 적어도 아이들 중 한 명은 자신의 컴퓨터에서 프록시 설정을 제거하는 방법을 알아낼 수 있을 것이라고 확신합니다. 따라서 트래픽을 서버를 통해 라우팅하고 Squid가 그런 식으로 필터링하도록 하겠습니다.

패킷 전달을 설정했는데 트래픽이 정상적으로 진행됩니다. 테스트 페이지 등을 볼 수 있습니다. 그러나 포트 80 트래픽을 3128로 리디렉션하도록 PREROUTING 문을 수정하면 웹 브라우저에 "잘못된 URL"이라는 오류가 표시됩니다.

여기에 이미지 설명을 입력하세요.

내 오징어 구성은 다음과 같습니다.

access_log daemon:/var/log/squid/access.log
acl localnet src 192.168.1.0/24
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
acl SSL_ports port 443
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443     # https
acl Safe_ports port 70      # gopher
acl Safe_ports port 210     # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
error_directory /usr/local/squid/share/errors
acl me src 192.168.1.33
acl kids src 192.168.1.215 192.168.1.253
acl ksm dstdomain "/usr/local/squid/etc/kidssocialmedia.txt
acl chat dstdomain "/usr/local/squid/etc/chatdomains.txt"
acl porn dstdomain "/usr/local/squid/etc/porndomains.txt"
acl webmail dstdomain "/usr/local/squid/etc/webmaildomains.txt"
deny_info ERR_TROLL_KIDS kids ksm
http_reply_access deny kids ksm
http_access deny kids ksm
deny_info ERR_TROLL_PORN kids porn
http_reply_access deny kids porn
http_access deny kids porn
deny_info ERR_TROLL_WEBMAIL kids webmail
http_reply_access deny kids webmail
http_access deny kids webmail
deny_info ERR_TROLL_CHAT kids chat
http_reply_access deny kids chat
http_access deny kids chat
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128 ssl-bump cert=/usr/local/squid/etc/ssl_cert/myCA.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
sslcrtd_program /usr/local/squid/libexec/security_file_certgen -s /usr/local/squid/var/logs/ssl_db -M 4MB
coredump_dir /usr/local/squid/var/cache/squid
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern .       0   20% 4320
cache_dir ufs /mount/storage/squid 4096 16 256
maximum_object_size_in_memory 0
maximum_object_size 250
cache_mem 0

이것은 UFW Rules.before 파일의 필터 섹션 앞에 있는 것입니다:

*nat: 사전 라우팅 허용됨 [0:0]

-A 사전 경로 -i br0 -p tcp --dport 80 -j 리디렉션 --to-port 3128

범죄

서버의 기본 인터페이스는 br0(192.168.1.149)입니다. 리디렉션 문이 없으면 트래픽은 문제 없이 서버를 통해 인터넷 게이트웨이(192.168.1.1)로 라우팅됩니다. 웹 브라우저 프록시 설정을 192.168.1.149:3128로 설정해도 문제 없이 작동했습니다.

나는 또한 DNAT 진술을 시도했지만 그것도 작동하지 않았습니다. 어쨌든 트래픽이 오징어 서버로 위장되는 것을 원하지 않기 때문에 가능하면 DNAT를 사용하고 싶지 않습니다. 원할 경우 포트 리디렉션에 사용할 수 있는 다른 컴퓨터가 있습니다.

관련 정보