In the manual it is stated:
Note that the entries in this file are treated by OpenVPN as suggestions only, based on past associations between a common name and IP address. They do not guarantee that the given common name will always receive the given IP address. If you want guaranteed assignment, use --ifconfig-push
Remove:
ifconfig-pool-persist ipp.txt 0
mode server
push "topology subnet"
ifconfig 10.9.8.1 255.255.255.0
.
Change:
ifconfig-pool 10.9.8.7 10.9.8.254
to
ifconfig-pool 10.9.8.7 10.9.8.253
In topology subnet, .0 - .1 - .254 - .255 should not be assigned to clients in a /24 tunnel subnet.
More accurately the first two and last two addresses of the tunnel subnet should not be assigned to clients.
Add:
server 10.9.8.1 255.255.255.0 'nopool'
.
Next you need to read:
https://community.openvpn.net/openvpn/wiki/HOWTO#Configuringclient-specificrulesandaccesspolicies
Especially "Because we will be assigning fixed IP addresses.............."
Also read about mentioned directives in manual 2.4:
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
However, the howto is not complete as it does not give an example for topology subnet.
The ifconfig-push directive changes to
ifconfig-push 10.9.8.201 255.255.255.0
for topology subnet.