Hi,
Could you help to find out why passthrough does not work with redis service.
I have the following configuration:
traefik static config:
entryPoints:
redisacl:
address: ":16100"
docker-compose (exposed port 16379 and labeled traefik entrypoint 16100 at the same time for the debugging purpose):
testredis:
image: redis:7.0.4
ports:
- 16379:6379
hostname: testredis
deploy:
labels:
# Add labels for Traefik loadbalancer
- traefik.enable=true
- traefik.tcp.routers.testredis.rule=HostSNI(`redisssl.test.lan`)
- traefik.tcp.routers.testredis.service=testredis
- traefik.tcp.routers.testredis.entrypoints=redisacl
- traefik.tcp.services.testredis.loadbalancer.server.port=6379
- traefik.tcp.routers.testredis.tls=true
- traefik.tcp.routers.testredis.tls.passthrough=true
I've tried
traefik.tcp.routers.testredis.rule=HostSNI(`*`)
as well.
I can see the TCP Service and Routers in the Traefik dashboard.
Ports are open:
nc -zv redisssl.test.lan 16379
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connected to xxx.xxx.xxx.35:16100.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
nc -zv redisssl.test.lan 16100
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connected to xxx.xxx.xxx.35:16379.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
But connection to the redis via port 16100 has failed.
redis-cli --sni redisssl.test.lan -h redisssl.test.lan -p 16379 --tls --cacert /usr/local/etc/redis/tls/ca.crt --cert /usr/local/etc/redis/tls/redis.crt --key /usr/local/etc/redis/tls/redis.key
OK
redis-cli --sni redisssl.test.lan -h redisssl.test.lan -p 16100 --tls --cacert /usr/local/etc/redis/tls/ca.crt --cert /usr/local/etc/redis/tls/redis.crt --key /usr/local/etc/redis/tls/redis.key
Could not connect to Redis at redisssl.test.lan:16100: SSL_connect failed: Success
From the remote windows client the following error has appeared: Error: Protocol error, got "H" as reply type byte
traefik version
Version: 2.8.3
Codename: vacherin
Go version: go1.19
Built: 2022-08-12T14:24:34Z
OS/Arch: linux/amd64