<div dir="ltr"><div>Hello,</div><div><br></div><div>I'm trying to setup a Squid server simple as possible just to review the web use in office using the last stable version 3.5.7.</div><div><br></div><div>I setup the bridge with 2 NIC, br0 with IP 192.168.0.5 and I had disable IPv6 on boot in my Slackware Current (Fri Aug 14 2015) server.</div><div><br></div><div>The script on the boot for Tproxy, routing, IPTables and EBTables:</div><div>echo 50 > /proc/sys/vm/swappiness</div><div>echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time</div><div>echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl</div><div>echo 6 > /proc/sys/net/ipv4/tcp_keepalive_probes</div><div>ip -f inet rule add fwmark 1 lookup 100</div><div>ip -f inet route add local default dev lo table 100</div><div>echo 1 > /proc/sys/net/ipv4/ip_forward</div><div>echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter</div><div>echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter</div><div>echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter</div><div>iptables -t mangle -N DIVERT</div><div>iptables -t mangle -A DIVERT -j MARK --set-mark 1</div><div>iptables -t mangle -A DIVERT -j ACCEPT</div><div>iptables  -t mangle -A PREROUTING -p tcp -m socket -j DIVERT</div><div>iptables  -t mangle -A PREROUTING -p tcp ! --destination 192.168.0.5 --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129</div><div>iptables  -t mangle -A PREROUTING -p tcp ! --destination 192.168.0.5 --dport 443 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3130</div><div>CLIENT_IFACE=eth1</div><div>INET_IFACE=eth0</div><div>ebtables -t broute -A BROUTING \</div><div>        -i $CLIENT_IFACE -p ipv4 --ip-proto tcp --ip-dport 80 \</div><div>        -j redirect --redirect-target DROP</div><div>ebtables -t broute -A BROUTING \</div><div>        -i $INET_IFACE -p ipv4 --ip-proto tcp --ip-sport 80 \</div><div>        -j redirect --redirect-target DROP</div><div>ebtables -t broute -A BROUTING \</div><div>        -i $CLIENT_IFACE -p ipv4 --ip-proto tcp --ip-dport 443 \</div><div>        -j redirect --redirect-target DROP</div><div><br></div><div>I compiled squid from source:</div><div>./configure \</div><div>  --prefix=/usr \</div><div>  --libdir=/usr/lib64 \</div><div>  --libexecdir=/usr/lib64/squid \</div><div>  --sysconfdir=/etc/squid \</div><div>  --localstatedir=/var/log/squid \</div><div>  --sharedstatedir=/var/lib \</div><div>  --datadir=/usr/share/squid \</div><div>  --with-pidfile=/var/run/squid \</div><div>  --mandir=/usr/man \</div><div>  --with-logdir=/var/log/squid \</div><div>  --enable-silent-rules \</div><div>  --enable-dependency-tracking \</div><div>  --with-openssl=/usr/include/openssl/ \</div><div>  --enable-ssl \</div><div>  --enable-ssl-crtd \</div><div>  --enable-icmp \</div><div>  --enable-delay-pools \</div><div>  --enable-useragent-log \</div><div>  --enable-esi \</div><div>  --enable-follow-x-forwarded-for \</div><div>  --enable-linux-netfilter \</div><div>  --enable-forward-log \</div><div>  --enable-poll \</div><div>  --enable-referer-log \</div><div>  --with-default-user=squid \</div><div>  --enable-auto-locale \</div><div>  --disable-ipv6 \</div><div>  --build=X86_64-slackware-linux</div><div><br></div><div>Generating the certificate:<br></div><div># openssl genrsa -out squid.key 2048<br></div><div># openssl req -new -key squid.key -out squid.csr<br></div><div># openssl x509 -req -days 3650 -in squid.csr -signkey squid.key -out squid.crt<br></div><div># cat squid.key squid.crt > squid.pem<br></div><div><br></div><div>My squid.conf:</div><div>acl localnet src <a href="http://192.168.0.0/16">192.168.0.0/16</a></div><div>acl localhost src <a href="http://192.168.0.5/32">192.168.0.5/32</a></div><div>acl SSL_ports port 443</div><div>acl Safe_ports port 80</div><div>acl Safe_ports port 443</div><div>acl CONNECT method CONNECT</div><div>acl ssl-bump_port myportname 3130</div><div>http_access deny !Safe_ports</div><div>http_access deny CONNECT !SSL_ports</div><div>http_access allow localhost manager</div><div>http_access allow localnet</div><div>http_access deny all</div><div>http_reply_access allow all</div><div>icp_access allow all</div><div>tcp_outgoing_address 85.138.204.43</div><div>dns_v4_first on</div><div>pinger_enable off</div><div>http_port 3128</div><div>http_port 3129 tproxy</div><div>https_port 3130 ssl-bump tproxy generate-host-certificates=off cert=/etc/squid/ssl/squid.pem cafile=/etc/squid/ssl/squid.pem</div><div>always_direct allow ssl-bump_port</div><div>ssl_bump none all</div><div>dns_nameservers 8.8.8.8 8.8.4.4</div><div>access_log daemon:/var/log/squid/access.log squid</div><div>cache deny all</div><div>pid_filename /var/run/squid/squid.pid</div><div>coredump_dir /var/log/squid/cache/squid</div><div>visible_hostname myservername.domain.local</div><div><br></div><div>In general the configuration (squid.conf) it's working but has some incomplete behaviors as shows in log files.</div><div><br></div><div>access.log (I know this is Facebook but there are no dns resolusion in https, just IP):</div><div>1439811492.625   2377 192.168.0.102 TCP_TUNNEL/200 3574 CONNECT <a href="http://31.13.90.2:443">31.13.90.2:443</a> - ORIGINAL_DST/<a href="http://31.13.90.2">31.13.90.2</a> -</div><div><br></div><div>cache.log:</div><div>HTTP/1.1 200 OK</div><div>Accept-Ranges: bytes</div><div>Cache-Control: max-age=504747</div><div>Content-Type: application/ocsp-response</div><div>Date: Mon, 17 Aug 2015 11:38:03 GMT</div><div>ETag: "55d15943-1d7"</div><div>Expires: Sun, 23 Aug 2015 23:38:03 GMT</div><div>Last-Modified: Mon, 17 Aug 2015 03:47:15 GMT</div><div>Server: ECS (mad/439C)</div><div>X-Cache: HIT</div><div>Content-Length: 471</div><div>X-Cache: MISS from squidhead2.skywalker.local</div><div>Via: 1.1 squidhead2.skywalker.local (squid/3.5.7)</div><div>Connection: keep-alive</div><div>----------</div><div>2015/08/17 12:38:09.067 kid1| store.cc(955) checkCachable: StoreEntry::checkCachable: NO: not cachable</div><div>2015/08/17 12:38:09.067 kid1| store.cc(955) checkCachable: StoreEntry::checkCachable: NO: not cachable</div><div>2015/08/17 12:38:09.067 kid1| store.cc(955) checkCachable: StoreEntry::checkCachable: NO: not cachable</div><div>2015/08/17 12:38:10.248 kid1| TcpAcceptor.cc(222) doAccept: New connection on FD 12</div><div>2015/08/17 12:38:10.248 kid1| TcpAcceptor.cc(297) acceptNext: connection on local=<a href="http://0.0.0.0:3130">0.0.0.0:3130</a> remote=[::] FD 12 flags=25</div><div>2015/08/17 12:38:10.248 kid1| client_side.cc(3890) httpsSslBumpAccessCheckDone: sslBump not needed for local=<a href="http://31.13.90.2:443">31.13.90.2:443</a> remote=192.168.0.102 FD 50 flags=17</div><div>2015/08/17 12:38:10.248 kid1| client_side.cc(2337) parseHttpRequest: HTTP Client local=<a href="http://31.13.90.2:443">31.13.90.2:443</a> remote=192.168.0.102 FD 50 flags=17</div><div>2015/08/17 12:38:10.248 kid1| client_side.cc(2338) parseHttpRequest: HTTP Client REQUEST:</div><div>---------</div><div>CONNECT <a href="http://31.13.90.2:443">31.13.90.2:443</a> HTTP/1.1</div><div>Host: <a href="http://31.13.90.2:443">31.13.90.2:443</a></div><div>---------</div><div>2015/08/17 12:38:10.248 kid1| client_side_request.cc(741) clientAccessCheckDone: The request CONNECT <a href="http://31.13.90.2:443">31.13.90.2:443</a> is ALLOWED; last ACL checked: localnet</div><div>2015/08/17 12:38:10.248 kid1| client_side_request.cc(717) clientAccessCheck2: No adapted_http_access configuration. default: ALLOW</div><div>2015/08/17 12:38:10.248 kid1| client_side_request.cc(741) clientAccessCheckDone: The request CONNECT <a href="http://31.13.90.2:443">31.13.90.2:443</a> is ALLOWED; last ACL checked: localnet</div><div>2015/08/17 12:38:10.248 kid1| peer_select.cc(280) peerSelectDnsPaths: Found sources for '<a href="http://31.13.90.2:443">31.13.90.2:443</a>'</div><div>2015/08/17 12:38:10.248 kid1| peer_select.cc(281) peerSelectDnsPaths:   always_direct = ALLOWED</div><div>2015/08/17 12:38:10.248 kid1| peer_select.cc(282) peerSelectDnsPaths:    never_direct = DENIED</div><div>2015/08/17 12:38:10.248 kid1| peer_select.cc(288) peerSelectDnsPaths:    ORIGINAL_DST = local=192.168.0.102 remote=<a href="http://31.13.90.2:443">31.13.90.2:443</a> flags=25</div><div>2015/08/17 12:38:10.248 kid1| peer_select.cc(295) peerSelectDnsPaths:        timedout = 0</div><div>2015/08/17 12:38:12.621 kid1| client_side.cc(815) swanSong: local=<a href="http://31.13.90.2:443">31.13.90.2:443</a> remote=192.168.0.102 flags=17</div><div>2015/08/17 12:38:12.625 kid1| client_side.cc(815) swanSong: local=<a href="http://31.13.90.2:443">31.13.90.2:443</a> remote=192.168.0.102 flags=17</div><div><br></div><div><br></div><div>The logs with http (port 80) has the name resolution of navigation.</div><div><br></div><div>I disabled pinger because give some error:</div><div>2015/08/17 12:49:55.918 kid1| Pinger socket opened on FD 20</div><div>2015/08/17 12:49:55.920 kid1| IcmpSquid.cc(90) SendEcho: to 127.0.0.1, opcode 1, len 9</div><div>2015/08/17 12:49:55.920 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: netdb</div><div>2015/08/17 12:49:55.920 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: asndb</div><div>2015/08/17 12:49:55.920 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: carp</div><div>2015/08/17 12:49:55.920 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: userhash</div><div>2015/08/17 12:49:55.920 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: sourcehash</div><div>2015/08/17 12:49:55.920 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: server_list</div><div>2015/08/17 12:49:55| pinger: Initialising ICMP pinger ...</div><div>2015/08/17 12:49:55|  icmp_sock: (1) Operation not permitted</div><div>2015/08/17 12:49:55| pinger: Unable to start ICMP pinger.</div><div>2015/08/17 12:49:55| FATAL: pinger: Unable to open any ICMP sockets.</div><div><br></div><div>This is my cache.log after reload squid:</div><div>2015/08/17 12:51:26| Set Current Directory to /var/log/squid/cache/squid</div><div>2015/08/17 12:51:27 kid1| Reconfiguring Squid Cache (version 3.5.7)...</div><div>2015/08/17 12:51:27 kid1| Closing HTTP port <a href="http://0.0.0.0:3128">0.0.0.0:3128</a></div><div>2015/08/17 12:51:27 kid1| Closing HTTP port <a href="http://0.0.0.0:3129">0.0.0.0:3129</a></div><div>2015/08/17 12:51:27 kid1| Closing HTTPS port <a href="http://0.0.0.0:3130">0.0.0.0:3130</a></div><div>2015/08/17 12:51:27 kid1| Closing Pinger socket on FD 20</div><div>2015/08/17 12:51:27.320 kid1| Gadgets.cc(99) authenticateReset: Reset authentication State.</div><div>2015/08/17 12:51:27.320 kid1| Logfile: closing log daemon:/var/log/squid/access.log</div><div>2015/08/17 12:51:27.320 kid1| Logfile Daemon: closing log daemon:/var/log/squid/access.log</div><div>2015/08/17 12:51:27.320 kid1| Startup: Initializing Authentication Schemes ...</div><div>2015/08/17 12:51:27.320 kid1| Startup: Initialized Authentication Scheme 'basic'</div><div>2015/08/17 12:51:27.320 kid1| Startup: Initialized Authentication Scheme 'digest'</div><div>2015/08/17 12:51:27.320 kid1| Startup: Initialized Authentication Scheme 'negotiate'</div><div>2015/08/17 12:51:27.320 kid1| Startup: Initialized Authentication Scheme 'ntlm'</div><div>2015/08/17 12:51:27.320 kid1| Startup: Initialized Authentication.</div><div>2015/08/17 12:51:27.320 kid1| RegexData.cc(303) aclParseRegexList: aclParseRegexList: new Regex line or file</div><div>2015/08/17 12:51:27.320 kid1| RegexData.cc(194) compileOptimisedREs: compileOptimisedREs: -i</div><div>2015/08/17 12:51:27.320 kid1| RegexData.cc(218) compileOptimisedREs: compileOptimisedREs: adding RE '^cache_object://'</div><div>2015/08/17 12:51:27.320 kid1| RegexData.cc(208) compileOptimisedREs: compileOptimisedREs: +i</div><div>2015/08/17 12:51:27.320 kid1| RegexData.cc(153) compileRE: compileRE: compiled '(^cache_object://)' with flags 11</div><div>2015/08/17 12:51:27.320 kid1| RegexData.cc(218) compileOptimisedREs: compileOptimisedREs: adding RE '^https?://[^/]+/squid-internal-mgr/'</div><div>2015/08/17 12:51:27.320 kid1| RegexData.cc(153) compileRE: compileRE: compiled '(^https?://[^/]+/squid-internal-mgr/)' with flags 9</div><div>2015/08/17 12:51:27.320 kid1| RegexData.cc(261) compileOptimisedREs: compileOptimisedREs: 2 REs are optimised into one RE.</div><div>2015/08/17 12:51:27.320 kid1| Processing Configuration File: /etc/squid/squid.conf (depth 0)</div><div>2015/08/17 12:51:27.320 kid1| Disabling Authentication on port <a href="http://0.0.0.0:3129">0.0.0.0:3129</a> (TPROXY enabled)</div><div>2015/08/17 12:51:27.320 kid1| Disabling Authentication on port <a href="http://0.0.0.0:3130">0.0.0.0:3130</a> (TPROXY enabled)</div><div>2015/08/17 12:51:27.320 kid1| Initializing https proxy context</div><div>2015/08/17 12:51:27.320 kid1| Initializing https_port <a href="http://0.0.0.0:3130">0.0.0.0:3130</a> SSL context</div><div>2015/08/17 12:51:27.320 kid1| Using certificate in /etc/squid/ssl/squid.pem</div><div>2015/08/17 12:51:27.330 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: config</div><div>2015/08/17 12:51:27.330 kid1| main.cc(803) mainReconfigureFinish: running RegisteredRunner::syncConfig</div><div>2015/08/17 12:51:27.331 kid1| errorpage.cc(312) tryLoadTemplate: wildcard fallback errors not coded yet.</div><div>2015/08/17 12:51:27.331 kid1| Logfile: opening log daemon:/var/log/squid/access.log</div><div>2015/08/17 12:51:27.331 kid1| Logfile Daemon: opening log /var/log/squid/access.log</div><div>2015/08/17 12:51:27.331 kid1| Squid plugin modules loaded: 0</div><div>2015/08/17 12:51:27.331 kid1| Adaptation support is off.</div><div>2015/08/17 12:51:27.332 kid1| Config.cc(211) FinalizeEach: Initialized 0 message adaptation services</div><div>2015/08/17 12:51:27.332 kid1| Config.cc(211) FinalizeEach: Initialized 0 message adaptation service groups</div><div>2015/08/17 12:51:27.332 kid1| Config.cc(211) FinalizeEach: Initialized 0 message adaptation access rules</div><div>2015/08/17 12:51:27.332 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: store_log_tags</div><div>2015/08/17 12:51:27.332 kid1| Store logging disabled</div><div>2015/08/17 12:51:27.332 kid1| dns_internal.cc(1534) dnsInit: idnsInit: attempt open DNS socket to: 0.0.0.0</div><div>2015/08/17 12:51:27.332 kid1| DNS Socket created at 0.0.0.0, FD 11</div><div>2015/08/17 12:51:27.332 kid1| Adding nameserver 8.8.8.8 from squid.conf</div><div>2015/08/17 12:51:27.332 kid1| Adding nameserver 8.8.4.4 from squid.conf</div><div>2015/08/17 12:51:27.332 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: idns</div><div>2015/08/17 12:51:27.332 kid1| Format.cc(64) parse: got definition '%>a/%>A %un %>rm myip=%la myport=%lp'</div><div>2015/08/17 12:51:27.332 kid1| Format.cc(64) parse: got definition '%>a/%>A %un %>rm myip=%la myport=%lp'</div><div>2015/08/17 12:51:27.332 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: external_acl</div><div>2015/08/17 12:51:27.332 kid1| wccp.cc(112) wccpConnectionOpen: WCCPv1 disabled.</div><div>2015/08/17 12:51:27.332 kid1| wccp2.cc(960) wccp2ConnectionOpen: WCCPv2 Disabled. No IPv4 Router(s) configured.</div><div>2015/08/17 12:51:27.332 kid1| AsyncCall.cc(26) AsyncCall: The AsyncCall clientListenerConnectionOpened constructed, this=0x2a0ea40 [call62031]</div><div>2015/08/17 12:51:27.333 kid1| AsyncCall.cc(93) ScheduleCall: StartListening.cc(59) will call clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3128">0.0.0.0:3128</a> remote=[::] FD 12 flags=9, err=0, HTTP Socket port=0x2a0eaa0) [call62031]</div><div>2015/08/17 12:51:27.333 kid1| AsyncCall.cc(26) AsyncCall: The AsyncCall clientListenerConnectionOpened constructed, this=0x2a0eb50 [call62033]</div><div>2015/08/17 12:51:27.333 kid1| AsyncCall.cc(93) ScheduleCall: StartListening.cc(59) will call clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3129">0.0.0.0:3129</a> remote=[::] FD 16 flags=25, err=0, HTTP Socket port=0x2a0ebb0) [call62033]</div><div>2015/08/17 12:51:27.333 kid1| AsyncCall.cc(26) AsyncCall: The AsyncCall clientListenerConnectionOpened constructed, this=0x2a0ec60 [call62035]</div><div>2015/08/17 12:51:27.333 kid1| AsyncCall.cc(93) ScheduleCall: StartListening.cc(59) will call clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3130">0.0.0.0:3130</a> remote=[::] FD 20 flags=25, err=0, HTTPS Socket port=0x2a0ecc0) [call62035]</div><div>2015/08/17 12:51:27.333 kid1| HTCP Disabled.</div><div>2015/08/17 12:51:27.333 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: netdb</div><div>2015/08/17 12:51:27.333 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: asndb</div><div>2015/08/17 12:51:27.333 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: carp</div><div>2015/08/17 12:51:27.333 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: userhash</div><div>2015/08/17 12:51:27.333 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: sourcehash</div><div>2015/08/17 12:51:27.333 kid1| cache_manager.cc(67) registerProfile: skipped duplicate profile: server_list</div><div>2015/08/17 12:51:27.333 kid1| Finished loading MIME types and icons.</div><div>2015/08/17 12:51:27.343 kid1| AsyncCallQueue.cc(55) fireNext: entering clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3128">0.0.0.0:3128</a> remote=[::] FD 12 flags=9, err=0, HTTP Socket port=0x2a0eaa0)</div><div>2015/08/17 12:51:27.343 kid1| AsyncCall.cc(38) make: make call clientListenerConnectionOpened [call62031]</div><div>2015/08/17 12:51:27.343 kid1| Accepting HTTP Socket connections at local=<a href="http://0.0.0.0:3128">0.0.0.0:3128</a> remote=[::] FD 12 flags=9</div><div>2015/08/17 12:51:27.343 kid1| AsyncCallQueue.cc(57) fireNext: leaving clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3128">0.0.0.0:3128</a> remote=[::] FD 12 flags=9, err=0, HTTP Socket port=0x2a0eaa0)</div><div>2015/08/17 12:51:27.343 kid1| AsyncCallQueue.cc(55) fireNext: entering clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3129">0.0.0.0:3129</a> remote=[::] FD 16 flags=25, err=0, HTTP Socket port=0x2a0ebb0)</div><div>2015/08/17 12:51:27.343 kid1| AsyncCall.cc(38) make: make call clientListenerConnectionOpened [call62033]</div><div>2015/08/17 12:51:27.343 kid1| Accepting TPROXY intercepted HTTP Socket connections at local=<a href="http://0.0.0.0:3129">0.0.0.0:3129</a> remote=[::] FD 16 flags=25</div><div>2015/08/17 12:51:27.343 kid1| AsyncCallQueue.cc(57) fireNext: leaving clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3129">0.0.0.0:3129</a> remote=[::] FD 16 flags=25, err=0, HTTP Socket port=0x2a0ebb0)</div><div>2015/08/17 12:51:27.343 kid1| AsyncCallQueue.cc(55) fireNext: entering clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3130">0.0.0.0:3130</a> remote=[::] FD 20 flags=25, err=0, HTTPS Socket port=0x2a0ecc0)</div><div>2015/08/17 12:51:27.343 kid1| AsyncCall.cc(38) make: make call clientListenerConnectionOpened [call62035]</div><div>2015/08/17 12:51:27.343 kid1| Accepting TPROXY intercepted SSL bumped HTTPS Socket connections at local=<a href="http://0.0.0.0:3130">0.0.0.0:3130</a> remote=[::] FD 20 flags=25</div><div>2015/08/17 12:51:27.343 kid1| AsyncCallQueue.cc(57) fireNext: leaving clientListenerConnectionOpened(local=<a href="http://0.0.0.0:3130">0.0.0.0:3130</a> remote=[::] FD 20 flags=25, err=0, HTTPS Socket port=0x2a0ecc0)</div><div><br></div><div>Do I have to setup local DNS server? the internal DNS of squid can't handle https in Tproxy? </div><div>What's missing to have name resolution in https traffic as its showed in http traffic?</div><div><br></div><div>Thanks for your time helping me.</div></div>