I have redis and redis sentinel production clusters running on IPv4 with other clients/external software connecting to them, the issue rose when I needed to change the internal traffic to IPv6 (cost management, traffic via IPv6 costs less).

Main idea was to use bind as for redis.conf and sentinel.conf, add "bind ::" , set-up master-replica (slave) relations to IPv6 via redis-cli (in simple cluster, one master and two replicas) - so that all communications would happen via IPv6. As our clients need to connect to redis and redis-sentinel via IPv4, after changes all internal IPs and external IPs redis has concerted to IPv6, connections all working via IPv6, I then rebind redis and sentinels to "bind 0.0.0.0 ::" as to have all open connections and sockets open to IPv4 as well. In example below:

redis.conf: bind 0.0.0.0 :: replicaof …someIPv6 ip…

sentinel.conf: (cluster of 3) sentinel monitor main IPv6 (master) …

sentinel known-sentinel main IPv6(replica1) 26379 …. sentinel known-sentinel main IPv6(replica2) 26379 ….

sentinel known-replica main IPv6(replica1) 6379 …. sentinel known-replica main IPv6(replica2) 6379 ….

After everything ss -nlp shows listen on IPv4 and IPv6.

In theory, redis and sentinel should be able to provide everything the same as there would be IPv4 ip's in .conf files as the bind is made for both IP versions. Ping4 and Ping6 works the same. But for some reason, some our clients face issues like "dial tcp [IPv6]:6379: connect: network is unreachable". I am guessing because our apps connects to sentinels to get redis addresses from them and as they have IPv6 they provide that IP (v6) to our clients/software IPv6? Is it possible to set up redis and sentinel so that interally they would communicate via IPv6, but outside clients could connect/reach via both IPv4 and IPv6? Maybe I am missing something? Hope you Redis gods can help me. Cheers