@Arsenal Let's review some things over PM first.
The QOS engine/signatures should be able to tell the difference between content downloads from Steam or game play packets. All content downloads come from *.steamcontent.com on port 80, right? That should be easy to add to the rules.
It's what I did with my Untangle box because the ASUS router would put game downloads in the GAMING category and kill everything else.
I wish it was that simple.
Both iptables and tc works on sorting packets by their packet headers. The packet header only contains the server ip that the dns lookup initially resolved and does not retain the user input domain name anywhere. The user input domain name was only used to perform that initial DNS lookup.
It would be great if I could intercept all dns lookups and then make a temporary iptables or tc rule for ip returned from that DNS result, if that initial DNS query matched a rule like yours (half of this is possible in ip tables to my knowledge, just not a new rule based on DNS result)
Besides that, another option would be running a whois on all *.steamcontent.com domains and compiling a list of all used steam server IP's. This method is messy since steam's public IP ranges could change overtime. Also it probably wouldn't work as the content is most likely coming from a CDN mirror instead steam server.
I'm all ears if there is already a way to temporary mark all packets matching results from a returned IP from a DNS query, then deleting that rule upon connection expiration.
Wonder how your other box has it implemented for QOS. I will look into that brand if I need a new router.
Just thinking outloud, the URL keyword blacklist filter does a iptables string match in a chain that only contains DNS queries. It then drops any dns query that matches that blacklisted string match.
If I were to apply a connection mark and accept for the upon a DNS string match instead of a drop, would the connmark include subsequent traffic from the IP from that DNS request? My guess is no.
Not sure if client <-> dns server then client <-> requested server treated as one connection or two different connections in the connection tracker if I were to perform and filter on a connmark. I should really read more about ip tables or do some experimenting!!
Logically it sounds like two connections in connection tracker so a conmark on a matvhing DNS query won't help exhibit the behavior I want.
Any other ideas?
Thanks
@FreshJR for the great script and your helpful support. I would like to extend my thanks to
@Vexira and
@Jack Yaz for their amazing work with me to help get the script working.
I have a question regarding Mssfix on Astrill Applet client, should I enable it as (1400 the default)" with the script and QoS working, or should I disable it with value (1500)?
Mssfix value has nothing to do with QOS. Use a value that works for your clients. I am not knowledgeable in that area.