<div dir="ltr">Dear all,<div><br></div><div>This isn't entirely a squid question but more like a "transparent proxying" question (which I'm hoping you guys will be able to help me with)...</div><div><br></div><div>As I started playing around with transparent ssl proxying, I learned that Chrome uses an alternate communication (UDP based) protocol called QUIC.</div><div><br></div><div>When the browser uses that protocol, Squid obviously isn't used as a proxy, so I'm trying to block QUIC traffic to force the browsers to fall back to HTTP/HTTPS.</div><div><br></div><div>At first, I found out that QUIC communicates over UDP 443 but, since blocking traffic from going out on that port didn't seem to work, I decided to use <a href="https://technet.microsoft.com/en-us/sysinternals/bb897437.aspx">TCPView</a> (on the client computer) and look at tcpdump to try and figure out what other ports does it use...</div><div><br></div><div>After looking at TCPView, I was able to see traffic going out on:</div><div>tcp 80</div><div>tcp 443</div><div>tcp 5228</div><div>udp 80<br></div><div>udp 443</div><div>udp 5353<br></div><div><br></div><div>...so I tried to block traffic going out on those ports:</div><div><div><div>root@appliance:~# cat /etc/iptables/rules.v4 | grep -i forward</div><div>:FORWARD DROP [41:4010]</div><div>-A FORWARD -i br0 -p tcp -m tcp --dport 5228 -j REJECT --reject-with icmp-port-unreachable</div><div>-A FORWARD -i br0 -p udp -m udp --dport 5353 -j REJECT --reject-with icmp-port-unreachable</div><div>-A FORWARD -i br0 -p udp -m udp --dport 80 -j REJECT --reject-with icmp-port-unreachable</div><div>-A FORWARD -i br0 -p udp -m udp --dport 443 -j REJECT --reject-with icmp-port-unreachable</div></div><div>root@appliance:~# iptables -L</div><div>Chain INPUT (policy ACCEPT)</div><div>target     prot opt source               destination</div><div><br></div><div>Chain FORWARD (policy ACCEPT)</div><div>target     prot opt source               destination</div><div>REJECT     tcp  --  anywhere             anywhere             tcp dpt:5228 reject-with icmp-port-unreachable</div><div>REJECT     udp  --  anywhere             anywhere             udp dpt:mdns reject-with icmp-port-unreachable</div><div>REJECT     udp  --  anywhere             anywhere             udp dpt:http reject-with icmp-port-unreachable</div><div>REJECT     udp  --  anywhere             anywhere             udp dpt:https reject-with icmp-port-unreachable</div><div><br></div><div>Chain OUTPUT (policy ACCEPT)</div><div>target     prot opt source               destination</div><div>root@appliance:~# iptables -L -n -v</div><div>Chain INPUT (policy ACCEPT 6182 packets, 2536K bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div><br></div><div>Chain FORWARD (policy ACCEPT 1343 packets, 160K bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div>   18   912 REJECT     tcp  --  br0    *       <a href="http://0.0.0.0/0">0.0.0.0/0</a>            <a href="http://0.0.0.0/0">0.0.0.0/0</a>            tcp dpt:5228 reject-with icmp-port-unreachable</div><div>  100 30714 REJECT     udp  --  br0    *       <a href="http://0.0.0.0/0">0.0.0.0/0</a>            <a href="http://0.0.0.0/0">0.0.0.0/0</a>            udp dpt:5353 reject-with icmp-port-unreachable</div><div>    0     0 REJECT     udp  --  br0    *       <a href="http://0.0.0.0/0">0.0.0.0/0</a>            <a href="http://0.0.0.0/0">0.0.0.0/0</a>            udp dpt:80 reject-with icmp-port-unreachable</div><div>   73 87052 REJECT     udp  --  br0    *       <a href="http://0.0.0.0/0">0.0.0.0/0</a>            <a href="http://0.0.0.0/0">0.0.0.0/0</a>            udp dpt:443 reject-with icmp-port-unreachable</div><div><br></div><div>Chain OUTPUT (policy ACCEPT 6913 packets, 2386K bytes)</div><div> pkts bytes target     prot opt in     out     source               destination</div><div>root@appliance:~#</div></div><div><br></div><div>The problem is that, although the rules seem to successfully be triggered, the only way I can successfully BLOCK QUIC traffic and make the browser fallback to HTTP/HTTPS is by setting a default FORWARD policy to DROP:</div><div><b>iptables -P FORWARD DROP</b></div><div><br></div><div>What I conclude from this is that there MUST be some more FORWARD traffic being originated at Chrome that I have no idea how to catch and filter.</div><div><br></div><div>So my question is: <b>how can I completely block QUIC so I can guarantee my traffic will always be redirected to Squid?</b></div><div><br></div><div>Thanks in advance,</div><div>Luis</div></div>