USG FLEX 500H/uOS dynamic policy-based IPsec issue – RCO/R-CARD traffic works on VPN100/USG but fail

Options
carb8111
carb8111 image  Freshman Member
First Comment


Hello Zyxel Support,

We are migrating an existing working RCO/R-CARD IPsec environment from an older
Zyxel VPN100/USG/ZLD firewall to a new Zyxel USG FLEX 500H running uOS.

The old VPN100/USG is currently working correctly. The new USG FLEX 500H can
establish the IPsec tunnel and can transport ICMP and generic UDP traffic, but
the actual RCO/R-CARD communication does not work.

This is not a road-warrior VPN setup. It is a dynamic site-to-site IPsec setup
where the central firewall acts as the master/responder and accepts multiple
dynamic IPsec endpoints. The endpoints do not have fixed public IP addresses,
and many are behind mobile broadband or operator NAT. Therefore, static peer
tunnels based on fixed public endpoint IPs are not a valid replacement
design.

Network overview

Central/master site:
Central firewall public IP: 217.78.20.244
Central LAN subnet:       192.168.90.0/24
RCO/R-CARD server:        192.168.90.21

Example remote site 1:
Remote subnet:            192.168.175.0/24
Remote router:             Teltonika
RUT241
RCO undercentral / UC:    192.168.175.5

Example remote site 2:
Remote subnet:            192.168.174.0/24
Remote router:             Teltonika
RUT241
RCO undercentral / UC:    192.168.174.9

The old VPN100/USG accepts these dynamic IPsec endpoints and the RCO/R-CARD
system works.

Working baseline with old VPN100/USG

With the old VPN100/USG online, the RCO/R-CARD application works. A tcpdump
captured on the remote RUT LAN side shows real RCO/R-CARD UDP/1000
communication in both directions between the UC and the RCO server.

Working baseline capture:

2026-08-10 07:39:24.021649 IP ttl 64 id 33988 flags [none] len 72
    192.168.175.5.1000 >
192.168.90.21.1000 UDP length 44

2026-08-10 07:39:24.036708 IP ttl 126 id 6345 flags [none] len 34
    192.168.90.21.1000 >
192.168.175.5.1000 UDP length 6

2026-08-10 07:39:29.310390 IP ttl 126 id 6346 flags [none] len 60
    192.168.90.21.1000 >
192.168.175.5.1000 UDP length 32

2026-08-10 07:39:29.312715 IP ttl 64 id 33989 flags [none] len 34
    192.168.175.5.1000 >
192.168.90.21.1000 UDP length 6

2026-08-10 07:39:34.330403 IP ttl 126 id 6347 flags [none] len 60
    192.168.90.21.1000 >
192.168.175.5.1000 UDP length 32

2026-08-10 07:39:34.332480 IP ttl 64 id 33990 flags [none] len 34
    192.168.175.5.1000 >
192.168.90.21.1000 UDP length 6

2026-08-10 07:39:44.330485 IP ttl 126 id 6348 flags [none] len 60
    192.168.90.21.1000 >
192.168.175.5.1000 UDP length 32

2026-08-10 07:39:44.332778 IP ttl 64 id 33991 flags [none] len 34
    192.168.175.5.1000 >
192.168.90.21.1000 UDP length 6

The important part is that the working VPN100/USG setup shows a real
UDP/1000-to-UDP/1000 RCO/R-CARD dialogue in both directions:

192.168.175.5:1000 <-> 192.168.90.21:1000

Result with USG FLEX 500H/uOS

With the USG FLEX 500H/uOS replacing the old VPN100/USG:

- The IPsec tunnel establishes.
- ICMP works between 192.168.90.21 and 192.168.175.5.
- Generic UDP test traffic from 192.168.90.21 reaches 192.168.175.5 through the
tunnel.
- The actual RCO/R-CARD fetch/communication still does not work.
- The working UDP/1000-to-UDP/1000 dialogue seen with VPN100/USG is not
reproduced.

Example FLEX-side tcpdump from the RUT LAN side shows generic UDP test packets
reaching the UC:

2026-08-10 14:26:58.086488 IP ttl 126 proto UDP length 101
    192.168.90.21.61874 >
192.168.175.5.1000 UDP length 73

2026-08-10 14:26:58.352315 IP ttl 126 proto UDP length 101
    192.168.90.21.61875 >
