Skip to content

Commit 34af343

Browse files
committed
Move TLS allowlist check before DNS resolution
Reject blocked domains before do-resolve to avoid unnecessary DNS queries for connections that will be denied.
1 parent 183a63a commit 34af343

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

docker/files/haproxy.cfg.template

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -67,20 +67,20 @@ frontend outbound_proxy
6767
tcp-request content reject if is_tls !has_sni
6868

6969
# ---------------------------------------------------------
70-
# 3. TLS DNS resolution & destination override
70+
# 3. TLS allowlist check (before DNS to avoid resolving blocked domains)
71+
# ---------------------------------------------------------
72+
tcp-request content set-var(sess.reason) str(not-allowed) if is_tls has_sni !is_https_allowed
73+
tcp-request content reject if is_tls has_sni !is_https_allowed
74+
75+
# ---------------------------------------------------------
76+
# 4. TLS DNS resolution, destination override & accept
7177
# ---------------------------------------------------------
7278
tcp-request content do-resolve(sess.actual_ip,my_dns) var(sess.sni) if is_tls has_sni
7379
tcp-request content set-var(sess.reason) str(dns-failed) if is_tls has_sni ! { var(sess.actual_ip) -m found }
7480
tcp-request content reject if is_tls has_sni ! { var(sess.actual_ip) -m found }
7581
tcp-request content set-dst var(sess.actual_ip) if is_tls has_sni
76-
77-
# ---------------------------------------------------------
78-
# 4. TLS accept/reject
79-
# ---------------------------------------------------------
80-
tcp-request content set-var(sess.decision) str(${HAPROXY_DECISION_LABEL}) if is_tls has_sni is_https_allowed
81-
tcp-request content accept if is_tls has_sni is_https_allowed
82-
tcp-request content set-var(sess.reason) str(not-allowed) if is_tls has_sni !is_https_allowed
83-
tcp-request content reject if is_tls has_sni !is_https_allowed
82+
tcp-request content set-var(sess.decision) str(${HAPROXY_DECISION_LABEL}) if is_tls has_sni
83+
tcp-request content accept if is_tls has_sni
8484

8585
# ---------------------------------------------------------
8686
# 5. Non-TLS DNS-routed → HTTP backend

0 commit comments

Comments
 (0)