Make sure the VPN server itself can reach the DMZ.
Use a network tool that allows you to specify a source IP you have bound to an interface and use that source IP address for connections to a service, then specify the IP Address on your VPN Hub's tunnel interface, when trying to connect to DMZ resources. If that does not work fix it for the host. Maybe routing updates, maybe filter rules; it is your setup and outside the config of OpenVPN
One example of a tool is some copies of "telnet" with some linux distros support a "-b" option to specify a source IP you have bound to an Interface. Example:
telnet -b Tun.Nel.IP.Address IP.ADDRESS.ON.DMZ 80
That might try to connect the whatever IP address would replace IP.ADDRESS.ON.DMZ as an IP address on you DMZ, and a web server. if that is able to connect, and whatever IP address you had on your tunnel interface on your vpn server would replace Tun.Nel.IP.Address , and you can talk to a web server with your tunnel interface as a source IP, you confirm routing and firewall rules permit that connection.
The router(s) between the OpenVPN Server and the VPN need to be able to know how to get replies from the VPN back to the source IP address of the packet that was sent to the DMZ.
Any network filters between the OpenVPN server and the DMZ host need to allow those source, destination and protocols to communicate.
If the above does not work, there is little value in continuing to the rest of the content below. Without confirmation routing from the tunnel network range works round-trip to/from DMZ, and network filters allow for the same round-trip, there is no "magic" in OpenVPN to fix that for you.
Once the above works, then move on to OpenVPN config:
As for openVPN, on questions of routing, review the documentation for server config on '--route' and '--push "route IP.Add.re.ss Sub.net.mas.k" on the server conf, and then review the documentation of use of "ccd" and "--iroute" option of openvpn in the ccd config files per client.
(An actual IP Address would replace the name "IP.Add.re.ss" , and a real subnet mask would replace the name "Sub.net.mas.k")
Once these are working, then restart your openvpn server to load these settings, and restart your client. Verify your client did get the "push"ed routes for the DMZ, and they updates the clients routing table.
Review your OpenVPN server logs with VERB enabled high enough (somewhere between 1 and 4 , inclusively) and look for an indication that on the client connection, the client's CCD file was loaded and used by the server.
If not, do not proceed. Fix that first. no iroute load from ccd for the client, no point in continuing.
Then, from the client try to use the same telnet command you tried before, but drop the request to bind to any specific IP address, so emulating above without binding:
telnet IP.ADDRESS.ON.DMZ 80
If all the parts are working (routing from the vpn server tunnel network range to the DMZ, network filtering to allow the tunnel network to reach the DMZ, client connection triggers ccd conf and iroute, and client gets pushed route) I would expect access to the DMZ through the VPN server to work.
If this works, please confirm it did. If you had to complete extra steps beyond what was included here, please followup with what they were. Other people can benefit from what it took you to make your configuration work.
If details above are not clear, please suggest how to make them more clear and understandable.