# Hostname Resolution With Homarr/nextjs

**URL:** <https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248>\
**Category:** General Questions\
**Created:** [March 25, 2025, 8:27pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248 "2025-03-25T20:27:11Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 25, 2025, 8:27pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/1 "2025-03-25T20:27:11Z")

</div>

I have given [homarr](https://github.com/homarr-labs/homarr) running in kubernetes a ziti identity.  
In the pod, I can successfully resolve a ziti service via dig or curl.

From what I understand, nextjs uses ICMP to resolve hostnames, so homarr throws this error:

```auto
2025-03-25T20:08:21.236Z info: Dispatching request https://auth.domain.com/realms/services/.well-known/openid-configuration (5 headers)
2025-03-25T20:08:21.276Z error: TypeError: fetch failed
  at e.exports.hd (/app/apps/nextjs/.next/server/chunks/8287.js:1:129739)
  at async o1 (/app/apps/nextjs/.next/server/chunks/8287.js:489:50086)
  at async o3 (/app/apps/nextjs/.next/server/chunks/8287.js:489:52860)
  at async o8 (/app/apps/nextjs/.next/server/chunks/8287.js:489:55276)
  at async ae (/app/apps/nextjs/.next/server/chunks/8287.js:489:57629)
  at async d (/app/apps/nextjs/.next/server/app/api/auth/[...nextauth]/route.js:1:3658)
  at async tr.do (/app/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js:18:17582)
  at async tr.handle (/app/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js:18:22212)
  at async doRender (/app/node_modules/next/dist/server/base-server.js:1452:42)
The above error also had these properties on it:
{
  cause: [Error: getaddrinfo ENOTFOUND auth.domain.com] {
    errno: -3008,
    code: 'ENOTFOUND',
    syscall: 'getaddrinfo',
    hostname: 'auth.domain.com'
  }
}
2025-03-25T20:08:21.276Z error: Error: getaddrinfo ENOTFOUND auth.domain.com

The above error also had these properties on it:
{
  errno: -3008,
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'auth.domain.com'
}

```

Is there a fix/workaround for this issue?

---

<div class="post-metadata">

**Author:** ![TheLumberjack](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thelumberjack/32/113_2.png) [@TheLumberjack](https://openziti.discourse.group/u/TheLumberjack)\
**Post date:** [March 25, 2025, 8:34pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/2 "2025-03-25T20:34:04Z")

</div>

This looks to me like "[auth.domain.com](http://auth.domain.com)" simply doesn't exist within the homarr pod. I've never heard of ICMP being used to resolve hostnames but `getaddrinfo` is a common system call to resolve a hostname to an IP.

Is [auth.domain.com](http://auth.domain.com) supposed to be a ziti intercept? should the identity be able to intercept the intercept? Or is this just some random k8s service resolution failure? It's not quite clear to me from your post which of those you expect.

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 25, 2025, 8:57pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/3 "2025-03-25T20:57:19Z")

</div>

From inside the homarr pod:

```auto
homarr-7d54958f7c-c4xzr:/app# drill auth.domain.com
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 32637
;; flags: qr aa rd ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; auth.domain.com.	IN	A

;; ANSWER SECTION:
auth.domain.com.	60	IN	A	100.64.0.2

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 127.0.0.1
;; WHEN: Tue Mar 25 20:51:58 2025
;; MSG SIZE rcvd: 74

```

Also:

```auto
homarr-7d54958f7c-c4xzr:/app# curl https://auth.domain.com/realms/master
{"realm":"master","public_key":"KEY_HERE","token-service":"https://auth.domain.com/realms/master/protocol/openid-connect","account-service":"https://auth.domain.com/realms/master/account","tokens-not-before":0}

```

I did notice that if I ran `drill` a bunch of times back-to-back, it occasionally misses the intercept:

```auto
homarr-7d54958f7c-c4xzr:/app# drill auth.domain.com
;; ->>HEADER<<- opcode: QUERY, rcode: NXDOMAIN, id: 6777
;; flags: qr aa rd ra ; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 
;; QUESTION SECTION:
;; auth.domain.com.	IN	A

;; ANSWER SECTION:

;; AUTHORITY SECTION:
domain.com.	24	IN	SOA	ns1.domain.com. hostmaster.domain.com. 2025032504 10800 3600 604800 3600

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 10.43.0.10
;; WHEN: Tue Mar 25 20:54:29 2025
;; MSG SIZE rcvd: 129

```

Yes, [auth.domain.com](http://auth.domain.com) is a ziti service. The identity assigned to the pod should be able to resolve that domain.

---

<div class="post-metadata">

**Author:** ![TheLumberjack](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thelumberjack/32/113_2.png) [@TheLumberjack](https://openziti.discourse.group/u/TheLumberjack)\
**Post date:** [March 25, 2025, 9:17pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/4 "2025-03-25T21:17:07Z")

</div>

Interesting. So if `getaddrinfo` fails from nextjs, the question would be "what DNS server does the app use". Is this a possible race condition of some kind where the tunneler needs to be up and running before homarr so that it doesn't end up failing like this?

I'm not entirely sure how to reproduce this particular issue. I'll ask around and see if anyone else has a thought.

Also, how is the tunneler deployed in the pod?

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 26, 2025, 9:35am UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/5 "2025-03-26T09:35:18Z")

</div>

From what I can tell, it uses the C standard library under the bonnet.

Actually, I have a really clever liveness probe configured that runs `curl` on a separate ziti host, so there must be a live connection prior to the pod being live.

I have the tunneler running as a sidecar with the `tproxy` argument.

I also just upgraded from version 1.4.2 to the latest 1.5.0, and the behaviour is the same.

One thing that you should be able to replicate is the domain failing to resolve.  
They use a [node docker image](https://github.com/homarr-labs/homarr/blob/dev/Dockerfile#L1).

I would say to do this:

- make a minimal docker compose file with that and the ziti-tunnel image
- give it access to a ziti service
- run `apk add drill curl`
- run `drill domain.com` a bunch of times

It will resolve most of the time, and occasionally fail.

---

<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:** [March 26, 2025, 5:19pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/6 "2025-03-26T17:19:24Z")

</div>

> [@thedarkula](#):
>
> I did notice that if I ran `drill` a bunch of times back-to-back, it occasionally misses the intercept:
> 
> ```plaintext
> ;; SERVER: 10.43.0.10
> 
> ```

This server address is probably the default pod resolver provided by CoreDNS, indicating the pod where you ran `drill auth.domain.com` is correctly configured with both Ziti and default nameservers, and fell back to querying CoreDNS for some reason that's probably determined by an algorithm within the Next.js application.

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 26, 2025, 7:03pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/7 "2025-03-26T19:03:49Z")

</div>

It is 🙂

I configured the pod as directed from the documentation:

```auto
    dnsPolicy: None
    dnsConfig:
      nameservers:
      - 127.0.0.1
      - 10.43.0.10

```

The commands I ran were in a bash terminal (shelled into the pod), not part of the nextjs program.  
I did try running `dig` instead of `drill` on loop, and curiously, only `drill` shows the intermittent failure.

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 26, 2025, 8:28pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/8 "2025-03-26T20:28:35Z")

</div>

I also tested this with [outline](https://github.com/outline/outline), and I hit the same error:

```auto
{"error":"getaddrinfo ENOTFOUND auth.domain.com","level":"error","message":"Error during authentication","stack":"Error: getaddrinfo ENOTFOUND auth.domain.com\n at GetAddrInfoReqWrap.onlookupall [as oncomplete] (node:dns:120:26)"}

```

---

<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:** [March 26, 2025, 9:03pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/9 "2025-03-26T21:03:03Z")

</div>

You confirmed the tproxy sidecar's identity has dial permission for `auth.domain.com`, and you observed at least one failed DNS query for that name.

I'd expect DNS to begin working after the tproxy sidecar has obtained the list of authorized Ziti services it may dial, which may take a few moments after starting up.

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 26, 2025, 9:28pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/10 "2025-03-26T21:28:46Z")

</div>

As I mentioned earlier, I have a liveness probe on the ziti-tunnel sidecar that checks a ziti service.  
This makes certain that the services assigned can be dialled.  
It does not matter how long I wait after the pod is up.

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 26, 2025, 9:36pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/11 "2025-03-26T21:36:30Z")

</div>

For more information, if I manually add a `hostAlias` like this:

```auto
    hostAliases:
    - ip: "192.168.1.xxx"
      hostnames:
      - "auth.domain.com"

```

everything functions properly.

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 26, 2025, 9:40pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/12 "2025-03-26T21:40:51Z")

</div>

As a side note, it would likely be beneficial to add binaries like dig and/or nslookup to the ziti-tunnel docker image to help with debugging.

---

<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:** [March 27, 2025, 12:35pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/13 "2025-03-27T12:35:51Z")

</div>

Thanks for the troubleshooting assistance! When you override DNS with a host entry, does `192.168.1.xxx` from your example represent that server's ClusterIP, pod IP, Ziti intercept address, or something else?

* * *

I've been working recently and extensively with `ziti tunnel tproxy` as a Kubernetes pod sidecar, i.e., a helper container providing a two-way proxy for the main application container using the `openziti/ziti-tunnel` container image.

My primary functional testing technique involves a busybox container (uses glibc, not musl) running an HTTP request loop that must resolve an address with Ziti DNS to succeed. I haven't instrumented that test yet and have not yet noticed any sporadic failures in casual spot checks of the results.

From the perspective of the application initiating the DNS queries against the Ziti nameserver provided by `ziti tunnel tproxy`, there is only the system call to the OS requesting an address for the intercept domain, and the pod specification determines the OS handling of timeouts, retries, search domains, etc.. You can use resolver options from the resolve.conf manual ([resolv.conf(5) - Linux manual page](https://www.man7.org/linux/man-pages/man5/resolv.conf.5.html)). The `getaddrinfo` syscall will obey these parameters when the Ziti intercept address is queried.

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: homarr
spec:
  dnsPolicy: None
  dnsConfig:
    nameservers:
      - "127.0.0.1"
      - "10.43.0.10"
    options:
      - name: timeout
        value: "5" # Set timeout to 5 seconds (default is usually 5)
      - name: attempts
        value: "5" # Set number of attempts to 5 (default is usually 2)
    # You can also configure search domains and options if needed
  containers:
    - name: homarr
      image: homarr/image
    - name: ziti-tunnel
      image: openziti/ziti-tunnel
      ports:
        - containerPort: 53
          protocol: UDP
        - containerPort: 53
          protocol: TCP

```

> [@thedarkula](#):
>
> liveness probe configured that runs `curl` on a separate ziti host

Will you please say more about "a separate ziti host?" Does that mean it's not a Kubelet-initiated liveness probe, and more of a customized health check initiated by another Ziti identity against the same intercept address for the purpose of verifying that the Ziti service is healthy separately from the pod DNS and proxy?

* * *

Also, please let me know if any of the failures you observed happen to be using Alpine (musl, not glibc), because there are some known issues with DNS that may be resolved with configuration or upgrading Alpine ([Debugging DNS Resolution | Kubernetes](https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/#known-issues)).

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 27, 2025, 6:46pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/14 "2025-03-27T18:46:12Z")

</div>

Absolutely!

`192.168.1.xxx` is a traefik instance.

Regarding the liveness probe/separate ziti host, this is the configuration:

```auto
liveness:
  enabled: true
  custom: true
  spec:
    initialDelaySeconds: 5
    periodSeconds: 10
    timeoutSeconds: 5
    failureThreshold: 3
    exec:
      command:
        - sh
        - -c
        - "curl -fsS --max-time 2 http://alwaysup.domain.com || exit 1"

```

I have configured a ziti service that points to a very simple nginx server, that always returns 200/OK.

The homarr image uses [alpine](https://github.com/homarr-labs/homarr/blob/dev/Dockerfile#L1) and the outline image uses [debian](https://github.com/outline/outline/blob/main/Dockerfile#L8), so there should be a mixture of musl and glibc.

I am happy to try any workarounds you may have 🙂

---

<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:** [March 27, 2025, 7:26pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/15 "2025-03-27T19:26:32Z")

</div>

Homarr is using Alpine 3.21 and the DNS issue was fixed in 3.18. 👍

The liveness probe is configured on the Homarr pod which has a Ziti sidecar loading an identity with dial permission for two services: `auth.domain.com:80` and `alwaysup.domain.com:80`. The probe continually checks the "alwaysup" service is still responding OK, and Kubernetes deletes the pod if the liveness probe fails.

Correct?

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 27, 2025, 7:43pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/16 "2025-03-27T19:43:57Z")

</div>

Great!

You have it 🙂

---

<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:** [March 27, 2025, 8:55pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/17 "2025-03-27T20:55:32Z")

</div>

OK. I expect `dig` and `drill` to implement DNS directly, not rely on the OS syscalls like `getaddrinfo`, so I don't expect these troubleshooting tools to represent precisely the behavior of a client application that does call `getaddrinfo`. Still, those tools should self-configure based on the current list of nameservers, so you should be able to verify Ziti DNS with `dig` or `drill` in most cases, though a fast loop won't have the same failure modes as the glibc resolver, unless the troubleshooting tool (like `dig`) happens to be specially configured to emulate the glibc resolver.

Notably, `dig` did not manifest the problem, while `drill` did manifest the problem intermittently when hammering the nameserver, so I attribute that to differences in their internal algorithms for interpreting SERVFAIL, NXDOMAIN, a timeout, etc. they may have encountered when querying the Ziti nameserver.

> [@thedarkula](#):
>
> It does not matter how long I wait after the pod is up.

After the pod is up as confirmed by the liveness probe, you continue to observe intermittent Ziti DNS failures where Homarr Server pod is unable to lookup `auth.domain.com`. Is that an accurate capture of the problem you're solving?

> [@thedarkula](#):
>
> if I manually add a `hostAlias` like this:
> 
> ```auto
> hostAliases:
> - ip: "192.168.1.xxx"
> hostnames:
> - "auth.domain.com"
> 
> ```
> 
> everything functions properly.

You confirmed the host entry points to an instance Traefik. I assume that instance has a host rule for `auth.domain.com` and so this test effectively bypasses Ziti, to isolate the cause, right?

> [@thedarkula](#):
>
> I also tested this with [outline](https://github.com/outline/outline), and I hit the same error:

When testing with Outline is the failure mode also accurately described as "you continue to observe intermittent Ziti DNS failures where the Outline pod is unable to lookup [auth.domain.com](http://auth.domain.com)?"

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 28, 2025, 2:16am UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/18 "2025-03-28T02:16:50Z")

</div>

> [@qrkourier](#):
>
> After the pod is up as confirmed by the liveness probe, you continue to observe intermittent Ziti DNS failures where Homarr Server pod is unable to lookup `auth.domain.com`. Is that an accurate capture of the problem you're solving?

Correct. Running dig works properly, drill does sometimes, and homarr cannot resolve `auth.domain.com` at all.

> [@qrkourier](#):
>
> You confirmed the host entry points to an instance Traefik. I assume that instance has a host rule for `auth.domain.com` and so this test effectively bypasses Ziti, to isolate the cause, right?

Correct 🙂

> [@qrkourier](#):
>
> When testing with Outline is the failure mode also accurately described as "you continue to observe intermittent Ziti DNS failures where the Outline pod is unable to lookup [auth.domain.com](http://auth.domain.com)?"

Correct 🙂

---

<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:** [March 28, 2025, 7:06pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/19 "2025-03-28T19:06:59Z")

</div>

That is strange. The Homarr Next.js application cannot resolve `auth.domain.com` at all, not even intermittently, but cURL exec'd by the Kubelet inside the same container, Alpine w/ MUSL, can resolve the other ziti service address, `alwaysup.domain.com`, most of the time with intermittent failures signaled by the liveness probe.

I am sure the ziti tunnel sidecar log would show it discovering both Ziti services because you can resolve both addresses with `dig` and `drill`.

Does the ziti tunnel sidecar log contain any interesting error messages?

---

<div class="post-metadata">

**Author:** ![thedarkula](https://yyz2.discourse-cdn.com/free1/user_avatar/openziti.discourse.group/thedarkula/32/1459_2.png) [@thedarkula](https://openziti.discourse.group/u/thedarkula)\
**Post date:** [March 28, 2025, 7:19pm UTC](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248/20 "2025-03-28T19:19:44Z")

</div>

> [@qrkourier](#):
>
> That is strange. The Homarr Next.js application cannot resolve `auth.domain.com` at all, not even intermittently, but cURL exec'd by the Kubelet inside the same container, Alpine w/ MUSL, can resolve the other ziti service address, `alwaysup.domain.com`, most of the time with intermittent failures signaled by the liveness probe.

Actually, the liveness probe is always happy.  
The intermittent failure is only when running `drill`. Running `dig` always succeeds.

> [@qrkourier](#):
>
> I am sure the ziti tunnel sidecar log would show it discovering both Ziti services because you can resolve both addresses with `dig` and `drill`.

It does indeed.

> [@qrkourier](#):
>
> Does the ziti tunnel sidecar log contain any interesting error messages?

Here is the `ziti-tunnel` log output:

```auto
DEBUG: waiting 3s for /netfoundry/identity.json (or token) to appear
INFO: found identity file /netfoundry/identity.json
DEBUG: evaluating positionals: tproxy
INFO: running "ziti tunnel tproxy --identity /netfoundry/identity.json "
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:93","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.New","level":"info","msg":"udpIdleTimeout is less than 5s, using default value of 5m0s","time":"2025-03-28T19:09:32.207Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:97","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.New","level":"info","msg":"udpCheckInterval is less than 1s, using default value of 30s","time":"2025-03-28T19:09:32.208Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:100","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.New","level":"info","msg":"tproxy config: lanIf = []","time":"2025-03-28T19:09:32.208Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:101","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.New","level":"info","msg":"tproxy config: diverter = []","time":"2025-03-28T19:09:32.208Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:102","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.New","level":"info","msg":"tproxy config: udpIdleTimeout = [5m0s]","time":"2025-03-28T19:09:32.208Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:103","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.New","level":"info","msg":"tproxy config: udpCheckInterval = [30s]","time":"2025-03-28T19:09:32.208Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/iputils.go:51","func":"github.com/openziti/ziti/tunnel/intercept.SetDnsInterceptIpRange","level":"info","msg":"dns intercept IP range: 100.64.0.1 - 100.127.255.255","time":"2025-03-28T19:09:32.208Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:277","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*interceptor).addIptablesChain","level":"info","msg":"added iptables 'mangle' link 'PREROUTING' --\u003e 'NF-INTERCEPT'","time":"2025-03-28T19:09:32.212Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:143","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.New","level":"info","msg":"no lan interface specified with '-lanIf'. please ensure firewall accepts intercepted service addresses","time":"2025-03-28T19:09:32.212Z"}
{"error":"exec: \"resolvectl\": executable file not found in $PATH","file":"github.com/openziti/ziti/tunnel/dns/dns_linux.go:85","func":"github.com/openziti/ziti/tunnel/dns.flushDnsCaches","level":"warning","msg":"unable to find systemd-resolve or resolvectl in path, consider adding a dns flush to your restart process","time":"2025-03-28T19:09:32.212Z"}
{"file":"github.com/openziti/ziti/tunnel/dns/dns_linux.go:32","func":"github.com/openziti/ziti/tunnel/dns.NewDnsServer","level":"info","msg":"starting dns server...","time":"2025-03-28T19:09:32.212Z"}
{"file":"github.com/openziti/ziti/tunnel/dns/dns_linux.go:62","func":"github.com/openziti/ziti/tunnel/dns.NewDnsServer","level":"info","msg":"dns server running at 127.0.0.1:53","time":"2025-03-28T19:09:34.213Z"}
{"file":"github.com/openziti/ziti/tunnel/dns/server.go:201","func":"github.com/openziti/ziti/tunnel/dns.(*resolver).AddHostname","level":"info","msg":"adding ziti-tunnel.resolver.test = 19.65.28.94 to resolver","time":"2025-03-28T19:09:34.213Z"}
{"file":"github.com/openziti/ziti/tunnel/dns/server.go:232","func":"github.com/openziti/ziti/tunnel/dns.(*resolver).RemoveHostname","level":"info","msg":"removing ziti-tunnel.resolver.test from resolver","time":"2025-03-28T19:09:34.225Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/iputils.go:51","func":"github.com/openziti/ziti/tunnel/intercept.SetDnsInterceptIpRange","level":"info","msg":"dns intercept IP range: 100.64.0.1 - 100.127.255.255","time":"2025-03-28T19:09:34.225Z"}
{"file":"github.com/openziti/ziti/ziti/tunnel/root.go:177","func":"github.com/openziti/ziti/ziti/tunnel.startIdentity","level":"info","msg":"loading identity: /netfoundry/identity.json","time":"2025-03-28T19:09:34.225Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/svcpoll.go:155","func":"github.com/openziti/ziti/tunnel/intercept.(*ServiceListener).HandleServicesChange","level":"info","msg":"adding service","service":"auth","time":"2025-03-28T19:09:34.255Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/svcpoll.go:226","func":"github.com/openziti/ziti/tunnel/intercept.(*ServiceListener).addService","level":"info","msg":"starting tunnel for newly available service auth","serviceId":"14uVMkDF7BG6RzOowhCT2b","serviceName":"auth","time":"2025-03-28T19:09:34.255Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:228","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*interceptor).newTproxy","level":"info","msg":"tproxy listening on tcp:127.0.0.1:38679","time":"2025-03-28T19:09:34.255Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:555","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).addInterceptAddr","level":"info","msg":"Adding rule iptables -t mangle -A NF-INTERCEPT [-m comment --comment auth -d 100.64.0.2/32 -p tcp --dport 80:80 -j TPROXY --tproxy-mark 0x1/0x1 --on-ip=127.0.0.1 --on-port=38679]","time":"2025-03-28T19:09:34.255Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:555","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).addInterceptAddr","level":"info","msg":"Adding rule iptables -t mangle -A NF-INTERCEPT [-m comment --comment auth -d 100.64.0.2/32 -p tcp --dport 443:443 -j TPROXY --tproxy-mark 0x1/0x1 --on-ip=127.0.0.1 --on-port=38679]","time":"2025-03-28T19:09:34.256Z"}
{"file":"github.com/openziti/ziti/tunnel/dns/server.go:201","func":"github.com/openziti/ziti/tunnel/dns.(*resolver).AddHostname","level":"info","msg":"adding auth.domain.com = 100.64.0.2 to resolver","time":"2025-03-28T19:09:34.257Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/svcpoll.go:155","func":"github.com/openziti/ziti/tunnel/intercept.(*ServiceListener).HandleServicesChange","level":"info","msg":"adding service","service":"homarr","time":"2025-03-28T19:09:34.257Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/svcpoll.go:226","func":"github.com/openziti/ziti/tunnel/intercept.(*ServiceListener).addService","level":"info","msg":"starting tunnel for newly available service homarr","serviceId":"UUID","serviceName":"homarr","time":"2025-03-28T19:09:34.258Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:228","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*interceptor).newTproxy","level":"info","msg":"tproxy listening on tcp:127.0.0.1:46055","time":"2025-03-28T19:09:34.258Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:555","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).addInterceptAddr","level":"info","msg":"Adding rule iptables -t mangle -A NF-INTERCEPT [-m comment --comment homarr -d 100.64.0.3/32 -p tcp --dport 80:80 -j TPROXY --tproxy-mark 0x1/0x1 --on-ip=127.0.0.1 --on-port=46055]","time":"2025-03-28T19:09:34.258Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:555","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).addInterceptAddr","level":"info","msg":"Adding rule iptables -t mangle -A NF-INTERCEPT [-m comment --comment homarr -d 100.64.0.3/32 -p tcp --dport 443:443 -j TPROXY --tproxy-mark 0x1/0x1 --on-ip=127.0.0.1 --on-port=46055]","time":"2025-03-28T19:09:34.259Z"}
{"file":"github.com/openziti/ziti/tunnel/dns/server.go:201","func":"github.com/openziti/ziti/tunnel/dns.(*resolver).AddHostname","level":"info","msg":"adding home.domain.com = 100.64.0.3 to resolver","time":"2025-03-28T19:09:34.260Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/svcpoll.go:155","func":"github.com/openziti/ziti/tunnel/intercept.(*ServiceListener).HandleServicesChange","level":"info","msg":"adding service","service":"alwaysup","time":"2025-03-28T19:09:34.260Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/svcpoll.go:226","func":"github.com/openziti/ziti/tunnel/intercept.(*ServiceListener).addService","level":"info","msg":"starting tunnel for newly available service alwaysup","serviceId":"UUID","serviceName":"alwaysup","time":"2025-03-28T19:09:34.260Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:228","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*interceptor).newTproxy","level":"info","msg":"tproxy listening on tcp:127.0.0.1:34339","time":"2025-03-28T19:09:34.260Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:555","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).addInterceptAddr","level":"info","msg":"Adding rule iptables -t mangle -A NF-INTERCEPT [-m comment --comment alwaysup -d 100.64.0.4/32 -p tcp --dport 80:80 -j TPROXY --tproxy-mark 0x1/0x1 --on-ip=127.0.0.1 --on-port=34339]","time":"2025-03-28T19:09:34.260Z"}
{"file":"github.com/openziti/ziti/tunnel/dns/server.go:201","func":"github.com/openziti/ziti/tunnel/dns.(*resolver).AddHostname","level":"info","msg":"adding alwaysup.domain.com = 100.64.0.4 to resolver","time":"2025-03-28T19:09:34.261Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:33464","time":"2025-03-28T19:09:41.831Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":33464,"Zone":""},"time":"2025-03-28T19:09:41.942Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":33464,"Zone":""},"time":"2025-03-28T19:09:41.943Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":33464,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:09:41.943Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":33464,"Zone":""},"time":"2025-03-28T19:09:41.943Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:44568","time":"2025-03-28T19:09:51.835Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":44568,"Zone":""},"time":"2025-03-28T19:09:51.839Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":44568,"Zone":""},"time":"2025-03-28T19:09:51.840Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":44568,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:09:51.840Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":44568,"Zone":""},"time":"2025-03-28T19:09:51.840Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:52642","time":"2025-03-28T19:10:01.834Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":52642,"Zone":""},"time":"2025-03-28T19:10:01.838Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":52642,"Zone":""},"time":"2025-03-28T19:10:01.838Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":52642,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:10:01.841Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":52642,"Zone":""},"time":"2025-03-28T19:10:01.841Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:50502","time":"2025-03-28T19:10:11.831Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":50502,"Zone":""},"time":"2025-03-28T19:10:11.834Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":50502,"Zone":""},"time":"2025-03-28T19:10:11.835Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":50502,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:10:11.836Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":50502,"Zone":""},"time":"2025-03-28T19:10:11.836Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:34154","time":"2025-03-28T19:10:21.831Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":34154,"Zone":""},"time":"2025-03-28T19:10:21.835Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":34154,"Zone":""},"time":"2025-03-28T19:10:21.836Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":34154,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:10:21.837Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":34154,"Zone":""},"time":"2025-03-28T19:10:21.837Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:35046","time":"2025-03-28T19:10:31.830Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":35046,"Zone":""},"time":"2025-03-28T19:10:31.835Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":35046,"Zone":""},"time":"2025-03-28T19:10:31.839Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":35046,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:10:31.840Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":35046,"Zone":""},"time":"2025-03-28T19:10:31.840Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:34640","time":"2025-03-28T19:10:41.830Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":34640,"Zone":""},"time":"2025-03-28T19:10:41.834Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":34640,"Zone":""},"time":"2025-03-28T19:10:41.835Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":34640,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:10:41.835Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":34640,"Zone":""},"time":"2025-03-28T19:10:41.835Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:37824","time":"2025-03-28T19:10:51.834Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":37824,"Zone":""},"time":"2025-03-28T19:10:51.837Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":37824,"Zone":""},"time":"2025-03-28T19:10:51.838Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":37824,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:10:51.838Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":37824,"Zone":""},"time":"2025-03-28T19:10:51.838Z"}
{"file":"github.com/openziti/ziti/tunnel/intercept/tproxy/tproxy_linux.go:310","func":"github.com/openziti/ziti/tunnel/intercept/tproxy.(*tProxy).acceptTCP","level":"info","msg":"received connection: 100.64.0.4:80 --\u003e 100.64.0.1:48130","time":"2025-03-28T19:11:01.829Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:91","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel started","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":48130,"Zone":""},"time":"2025-03-28T19:11:01.833Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":48130,"Zone":""},"time":"2025-03-28T19:11:01.834Z"}
{"dst-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"dst-remote":{"IP":"100.64.0.1","Port":48130,"Zone":""},"file":"github.com/openziti/ziti/tunnel/tunnel.go:144","func":"github.com/openziti/ziti/tunnel.myCopy","level":"info","msg":"stopping pipe","src-local":{"Channel":{}},"src-remote":{"MsgCh":{"Channel":{}}},"time":"2025-03-28T19:11:01.834Z"}
{"dst-local":{"Channel":{}},"dst-remote":{"MsgCh":{"Channel":{}}},"file":"github.com/openziti/ziti/tunnel/tunnel.go:114","func":"github.com/openziti/ziti/tunnel.Run","level":"info","msg":"tunnel closed: 88 bytes sent; 190 bytes received","src-local":{"IP":"100.64.0.4","Port":80,"Zone":""},"src-remote":{"IP":"100.64.0.1","Port":48130,"Zone":""},"time":"2025-03-28T19:11:01.834Z"}

```

[Next page](https://openziti.discourse.group/t/hostname-resolution-with-homarr-nextjs/4248.md?page=2)
