{
  "schema_version": 2,
  "id": "operate/rs/networking/multi-ip-ipv6",
  "title": "Manage IP addresses",
  "url": "https://redis.io/docs/latest/operate/rs/networking/multi-ip-ipv6/",
  "summary": "Information and requirements for using multiple IP addresses or IPv6 addresses with Redis Software.",
  "tags": [
    "docs",
    "operate",
    "rs"
  ],
  "last_updated": "2026-09-24T10:14:24+01:00",
  "page_type": "content",
  "content_hash": "ad1019bcc69b9c2d3a557530b12522a25e4270138a5baa48d0a9c868dafe5e18",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "Redis Software supports servers, instances, and VMs with\nmultiple IPv4 or IPv6 addresses."
    },
    {
      "id": "traffic-overview",
      "title": "Traffic overview",
      "role": "content",
      "text": "Redis Software traffic is divided into internal traffic and external traffic:\n\n- \"Internal traffic\" refers to internal cluster communications, such as communications between the nodes for cluster management.\n\n- \"External traffic\" refers to communications between clients and databases and connections to the Cluster Manager UI.\n\nWhen only one IP address exists on a machine that serves as a Redis Software node, it is used for both internal and external traffic."
    },
    {
      "id": "multiple-ip-addresses",
      "title": "Multiple IP addresses",
      "role": "content",
      "text": "During node configuration on a machine with multiple IP addresses, you must assign one address for internal traffic and one or more other addresses for external traffic.\n\nIf the cluster uses IPv4 for internal traffic, all communication between cluster nodes uses IPv4 addresses. If the cluster uses IPv6 for internal traffic, all communication between cluster nodes uses IPv6 addresses.\n\nTo update IP address configuration after cluster setup, see [Change internal IP address](#change-internal-ip-address) or [Configure external IP addresses](#configure-external-ip-addresses)."
    },
    {
      "id": "enable-ipv6-for-internal-traffic",
      "title": "Enable IPv6 for internal traffic",
      "role": "content",
      "text": "IPv6 for internal communication is supported only for new clusters with Redis Software version 7.4.2 or later.\n\nIf the server has only IPv6 interfaces, IPv6 is automatically used for internal and external traffic. Otherwise, internal traffic uses IPv4 by default. \n\nTo use IPv6 for internal traffic on a machine with both IPv4 and IPv6 interfaces, set `use_internal_ipv6` to `true` when you create a cluster using the [bootstrap REST API request](https://redis.io/docs/latest/operate/rs/references/rest-api/requests/bootstrap#post-bootstrap):\n\n[code example]\n\nWhen other IPv6 nodes join a cluster that has `use_internal_ipv6` enabled, they automatically use IPv6 for internal traffic. Do not manually set `use_internal_ipv6` when joining a node to an existing IPv6 cluster, or a `NodeBootstrapError` can occur if the values do not match.\n\nIf you try to add a node without an IPv6 interface to a cluster that has `use_internal_ipv6` enabled, a `NodeBootstrapError` occurs.\n\nThe host file `/etc/hosts` on each node in the cluster must include the following entry:\n\n[code example]"
    },
    {
      "id": "change-internal-ip-address",
      "title": "Change internal IP address",
      "role": "content",
      "text": "Before you change an internal IP address, consider the following:\n\n- Verify the address is valid and bound to an active interface on the node. Failure to do so prevents the node from coming back online and rejoining the cluster.\n\n- Joining a node that only has IPv4 network interfaces to a master node with IPv6 enabled causes a `NodeBootstrapError`.\n\n- Joining a node that only has IPv6 network interfaces to a master node that does not have IPv6 enabled causes a `NodeBootstrapError`.\n\n- You cannot change the internal address from IPv4 to IPv6 or IPv6 to IPv4 in a running cluster. You can only change the internal address within the same protocol as the cluster.\n\nIf you need to update the internal IP address in the OS, one option is to remove that node from the cluster, change the IP address, and then add the node back into the cluster.\n\nAlternatively, you can use the following steps to update a node's internal IP address without removing it from the cluster:\n\n1. Turn the node into a replica using [`rladmin`](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rladmin/node/enslave):\n\n    [code example]\n\n1. Deactivate the `rlec_supervisor` service on the node:\n\n    [code example]\n\n1. Restart the node.\n\n1. Follow the operating system vendor's instructions to change the node's IP address.\n\n1. From a different cluster node, use [`rladmin node addr set`](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rladmin/node/addr) to update the first node's IP address:\n\n    [code example]\n\n1. Enable the `rlec_supervisor` service on the node:\n\n    [code example]\n\n1. Restart `rlec_supervisor` or restart the node.\n\n\n    [code example]\n\n1. Verify the node rejoined the cluster:\n\n    [code example]\n\nRepeat this procedure for other cluster nodes to change their internal IP addresses."
    },
    {
      "id": "configure-external-ip-addresses",
      "title": "Configure external IP addresses",
      "role": "configuration",
      "text": "You can configure external addresses that are not bound to an active interface, but are otherwise mapped or configured to route traffic to the node (such as AWS Elastic IPs or a load balancer VIP).\n\nYou can use [rladmin node external_addr](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rladmin/node/external-addr) to change a node's external IP addresses.\n\nAdd an external IP address:\n\n[code example]\n\nSet one or more external IP addresses:\n\n[code example]\n\n\nRemove an external IP address:\n\n[code example]\n\n> [!NOTE]\n> While [joining a new node to a\n> cluster](https://redis.io/docs/latest/operate/rs/clusters/add-node)\n> during the node bootstrap process,\n> when prompted to provide an IP of an existing node in the cluster,\n> if you use the node's IP, provide the node's internal IP address."
    },
    {
      "id": "known-limitations",
      "title": "Known limitations",
      "role": "content",
      "text": "- Using IPv6 for internal traffic is supported only for new clusters running Redis Software version 7.4.2 or later.\n\n- Changing an existing cluster's internal traffic from IPv4 to IPv6 is not supported.\n\n- All nodes must use the same protocol for internal traffic.\n\n- If a Redis Software node's host machine has both IPv4 and IPv6 addresses, internal communication within the node initially uses IPv4 until the bootstrap process finishes."
    }
  ],
  "examples": [
    {
      "id": "enable-ipv6-for-internal-traffic-ex0",
      "language": "sh",
      "code": "POST /v1/bootstrap/create_cluster\n{\n    \"action\": \"create_cluster\",\n    \"cluster\": { \n        \"name\": \"cluster.fqdn\" \n    },\n    \"credentials\": {\n       \"username\": \"admin_username\",\n       \"password\": \"admin_password\"\n    },\n    \"node\": {\n       \"identity\": {\n          \"addr\": \"2001:DB8::/32\",\n          \"external_addr\": [\"2001:0db8:85a3:0000:0000:8a2e:0370:7334\"],\n          \"use_internal_ipv6\": true\n       },\n    },\n    ...\n}",
      "section_id": "enable-ipv6-for-internal-traffic"
    },
    {
      "id": "enable-ipv6-for-internal-traffic-ex1",
      "language": "sh",
      "code": "::1 localhost",
      "section_id": "enable-ipv6-for-internal-traffic"
    },
    {
      "id": "change-internal-ip-address-ex0",
      "language": "sh",
      "code": "rladmin node <ID> enslave demote_node",
      "section_id": "change-internal-ip-address"
    },
    {
      "id": "change-internal-ip-address-ex1",
      "language": "sh",
      "code": "systemctl disable rlec_supervisor",
      "section_id": "change-internal-ip-address"
    },
    {
      "id": "change-internal-ip-address-ex2",
      "language": "sh",
      "code": "rladmin node <ID> addr set <IP address>",
      "section_id": "change-internal-ip-address"
    },
    {
      "id": "change-internal-ip-address-ex3",
      "language": "sh",
      "code": "systemctl enable rlec_supervisor",
      "section_id": "change-internal-ip-address"
    },
    {
      "id": "change-internal-ip-address-ex4",
      "language": "sh",
      "code": "systemctl start rlec_supervisor",
      "section_id": "change-internal-ip-address"
    },
    {
      "id": "change-internal-ip-address-ex5",
      "language": "sh",
      "code": "rladmin status nodes",
      "section_id": "change-internal-ip-address"
    },
    {
      "id": "configure-external-ip-addresses-ex0",
      "language": "sh",
      "code": "rladmin node <ID> external_addr add <IP address>",
      "section_id": "configure-external-ip-addresses"
    },
    {
      "id": "configure-external-ip-addresses-ex1",
      "language": "sh",
      "code": "rladmin node <ID> external_addr set <IP address 1> <IP address N>",
      "section_id": "configure-external-ip-addresses"
    },
    {
      "id": "configure-external-ip-addresses-ex2",
      "language": "sh",
      "code": "rladmin node <ID> external_addr remove <IP address>",
      "section_id": "configure-external-ip-addresses"
    }
  ]
}
