# What are the breaking changes, from v2 to v3, considering the ClientIP rule?

**URL:** <https://community.traefik.io/t/what-are-the-breaking-changes-from-v2-to-v3-considering-the-clientip-rule/22488>\
**Category:** Traefik v3 (latest)\
**Tags:** docker\
**Created:** [April 29, 2024, 7:21am UTC](https://community.traefik.io/t/what-are-the-breaking-changes-from-v2-to-v3-considering-the-clientip-rule/22488 "2024-04-29T07:21:36Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![nbilalis](https://sea2.discourse-cdn.com/flex020/user_avatar/community.traefik.io/nbilalis/32/8630_2.png) [@nbilalis](https://community.traefik.io/u/nbilalis)\
**Post date:** [April 29, 2024, 7:21am UTC](https://community.traefik.io/t/what-are-the-breaking-changes-from-v2-to-v3-considering-the-clientip-rule/22488/1 "2024-04-29T07:21:36Z")

</div>

I am upgrading from v2 to v3-RC5 and followed the migration guide. Now, when I am running the Traefik container I get:

> error while adding rule Host(`xxx`) && ClientIP(`10.0.0.0/23`, `::1`): error while adding rule ClientIP: unexpected number of parameters; got 2, expected one of [1]

Do I simply remove the , `::1` part? I can't find anything related to this in the docs.

---

<div class="post-metadata">

**Author:** ![bluepuma77](https://avatars.discourse-cdn.com/v4/letter/b/a9adbd/32.png) [@bluepuma77](https://community.traefik.io/u/bluepuma77)\
**Post date:** [April 29, 2024, 8:03am UTC](https://community.traefik.io/t/what-are-the-breaking-changes-from-v2-to-v3-considering-the-clientip-rule/22488/2 "2024-04-29T08:03:52Z")

</div>

A lot of the rule matchers only take a single argument starting with v3, so you would need to use

```auto
.rule=ClientIP() || ClientIP()

```

> All matchers now take a single value (except `Header` , `HeaderRegexp` , `Query` , and `QueryRegexp` which take two) and should be explicitly combined using logical operators to mimic previous behavior.

[Source](https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/#new-v3-syntax-notable-changes)

---

<div class="post-metadata">

**Author:** ![nbilalis](https://sea2.discourse-cdn.com/flex020/user_avatar/community.traefik.io/nbilalis/32/8630_2.png) [@nbilalis](https://community.traefik.io/u/nbilalis)\
**Post date:** [April 29, 2024, 8:21am UTC](https://community.traefik.io/t/what-are-the-breaking-changes-from-v2-to-v3-considering-the-clientip-rule/22488/3 "2024-04-29T08:21:57Z")

</div>

Thank you for the response.

I guess my question is, do I need the `::1` part?

I am under the impression that my colleague, that originally built the configuration, simply added it because they copy/pasted it from the docs.

Is there a reason to include the loopback address to the `ClientIP` rule?

---

<div class="post-metadata">

**Author:** ![bluepuma77](https://avatars.discourse-cdn.com/v4/letter/b/a9adbd/32.png) [@bluepuma77](https://community.traefik.io/u/bluepuma77)\
**Post date:** [April 29, 2024, 9:15am UTC](https://community.traefik.io/t/what-are-the-breaking-changes-from-v2-to-v3-considering-the-clientip-rule/22488/4 "2024-04-29T09:15:15Z")

</div>

If you want to connect via localhost IPv6, then you probably need it 😉

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex020/uploads/containo/original/2X/b/bd81ebdb578656e76e56ff3cc3eed021d3ba132d.png) [@system](https://community.traefik.io/u/system)\
**Post date:** [May 2, 2024, 9:15am UTC](https://community.traefik.io/t/what-are-the-breaking-changes-from-v2-to-v3-considering-the-clientip-rule/22488/5 "2024-05-02T09:15:59Z")

</div>

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.
