I've been trying to figure out a good way to shape the backup service I use (CrashPlan) with no luck. Here is my current floating rule set from /tmp/rules.debug:
match proto tcp from any to any queue (q3_Default,q6_ACK) label "USER_RULE: Default"
match proto udp from $VOIP to any queue (q7_VoIP) label "USER_RULE: VoIP Equipment"
match proto tcp from any to any port 53 queue (q5_Net,q6_ACK) label "USER_RULE: DNS (TCP)"
match proto udp from any to any port 53 queue (q5_Net) label "USER_RULE: DNS (UDP)"
match inet proto icmp from any to any queue (q5_Net) label "USER_RULE: ICMP"
match proto tcp from any to any port 80 queue (q4_High,q6_ACK) label "USER_RULE: HTTP"
match proto tcp from any to any port 443 queue (q4_High,q6_ACK) label "USER_RULE: HTTPS"
CrashPlan traffic is HTTPS, so it's currently getting put in q4_High as I'd expect but I'd like it to be in q2_Low instead. Really the only HTTPS traffic originating from the host running CP in my network is CrashPlan so I figured I'd just add a floating rule with SRC == <host> && DST_PORT == 443 but this has no effect. Rule set after adding this new rule:
match proto tcp from any to any queue (q3_Default,q6_ACK) label "USER_RULE: Default"
match proto udp from $VOIP to any queue (q7_VoIP) label "USER_RULE: VoIP Equipment"
match proto tcp from any to any port 53 queue (q5_Net,q6_ACK) label "USER_RULE: DNS (TCP)"
match proto udp from any to any port 53 queue (q5_Net) label "USER_RULE: DNS (UDP)"
match inet proto icmp from any to any queue (q5_Net) label "USER_RULE: ICMP"
match proto tcp from any to any port 80 queue (q4_High,q6_ACK) label "USER_RULE: HTTP"
match proto tcp from any to any port 443 queue (q4_High,q6_ACK) label "USER_RULE: HTTPS"
match proto tcp from <LAN IP of Server> to any port 443 queue (q2_Low,q6_ACK) label "USER_RULE: HTTPS for Server"
I recall reading that the last rule to match is the one that's applied, in this case I believe that should be the rule at the bottom. I tried clearing states, rebooting, etc. and it makes no difference. I know the rule is matching traffic properly because:
* if I remove the HTTPS any/any -> q4 rule, the HTTPS traffic from this host ends up in q3/default based on rule 1
* if I remove the TCP any/any ->q3 rule, the HTTPS traffic from this host ends up in q2 as I'd expect
* if I remove the HTTPS any/any, TCP any/any, and HTTPS from server rule the traffic ends up in the default queue (q3), also as I'd expect
I'm guessing this is an ordering issue, but I've tried putting the HTTPS for server rule at the top, checking the "quick" box, etc. and nothing seems to work. Do I have the rule built correctly to catch traffic going from LAN (ip of server)->WAN with a destination port of 443? Thanks.