URGENT!... Unable to access RDP service

I have Openziti configured in a single Debian VM.

I am using zac console to configure the identities, services and policies.

I have a Windows server as identity configured to host (bound) rdp service configured with port 3389.

Have all the required ports opened on firewall. Have 2 Windows Edge clients (one inside and one outside the network) configured to dial to the service.

I see all identities showing those services. RDP is not working with the systems. Weirdly, I am able to ping to the host both from inside and outside..

Have policies and services linking the host identity with Bind policy and others with Dial policy..

What could be wrong?

Please help urgently..

Regards,

Anto

Hi @antogeorge, welcome to the community and to OpenZiti!

Community-based assistance is always "as we can get to it" (from the maintainers) and at the whim of other community members. If you require urgent support, it's probably best to try to establish a network with NetFoundry which will come with 24x7 support.

As for the problem with RDP, you've not provided enough information for anyone to assist you. When a service isn't working, here's the checklist of things you should check:

  • is the client side identity on?
  • is the client side identity enabled?
  • do you see the relevant service listed for the given identity on the client?
  • is the server side identity on?
  • is the server side identity enabled?
  • do you see the relevant service listed for the given identity on the server?
  • look at the client's data/tunneler/service logs (for windows it'll be at Main Menu -> Advanced Settings -> Service Logs). Do you see any "error" or "warn" messages that are useful to relay? Do they help explain the issue? Do you see the service you're trying to access being "dialed"?
  • look at the logs in the controller, does the controller have any errors?
  • change the server's log level to DEBUG and restart the ZDEW using the big green button to make sure you have a clean log
  • look at the server's logs (same as above), make sure the service is 'binding', do you see something like this at "DEBUG" level? "start_binding() server1.4 requesting BIND on ch[OCI us-ashburn-1 Edge Router 1]"

in 99% of cases, the logs have something useful in them that helps point at the issue.
I would say it's usually like 80% of the time in the client logs are enough, 15% the controller and 4% are at the hosting tunneler side. So looking at the logs in the order I specified is usually the right move.

Look at your logs and if you can't figure it out from the logs let us know

i have no issue RDP and use it almost on daily basis.
Looking at your post you seem to

  1. Single Controller + ZitiRouter on single VM
  2. Windows Server hosting RDP on the network with this Controller+ZitiRouter?
  3. Trying to RDP from remote via Openziti

If you jmay, provide how you configure the Configurations?

  1. Intercept : This can be any fqdn or the ipv4 of your windows server. , ensure service role being set to the role your service configured to. Port 3389

  2. Host configuration: for simplicity , you might want to disable forward ,just set TCP , the ipv4 of your windows server , port 3389

Above ensure IPv4 /fqdn : 3389 will be intercepted and forward to your host configuration

  1. Create a Service - attached intercept/host configuration to it and assign a attribute role to it. example: myrdp

  2. finally are access policies
    Ensure the following being configured

Bind Policy - Select Service Attributes ← myrdp (or the roles attribute you assigned)
Select Identity Attributes ←- This is not your user identity , ensure you set to the ziti router role attribute or alternatively use @yourziti-router for specific ziti router

Dial Policy - Select Service Attributes ←- myrdp (or the roles attribute you assigned)
Select Identity Attributes ← This is most confusing part for new comer :wink: , ensure this is either #role-attributes of your user identity or @user-identity

once above are being set, review service and you should see Proper associate entities being associated especially terminators , ensure terminator is the zitirouter that you configured

1 Like

Than you for your response and apologies for the delay in responding..

I am getting an error as:

