# How to bind an ipv6 address

**URL:** <https://openziti.discourse.group/t/how-to-bind-an-ipv6-address/4423>\
**Category:** Ziti Overlay\
**Created:** [April 25, 2025, 2:47pm UTC](https://openziti.discourse.group/t/how-to-bind-an-ipv6-address/4423 "2025-04-25T14:47:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rantanplan](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/rantanplan/32/3353_2.png) [@Rantanplan](https://openziti.discourse.group/u/Rantanplan)\
**Post date:** [April 25, 2025, 2:47pm UTC](https://openziti.discourse.group/t/how-to-bind-an-ipv6-address/4423/1 "2025-04-25T14:47:52Z")

</div>

I tried without success to put into the router's config.yml an ipv6 address. My router won't start.

```auto
- binding: edge
  address: tls:1234:5678:1234:5678::1234:port
  options:

```

```auto
 {"arch":"amd64","build-date":"2025-03-28T13:39:47Z","configFile":"config.yml","error":"required value [listeners[1].address] for edge binding was not a valid address","file":"github.com/openziti/ziti/ziti/run/run_router.go:82","func":"github.com/openziti/ziti/ziti/run.(*RouterAction).Run","go-version":"go1.24.1","level":"error","msg":"error loading ziti router config","os":"linux","revision":"6739025d0bd6","time":"2025-04-25T14:46:28.384Z","version":"v1.5.4"}

```

---

<div class="post-metadata">

**Author:** ![qrkourier](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/qrkourier/32/52_2.png) [@qrkourier](https://openziti.discourse.group/u/qrkourier)\
**Post date:** [April 25, 2025, 3:07pm UTC](https://openziti.discourse.group/t/how-to-bind-an-ipv6-address/4423/2 "2025-04-25T15:07:10Z")

</div>

Generally speaking, you must always enclose IPv6 addresses with IP literal brackets to disambiguate colon-separated fields. However, even with correct syntax, I too could not get the controller to bind. I didn't try the router yet. Is the cause apparent to you, @plorenz? If not, I'll raise a GitHub issue, as it's important to have the ability to bind discrete interfaces for redundant advertisements.

```yaml
- binding: edge
  address: tls:[1234:5678:1234:5678::1234]:port
  options:

```

---

<div class="post-metadata">

**Author:** ![Rantanplan](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/rantanplan/32/3353_2.png) [@Rantanplan](https://openziti.discourse.group/u/Rantanplan)\
**Post date:** [April 25, 2025, 3:36pm UTC](https://openziti.discourse.group/t/how-to-bind-an-ipv6-address/4423/3 "2025-04-25T15:36:31Z")

</div>

Unfortunately, Go dislikes this syntax. The brackets do not help.  
I confirm that It is impossible to specify an IPv6 address.  
An IPv4 address pass with no problems.

---

<div class="post-metadata">

**Author:** ![qrkourier](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/qrkourier/32/52_2.png) [@qrkourier](https://openziti.discourse.group/u/qrkourier)\
**Post date:** [April 28, 2025, 1:31pm UTC](https://openziti.discourse.group/t/how-to-bind-an-ipv6-address/4423/4 "2025-04-28T13:31:19Z")

</div>

I worked around this by hosting my servers in Docker containers and publishing only the desired IPv6 address:port combinations, while the applications remained configured to bind 0.0.0.0 (all IPv4 & IPv6 interfaces).

I'll investigate how to configure ziti controller and router to bind a specific IPv6 interface address.

---

<div class="post-metadata">

**Author:** ![qrkourier](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/qrkourier/32/52_2.png) [@qrkourier](https://openziti.discourse.group/u/qrkourier)\
**Post date:** [April 28, 2025, 2:16pm UTC](https://openziti.discourse.group/t/how-to-bind-an-ipv6-address/4423/5 "2025-04-28T14:16:48Z")

</div>

> <https://github.com/openziti/transport/issues/31>
>
> The \`transport.AddressParser\` needs to be adjusted to support ipv6.