192.168.175.5.1000 UDP length 73

2026-08-10 14:26:58.605349 IP ttl 126 proto UDP length 101
    192.168.90.21.61876 >
192.168.175.5.1000 UDP length 73

We also verified generic UDP test packets to UDP/9000 and UDP/9001 reaching the
UC through the FLEX tunnel:

192.168.90.21.xxxxx > 192.168.175.5.9000
192.168.90.21.xxxxx > 192.168.175.5.9001

ICMP also works through the FLEX tunnel:

192.168.90.21 > 192.168.175.5: ICMP echo request
192.168.175.5 > 192.168.90.21: ICMP echo r

All Replies

  • Zyxel_Melen
    Zyxel_Melen image  Zyxel Employee
    Zyxel Certified Network Engineer Level 1 - Switch Zyxel Certified Network Administrator - Switch Zyxel Certified Network Administrator - Nebula Zyxel Certified Sales Associate
    Options

    Hi @carb8111

    Please help with us:

    1. Provide the packet file of the UDP traffic like "192.168.175.5:1000 <-> 192.168.90.21:1000". With the packet file, we can try to replicate this issue in our lab.
    2. Enable Zyxel support access and share the organization's name so we can access to check your firewall configuration and other details.

    Enable Zyxel support access can reference this FAQ:

    Zyxel Melen


  • carb8111
    carb8111 image  Freshman Member
    First Comment
    Options

    Updated info:

    Subject: FLEX 500H / uOS – Dynamic policy-based IKEv1 IPsec return traffic issue with RCO/R-CARD UC devices

    Hello Zyxel Support,

    We are replacing an older Zyxel VPN100/ZLD firewall with a new Zyxel FLEX 500H running uOS/Nebula.

    The old VPN100/ZLD firewall works with the same remote sites, same Teltonika RUT241 routers, same RCO/R-CARD server and same UC devices.

    With the FLEX 500H/uOS, the IKEv1 policy-based IPsec tunnels establish, and the FLEX logs show accepted traffic from the central RCO server towards the remote UC devices. However, the RCO/R-CARD application does not work correctly.

    Environment

    Central firewall:

    Zyxel FLEX 500H / uOS / Nebula
    Public IP: 217.78.20.244
    LAN subnet: 192.168.90.0/24
    RCO/R-CARD server: 192.168.90.21
    

    Remote site example:

    Teltonika RUT241
    Remote LAN: 192.168.174.0/24
    UC device: 192.168.174.9
    Remote WAN/public IP seen in logs: 83.255.16.246
    

    The application traffic is RCO/R-CARD communication between:

    192.168.90.21 <-> 192.168.174.9
    

    Main observed UDP ports are:

    UDP/1000
    UDP/9000
    UDP/9001
    

    What we have confirmed

    The IPsec tunnel is not simply down.

    The FLEX log shows DPD activity with the remote peer, so the IKE tunnel was alive during the test window. It also logs accepted LAN-to-IPsec traffic from the RCO server 192.168.90.21 to the remote UC 192.168.174.9.

    Example from the FLEX log:

    2026-08-10 16:19:39–16:19:41
    Source:      192.168.90.21
    Destination: 192.168.174.9
    Protocol:    UDP
    Dst ports:   1000 / 9000
    Rule:        TEST_RCO_to_ALL_VPN
    Direction:   LAN to IPSec_VPN
    Action:      ACCEPT
    

    The same log window shows several accepted packets from 192.168.90.21 to 192.168.174.9 on UDP/1000 and UDP/9000.

    The remote RUT also later shows a clean current IPsec state with the expected selectors:

    192.168.174.0/24 === 192.168.90.0/24
    

    and packet counters increasing in both directions.

    Problem description

    The important issue is not basic IKE establishment or a missing LAN-to-VPN allow rule.

    The FLEX 500H logs show that traffic from the central RCO server is accepted and sent towards the UC device. However, the RCO application still fails, and in the exported FLEX log we do not see the expected matching UC-to-server application traffic being passed back from:

    192.168.174.9 -> 192.168.90.21
    

    The same RCO/UC communication works when the old VPN100/ZLD firewall is used as the central firewall.

    Working hypothesis

    Our current suspicion is that FLEX/uOS may be handling return traffic from dynamic policy-based IKEv1 peers differently than the older ZLD platform.

    Possible areas to verify:

    - Dynamic policy-based IKEv1 peer handling
    - Traffic selector / Child SA matching for return traffic
    - IPsec_VPN -> LAN zone classification
    - Return-path handling from remote dynamic IPsec peer into LAN
    - Difference between ZLD VPN100 and uOS FLEX 500H behavior
    

    What we need help with

    Please verify whether FLEX 500H/uOS supports this scenario in the same way as VPN100/ZLD:

    Central firewall as dynamic policy-based IKEv1 responder/server side
    Multiple dynamic remote peers
    Local subnet: 192.168.90.0/24
    Remote subnet example: 192.168.174.0/24
    Application server: 192.168.90.21
    Remote UC: 192.168.174.9
    Application traffic: UDP/1000, UDP/9000, UDP/9001
    

    We need to confirm whether the FLEX is:

    1. Decrypting packets from the remote UC device.
    2. Matching them to the correct Child SA / traffic selector.
    3. Classifying them into the expected IPSec_VPN -> LAN path.
    4. Passing them to the LAN server 192.168.90.21.
    

    Please advise what debug commands, packet capture points, or support logs are required on FLEX/uOS to prove whether return packets from the remote UC are being received, decrypted and forwarded correctly.

    The key comparison is:

    Same remote Teltonika RUT241 + UC device works through old VPN100/ZLD.
    Same setup through FLEX 500H/uOS establishes IPsec and logs accepted LAN-to-IPsec traffic, but RCO/R-CARD communication fails.
    

    Best regards,

  • carb8111
    carb8111 image  Freshman Member
    First Comment
    Options

    Hello,

    The issue is that we cannot capture the expected bidirectional traffic:

    192.168.175.5:1000 <-> 192.168.90.21:1000

    when the FLEX 500H is active, because that traffic does not appear during the failure.

    What we see in the FLEX event log is accepted traffic from the RCO server towards the UC device, for example:

    192.168.90.21 -> 192.168.175.5 UDP/1000, UDP/9000, UDP/9001
    Rule: TEST_RCO_to_ALL_VPN
    Direction: LAN to IPSec_VPN
    Action: ACCEPT

    But we do not see the matching return/application traffic from:

    192.168.175.5 -> 192.168.90.21

    This is the problem we need help troubleshooting.

    We can provide:

    1. FLEX event log showing accepted server-to-UC traffic.
    2. Packet captures with a broader filter, showing what is actually present during the failure.
    3. Packet captures from the working old VPN100/ZLD setup, where the expected RCO/UC communication works.

    Please confirm if you want:

    • a negative capture from the FLEX failure case, showing that the expected UDP/1000 bidirectional flow is missing, and/or
    • a comparison capture from the old working VPN100/ZLD setup.

      We already checked broader traffic/logging, not only UDP/1000.
    • The FLEX event log shows UDP traffic from 192.168.90.21 to the UC devices on UDP/1000, UDP/9000 and UDP/9001, accepted by the LAN-to-IPSec policy.
    • However, during the failure case we do not see the expected return/application traffic from the UC device back to 192.168.90.21. Therefore we cannot provide a pcap of a working bidirectional 192.168.175.5:1000 <-> 192.168.90.21:1000 flow from the FLEX failure case, because that is exactly what is missing.
    • We can provide the FLEX event log showing accepted outbound RCO traffic and a capture/log showing what is actually present during the failure, but the expected bidirectional UDP/1000 flow does not appear when the FLEX 500H is active.
  • Zyxel_Melen
    Zyxel_Melen image  Zyxel Employee
    Zyxel Certified Network Engineer Level 1 - Switch Zyxel Certified Network Administrator - Switch Zyxel Certified Network Administrator - Nebula Zyxel Certified Sales Associate
    Options

    Hi @carb8111

    Provide the packet file of the UDP traffic like "192.168.175.5:1000 <-> 192.168.90.21:1000". With the packet file, we can try to replicate this issue in our lab.

    Please capture the packet from the working old VPN100/ZLD setup, where the expected RCO/UC communication works. I will try to send in USG FLEX H lab to check if the remote site can receive it first.

    Also, please enable Zyxel support access and share the organization's name so we can access to check your firewall configuration and other details.

    Zyxel Melen


  • carb8111
    carb8111 image  Freshman Member
    First Comment
    Options

    Hello,

    The correct Nebula organization is:

    Lykil Säkerhet

    here is the file

  • Zyxel_Melen
    Zyxel_Melen image  Zyxel Employee
    Zyxel Certified Network Engineer Level 1 - Switch Zyxel Certified Network Administrator - Switch Zyxel Certified Network Administrator - Nebula Zyxel Certified Sales Associate
    Options

    Hi @carb8111

    I'm still discussing with our engineer since I can send the UDP packet you provided from USG FLEX H to another client under same USG FLEX H via S2S VPN. I will update to you once I get further information.

    Zyxel Melen


  • Zyxel_Melen
    Zyxel_Melen image  Zyxel Employee
    Zyxel Certified Network Engineer Level 1 - Switch Zyxel Certified Network Administrator - Switch Zyxel Certified Network Administrator - Nebula Zyxel Certified Sales Associate
    Options

    Hi @carb8111

    Is it possible for you to let the RCO/R-CARD system under USG FLEX 500H and run the system to make the traffic passthrough? Since our last test was working for UDP 1000, we want to monitor the traffic via USG FLEX 500H to check which part get issue. Please let me know when you finish it or you have any questions. Thanks!

    Zyxel Melen


  • carb8111
    carb8111 image  Freshman Member
    First Comment
    edited August 26
    Options

    Hello,

    We can place the RCO/R-CARD system behind the USG FLEX 500H again and run the real system.

    With the old VPN100/ZLD firewall, the RCO/R-CARD system works correctly. In the working packet capture from VPN100/ZLD, we can see the normal real application dialogue on UDP/1000:

    192.168.90.21:1000 -> 192.168.175.5:1000
    192.168.175.5:1000 -> 192.168.90.21:1000
    

    Our understanding is that the UC device sends a request to the RCO server on UDP/1000, and the RCO server answers.

    With the USG FLEX 500H, the IPsec tunnel was established and basic connectivity worked. We could ping between the RCO server and the remote UC device, and manual test traffic could pass through the tunnel.

    However, when running the real RCO/R-CARD system behind the FLEX 500H, we did not observe the expected real RCO/R-CARD UDP/1000 application dialogue:

    192.168.175.5:1000 -> 192.168.90.21:1000
    192.168.90.21:1000 -> 192.168.175.5:1000
    

    The application communication does not start/work as it does with the old VPN100/ZLD firewall.

    So we can reproduce the same setup and run the real RCO/R-CARD system behind the FLEX 500H again, but we cannot make the real application traffic pass correctly in both directions, because that is the issue we are troubleshooting.

    The important difference is that with VPN100/ZLD we see the real two-way application dialogue on UDP/1000, including the UC device response back to the RCO server.

    With FLEX 500H, the tunnel is up and the firewall logs accepted server-to-UC traffic, but the expected real application response/dialogue from the UC device back to the RCO server does not work the same way.

    This has been seen with the Teltonika remote sites we have tested. We have also seen similar behavior with Nebula-managed remote devices, so it does not look like this is only a Teltonika-specific issue.

    Please confirm if you want us to:

    1. Put the RCO/R-CARD system behind the FLEX 500H again,
    2. Run the real RCO/R-CARD test,
    3. Notify you when the test is running or completed, so you can check the traffic on the FLEX 500H side.
  • Zyxel_Melen
    Zyxel_Melen image  Zyxel Employee
    Zyxel Certified Network Engineer Level 1 - Switch Zyxel Certified Network Administrator - Switch Zyxel Certified Network Administrator - Nebula Zyxel Certified Sales Associate
    Options

    Hi @carb8111

    Sorry for the delayed reply since I was confirming the test plan with our team.

    Yes, please put the RCO/R-CARD system behind the FLEX 500H again, and run the real RCO/R-CARD test.

    May you share the time with time zone you are able to run this test? If it match our engineer's working hour, I would like to ask our engineer to check when you run the test.

    If not, we will need you help to capture the packet.

    Please help to select the interface LAN and vti interface. I assume your VPN tunnels are both route based VPN tunnel, so we can capture packet on the vti interface to clarify this issue.

    image.png

    Please help to share your available time with me, thanks!

    Zyxel Melen