[2026-01-25T05:45:52.815Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[0] reconnecting in 19671ms (attempt = 2)

I verified the settings and seem to have all configured as per your recommendation.. Any other pointers that you can think of?

Your controller and router must be reachable by your windows edge client .

  1. Your controller will be listening to api and data plane ports so ensure firewalls not blocked
  2. Edge router ports (e.g 10080) must also be reachable from outside

Check on

  1. If you edge client can enroll and receive services , your connection to controller api seem ok
  2. Next check your Zac on the service you configured ensure it actually created the fabric circuit which should show a terminator assigned to that service.

Your windows rdp must permit that router internal ip for 3389 ports . Windows might not permit that if not configured properly (use internal machine to perform rdp to that windows machine if you have not done so )

One line of log is not enough, and that's not an error message that's an INFO message.

You need to look through the logs for actual errors. So far, we don't have enough information to be able to help. Stop your tunnel, remove any saved logs, start your tunnel, reproduce the error and post the logs here and I'll look at them

Thank You for your response Lumberjack..

The log message I sent is definitely an error. Please find more lines as follows:

[2026-01-26T15:24:53.242Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 65322ms (attempt = 915)
[2026-01-26T15:26:00.618Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:26:00.618Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 108232ms (attempt = 916)
[2026-01-26T15:27:50.901Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:27:50.902Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 1785ms (attempt = 917)
[2026-01-26T15:27:54.734Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:27:54.734Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 18822ms (attempt = 918)
[2026-01-26T15:28:15.594Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:28:15.594Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 102784ms (attempt = 919)
[2026-01-26T15:30:00.422Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:30:00.422Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 62073ms (attempt = 920)
[2026-01-26T15:31:04.568Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:31:04.568Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 112044ms (attempt = 921)
[2026-01-26T15:32:58.662Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:32:58.662Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 44145ms (attempt = 922)
[2026-01-26T15:33:44.849Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:33:44.849Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 94368ms (attempt = 923)
[2026-01-26T15:35:21.270Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:35:21.271Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 128522ms (attempt = 924)
[2026-01-26T15:37:31.831Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:37:31.831Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 80828ms (attempt = 925)
[2026-01-26T15:38:54.697Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:38:54.698Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 55808ms (attempt = 926)
[2026-01-26T15:39:52.542Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:39:52.542Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 106500ms (attempt = 927)
[2026-01-26T15:41:41.093Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:41:41.093Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 153798ms (attempt = 928)
[2026-01-26T15:44:16.957Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:44:16.957Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 51028ms (attempt = 929)
[2026-01-26T15:45:10.036Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:45:10.036Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 65790ms (attempt = 930)
[2026-01-26T15:46:17.869Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:46:17.869Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 26974ms (attempt = 931)
[2026-01-26T15:46:28.576Z] INFO ziti-edge-tunnel:ziti-edge-tunnel.c:2709 endpoint_status_change() Received session unlocked event
[2026-01-26T15:46:28.577Z] INFO ziti-sdk:posture.c:1059 ziti_endpoint_state_change() ztx[1] endpoint state change reported: woken[FALSE] unlocked[TRUE]
[2026-01-26T15:46:28.614Z] INFO ziti-sdk:posture.c:1044 ziti_endpoint_state_pr_cb() ztx[1] endpoint state sent
[2026-01-26T15:46:46.882Z] ERROR ziti-sdk:channel.c:976 on_tls_connect() ch[5] failed to connect to ER[router2] [-4078/connection refused]
[2026-01-26T15:46:46.882Z] INFO ziti-sdk:channel.c:834 reconnect_channel() ch[5] reconnecting in 105757ms (attempt = 932)

Thank You for your response Crystech..

I have opened 1280,8440, 8441,8442,8443,3389,3022 and 10080 on the firewall. On top of that, I am unable to RDP to that system using the ziti service URL from within the network also.

Couple of things to be noted:

  1. None of the identities - except the router is shown online on Zac.
  2. On the Edge Desktop of the identities - host and client show the service as available to them.

Those are the actual errors that we needed to see. You an clearly see "connection refused". That happens for a myriad of reasons. My expectation is that the router is advertising an address that the clients can't connect to.

imo the easiest way to troubleshoot this is to download the ziti CLI to any remote computer (probably best to use any of your) and use it to diagnose if the entire configuration of the overlay network. I am gonna write this up someday but until then i'll keep posting it...

Running verify traffic

The ziti cli has a handy function that I also ran before trying a tunneler that can also help you test to make sure your overlay is setup properly: ziti ops verify traffic --mode both. Please run that and you'll feel better that you're setup is correct and somewhere along the way some sort of unexpected error happened.

Run that command and you'll see something that looks like this:

If you see any error/failure at all, report back here. You should see the "traffic test successfully detected" and "successfully dialed service" logs.

Here’s the error I receive when I run the command on the server:

Using username: admin from identity 'default' in config file: /root/.config/ziti/ziti-cli.json
Enter password:
Token: ba3ae336-6fad-42ee-a3da-a114e9dd5a49
Saving identity 'default' to /root/.config/ziti/ziti-cli.json
INFO generating P-384 EC key
INFO generating P-384 EC key
INFO waiting 10s for terminator for service: 2026-01-27-1208.traffic
INFO successfully bound service: 2026-01-27-1208.traffic.

INFO Server is listening for a connection and will exit when one is received.
ERROR failed to bind error="timeout waiting for message reply: context deadline exceeded" _context="ch{ziti-sdk[router=tls:localhost:3022]}->u{classic}->i{R0RldVgxGu/bNDx}" connId=1 serviceName=2026-01-27-1208.traffic sessionId=73a4d2bf-cd48-49c3-8638-c2f6baa50c28
ERROR failed to establish listener serviceName=2026-01-27-1208.traffic connId=1 error="timeout waiting for message reply: context deadline exceeded" router=router2 serviceId=6UVnUhrH0qpx6SzHAQhwju
ERROR creating listener failed after 5002ms: timeout waiting for message reply: context deadline exceeded router=router2 serviceName=2026-01-27-1208.traffic
INFO notify error handler of error: timeout waiting for message reply: context deadline exceeded
ERROR failed to bind connId=2 sessionId=73a4d2bf-cd48-49c3-8638-c2f6baa50c28 error="channel closed" _context="ch{ziti-sdk[router=tls:localhost:3022]}->u{classic}->i{R0RldVgxGu/bNDx}" serviceName=2026-01-27-1208.traffic
ERROR unable to send unbind msg for conn connId=2 sessionId=73a4d2bf-cd48-49c3-8638-c2f6baa50c28 _context="ch{ziti-sdk[router=tls:localhost:3022]}->u{classic}->i{R0RldVgxGu/bNDx}" serviceName=2026-01-27-1208.traffic error="channel closed"
ERROR failed to establish listener serviceName=2026-01-27-1208.traffic error="channel closed" connId=2 router=router2 serviceId=6UVnUhrH0qpx6SzHAQhwju
ERROR failed to send close message marker= error="channel closed" connId=2
ERROR creating listener failed after 145ms: channel closed serviceName=2026-01-27-1208.traffic router=router2
INFO notify error handler of error: channel closed
FATAL terminator not found for service: 2026-01-27-1208.traffic

It looks to me that your router is advertising "localhost". That's a configuration issue and would prevent any client not on that same computer from connecting. You need to fix your router's advertised address.

I added ziti ops verify network a while back but they haven't been used much lately but it might help here.

Run them on your controller and router. For example I made a "bad" configuration and tried it:

ziti ops verify network --controller-config-file ip-172-31-47-200.yaml.bad
INFO    Verifying controller config: ip-172-31-47-200.yaml.bad
ERROR   controller advertise address at localhoost:8440 cannot be reached.
INFO    verifying 2 web entries
INFO    verifying 1 web bindPoints
INFO    web entry[client-management], bindPoint[0] address at ec2-3-18-113-172.us-east-2.compute.amazonaws.com:8441 is available.
INFO    web entry[client-management], bindPoint[0] is valid
INFO    verifying 2 web bindPoints
panic: input is invalid:

and

ziti ops verify network --router-config-file ip-172-31-47-200-edge-router.yaml.bad
INFO    Verifying router config: ip-172-31-47-200-edge-router.yaml.bad
INFO    ctrl endpoint at ec2-3-18-113-172.us-east-2.compute.amazonaws.com:8440 is available.
INFO    verifying 2 web link listeners
INFO    link listener[0] at ec2-3-18-113-172.us-east-2.compute.amazonaws.com:10080 is available.
INFO    link listener[0] is valid
INFO    link listener[1] at ec2-3-18-113-172.us-east-2.compute.amazonaws.com:20080 is available.
INFO    link listener[1] is valid
INFO    verifying 2 web edge listeners
WARNING listener binding[0] ports differ. make sure this is intentionalog. address port: 8442, advertise port: 1234
ERROR   listener binding[0] at locallhost:1234 cannot be reached.
INFO    listener binding[1] has binding tunnel and doesn't need to be verified
INFO    listener binding[1] is valid

ERROR   One or more error. Review the output above for errors.

see if anything in there helps. i expect one or both will have errors...

However you started your overlay, I would just reinstall it all with a proper advertised address as it's just easier at this point to start over (in my opinion) and get the advertised addresses right.

root@debian12:/home/anto# ziti ops verify network
INFO All requested checks passed.

Look at my commands again please. You are not providing the proper parameters

I do not see any yaml file in ziti installation folders.. Am I missing anything? FYI, This was not a quickstart installation…

How did you start the overlay? You just need to find where the config files are if not a quickstart, I would expect them to work fine unless it's in a docker container and then it'll be -- far more difficult but knowing what your .env file or command looks like would be enough

I do have env files.. Can I use that as parameter?

The env file has the following for controller

# 

# this is the ziti-controller.service bootstrapping inputs file where answers are recorded for generating a

# configuration

# 

# the controller's permanent FQDN (required)

ZITI_CTRL_ADVERTISED_ADDRESS='ztna.xxxxxx.com'

# the controller's advertised and listening port (default: 1280)

ZITI_CTRL_ADVERTISED_PORT='1280'

# name of the default user (default: admin)

ZITI_USER='admin'

# password will be scrubbed from this file after creating default admin during database initialization

ZITI_PWD=''

# additional arguments to: ziti create config controller

ZITI_BOOTSTRAP_CONFIG_ARGS=''

ZITI_BOOTSTRAP_LOG_FILE='/tmp/tmp.HrEhWOmq9r'

ZITI_BOOTSTRAP_NOW='2026-01-04T18:12:56+00:00'

ZITI_CA_FILE='root'

ZITI_CLIENT_FILE='client'

ZITI_CTRL_BIND_ADDRESS='0.0.0.0'

ZITI_CTRL_DATABASE_FILE='bbolt.db'

ZITI_HOME='/var/lib/private/ziti-controller'

ZITI_INTERMEDIATE_FILE='intermediate'

ZITI_NETWORK_NAME='ctrl'

ZITI_PKI_ROOT='pki'

ZITI_SERVER_FILE='server'

and the router too... please

$ cat  bootstrap.env

ZITI_BOOTSTRAP_NOW='2026-01-05T17:21:03+00:00'

ZITI_CTRL_ADVERTISED_PORT='1280'

ZITI_HOME='/var/lib/private/ziti-router'

ZITI_ROUTER_ADVERTISED_ADDRESS='ztna.xxxxxx.com'

ZITI_ROUTER_BIND_ADDRESS='0.0.0.0'

ZITI_ROUTER_DNS_IP_RANGE='100.64.0.1/10'

ZITI_ROUTER_IDENTITY_CERT='router.cert'

ZITI_ROUTER_MODE='host'

ZITI_ROUTER_NAME='router'

ZITI_ROUTER_PORT='3022'

ZITI_ROUTER_TPROXY_RESOLVER='udp://127.0.0.1:53'

ZITI_ROUTER_TYPE='edge'

ZITI_CTRL_ADVERTISED_ADDRESS='ztna.xxxxxx.com'

ZITI_ENROLL_TOKEN=''

Hi Anto @ageorge,

You're following the Linux deployment guides, right (Deploying on Linux | NetFoundry Documentation)?

You may edit your config YAML files in:

  • /var/lib/private/ziti-controller/config.yml
  • /var/lib/private/ziti-router/config.yml

Will you please share those configs as YAML with redacted addresses?

You can paste the configs here with YAML highlighting like this:

```yaml
some:
     dict: {}
```

That will help us understand the current configuration of both the controller and the router.

How many routers do you have? I noted "router2". Is there also a "router1?"