Hello,
I would like to report an OpenVPN client compatibility issue between MikroTik RouterOS and OpenVPN 2.7.6.
After upgrading the OpenVPN server to OpenVPN 2.7.6, MikroTik OpenVPN clients are no longer able to establish a TLS session.
Server environment
- OS: Debian 13 (Trixie)
- OpenVPN version: 2.7.6-trixie1
- Package source: official OpenVPN 2.7 repository (build.openvpn.net)
- Transport: OpenVPN over TCP
- Clients: MikroTik routers using the built-in RouterOS OpenVPN client
Installed package:
openvpn:
Installed: 2.7.6-trixie1
Candidate: 2.7.6-trixie1
Problem
OpenVPN 2.7.6 reports that MikroTik clients send the initial P_CONTROL_HARD_RESET_CLIENT_V2 packet with packet ID 1, while OpenVPN 2.7.6 expects the HARD_RESET packet to use packet ID 0.
Example server log:
2026-08-21 13:58:49 TCP connection established with [AF_INET]WWW.XXX.YYY.ZZZ:34021
2026-08-21 13:58:49 tcp4-server:WWW.XXX.YYY.ZZZ:34021 TLS Error: received P_CONTROL_HARD_RESET_CLIENT_V2 with packet id 1 from [AF_INET]WWW.XXX.YYY.ZZZ:34021 -- 0 was expected, ignoring packet
2026-08-21 13:58:49 TCP connection established with [AF_INET]WWW.XXX.YYY.ZZZ:11444
2026-08-21 13:58:49 tcp4-server:WWW.XXX.YYY.ZZZ:11444 TLS Error: received P_CONTROL_HARD_RESET_CLIENT_V2 with packet id 1 from [AF_INET]WWW.XXX.YYY.ZZZ:11444 -- 0 was expected, ignoring packet
2026-08-21 13:58:49 tcp4-server:WWW.XXX.YYY.ZZZ:55386 TLS Error: received P_CONTROL_HARD_RESET_CLIENT_V2 with packet id 1 from [AF_INET]WWW.XXX.YYY.ZZZ:55386 -- 0 was expected, ignoring packet
This happens with multiple MikroTik OpenVPN clients, not just a single router.
The TCP connection itself is established successfully, but the TLS handshake cannot proceed because OpenVPN 2.7.6 rejects the initial HARD_RESET packet.
Relevant OpenVPN 2.7.6 change
OpenVPN 2.7.6 introduced stricter validation of incoming HARD_RESET packets. A HARD_RESET packet with a sequence/packet ID other than 0 is now rejected.
The MikroTik OpenVPN client appears to initialize:
P_CONTROL_HARD_RESET_CLIENT_V2
with:
packet id 1
instead of:
packet id 0
OpenVPN therefore ignores the packet and the connection eventually fails with a TLS error.
Expected behavior
The RouterOS OpenVPN client should send the initial:
P_CONTROL_HARD_RESET_CLIENT_V2
using:
packet id 0
as expected by the OpenVPN protocol and current OpenVPN 2.7.6 implementation.
Actual behavior
RouterOS sends:
P_CONTROL_HARD_RESET_CLIENT_V2 with packet id 1
OpenVPN 2.7.6 responds:
TLS Error: received P_CONTROL_HARD_RESET_CLIENT_V2 with packet id 1 ... -- 0 was expected, ignoring packet
and the VPN connection cannot be established.
Compatibility observation
OpenVPN 2.7.5 is available on the same Debian server and does not contain the new strict HARD_RESET packet-ID validation introduced in 2.7.6.
Therefore, downgrading the server from OpenVPN 2.7.6 to 2.7.5 is currently a possible workaround, but this is not desirable as a permanent solution.
Request
Could you please verify the OpenVPN control-channel packet ID initialization in the RouterOS OpenVPN client?
In particular, please check why P_CONTROL_HARD_RESET_CLIENT_V2 starts with packet ID 1 rather than 0.
If this is a RouterOS OpenVPN implementation issue, please update the client to be compatible with OpenVPN 2.7.6 and newer versions.
I can provide additional OpenVPN server logs and RouterOS OpenVPN client configuration if required.
ROS: 6.49.20 and 7.23.3