On Sat, Dec 23, 2017 at 11:40:57AM +0100, Mischa wrote:
> Hi All,
> 
> Since OpenBSD 6.2, just confirmed this in the latest snapshot 
> (GENERIC.MP#305) as well, for some reason relayd stops processing traffic and 
> starts flooding the log file with the following message:
> 
> Dec 23 11:19:11 lb2 relayd[22515]: rsae_send_imsg: poll timeout
> Dec 23 11:19:12 lb2 relayd[52110]: rsae_send_imsg: poll timeout
> Dec 23 11:19:12 lb2 relayd[69641]: rsae_send_imsg: poll timeout
> Dec 23 11:19:12 lb2 relayd[22515]: rsae_send_imsg: poll timeout
> [snip]
> Dec 23 11:19:17 lb2 relayd[69641]: rsae_send_imsg: poll timeout
> Dec 23 11:19:18 lb2 relayd[22515]: rsae_send_imsg: poll timeout
> Dec 23 11:19:18 lb2 relayd[52110]: rsae_send_imsg: poll timeout
> Dec 23 11:19:18 lb2 relayd[69641]: rsae_send_imsg: poll timeout
> ...etc...
> 
> Restarting the daemon "fixes" the problem.
> Not sure how to trouble shoot this but I am able to reproduce this 
> consistently by pointing SSLLabs towards relayd.
> Would be great to get some pointers.
> 

I have seen this as well on our production systems. This is a problem in
the privsep part of the TLS code. I could not do more testing yet but my
assumption is that a new option / feature is freaking this code out.

-- 
:wq Claudio


> Anonymised config below:
> # relayd.conf
> local_v4 = "xxx"
> local_v6 = "xxx"
> table <localhost> { 127.0.0.1 }
> 
> www1_addr_v4 = "xxx"
> www1_addr_v6 = "xxx"
> table <www1hosts> { xxx }
> 
> www3_addr_v4 = "xxx"
> www3_addr_v6 = "xxx"
> table <www3hosts> { xxx }
> 
> cust1_addr_v4 = "xxx"
> cust1_addr_v6 = "xxx"
> 
> cust2_addr_v4 = "xxx"
> cust3_addr_v4 = "xxx"
> cust4_addr_v4 = "xxx"
> table <cust_3hosts> { xxx }
> table <cust_3hosts_fallback> { xxx }
> table <cust4_hosts> { xxx }
> 
> cust5_addr_v4 = "xxx"
> table <cust5_hosts> { xxx }
> 
> http protocol httpfilter_default {
>         match request header remove "Proxy"
>         match request header append "X-Forwarded-For" value "$REMOTE_ADDR"
>         match request header append "X-Forwarded-By" value 
> "$SERVER_ADDR:$SERVER_PORT"
>         match response header set "Server" value "Sever"
>         match response header set "X-Powered-By" value "Power"
>         tcp { no splice }
> }
> http protocol httpsfilter_default {
>         match request header remove "Proxy"
>         match request header set "X-ClientIP" value "$REMOTE_ADDR"
>         match request header append "X-Forwarded-For" value "$REMOTE_ADDR"
>         match request header append "X-Forwarded-By" value 
> "$SERVER_ADDR:$SERVER_PORT"
>         match response header set "Strict-Transport-Security" value 
> "max-age=31536000"
>         match response header set "Server" value "Sever"
>         match response header set "X-Powered-By" value "Power"
>         match request quick header "Host" value "images.webcam.nl" forward to 
> <imageshosts>
>         tcp { no splice }
>         tls { no client-renegotiation }
> }
> 
> http protocol httpfilter {
>         match request header remove "Proxy"
>         match request header append "X-Forwarded-For" value "$REMOTE_ADDR"
>         match request header append "X-Forwarded-By" value 
> "$SERVER_ADDR:$SERVER_PORT"
>         match response header set "Content-Security-Policy" value 
> "default-src high5.nl; script-src https://high5.nl http://www.w3.org/; 
> style-src 'self' 'unsafe-inline'; img-src 'self'"
>         match response header set "Server" value "Sever"
>         match response header set "X-Powered-By" value "Power"
>         match response header set "X-Frame-Options" value "SAMEORIGIN"
>         match response header set "X-Xss-Protection" value "1; mode=block"
>         match response header set "X-Content-Type-Options" value "nosniff"
>         match request quick header "Host" value "*xxx*" forward to <www1hosts>
>         match request quick header "Host" value "*xxx*" forward to <www1hosts>
>         tcp { no splice }
> }
> http protocol httpsfilter {
>         return error
>         match request header remove "Proxy"
>         match request header set "X-ClientIP" value "$REMOTE_ADDR"
>         match request header append "X-Forwarded-For" value "$REMOTE_ADDR"
>         match request header append "X-Forwarded-By" value 
> "$SERVER_ADDR:$SERVER_PORT"
>         match response header set "Strict-Transport-Security" value 
> "max-age=31536000"
>         match response header set "Content-Security-Policy" value 
> "default-src high5.nl; script-src https://high5.nl http://www.w3.org/; 
> style-src 'self' 'unsafe-inline'; img-src 'self'"
>         match response header set "Server" value "Sever"
>         match response header set "X-Powered-By" value "Power"
>         match response header set "X-Frame-Options" value "SAMEORIGIN"
>         match response header set "X-Xss-Protection" value "1; mode=block"
>         match response header set "X-Content-Type-Options" value "nosniff"
>         tcp { no splice }
>         tls { no client-renegotiation }
> }
> relay default {
>         listen on $local_v4 port 80
>         listen on $local_v6 port 80
>         protocol httpfilter_default
>         forward to <localhost> port 8080
> }
> relay default_redirect {
>         listen on $cust2_addr_v4 port 80
>         listen on $cust3_addr_v4 port 80
>         listen on $cust4_addr_v4 port 80
>         listen on $cust5_addr_v4 port 80
>         listen on $cust1_addr_v4 port 80
>         listen on $cust1_addr_v6 port 80
>         protocol httpfilter_default
>         forward to <localhost> port 8081
> }
> relay default_redirect_tls {
>         listen on $cust4_addr_v4 port 443 tls
>         protocol httpsfilter_default
>         forward to <localhost> port 8081
> }
> relay www1 {
>         listen on $www1_addr_v4 port 80
>         listen on $www1_addr_v6 port 80
>         protocol httpfilter
>         forward to <localhost> port 8081
>         forward to <www1hosts> port 80
> }
> relay www1_tls {
>         listen on $www1_addr_v4 port 443 tls
>         listen on $www1_addr_v6 port 443 tls
>         protocol httpsfilter
>         forward to <www1hosts> port 80 mode roundrobin check http "/" host 
> www1 code 200
>         #forward to <comic> port 80
> }
> relay www3 {
>         listen on $www3_addr_v4 port 80
>         listen on $www3_addr_v6 port 80
>         forward to <www3hosts> port 80
> }
> relay www3_tls {
>         listen on $www3_addr_v4 port 443 tls
>         listen on $www3_addr_v6 port 443 tls
>         forward with tls to <www3hosts> port 443
> }
> relay cust2_tls {
>         listen on $cust2_addr_v4 port 443 tls
>         protocol httpsfilter_default
>         forward to <cust2_hosts> port 80 check http "/" host cust2 code 200
>         forward to <cust2_hosts_fallback> port 80 check http "/" host cust2 
> code 200
>         forward to <cust4_hosts> port 80
> }
> relay cust3_tls {
>         listen on $cust3_addr_v4 port 443 tls
>         protocol httpsfilter_default
>         forward to <cust3_hosts> port 80 check http "/" host cust3 code 200
>         forward to <cust3_hosts_fallback> port 80 check http "/" host cust3 
> code 200
> }
> relay cust5_tls {
>         listen on $cust5_addr_v4 port 443 tls
>         protocol httpsfilter_default
>         forward to <cust5_hosts> port 80
> }
> 
> Mischa
> 

Reply via email to