Eu suponho que você quer:
one specific secondary VPN server to become the default gateway for a given client.
Se isso ocorrer, isso pode ser feito usando o envio de rota. Você já sabe que pode informar ao cliente o endereço do seu "novo" gateway após a conexão do OpenVPN ter subido.
Bem, você pode fazer isso dinamicamente .
Do manual :
--client-connect script Run script on client connection. The script is passed the common name and IP address of the just-authenticated client as environmental variables (see environmental variable section below). The script is also passed the pathname of a not-yet-created temporary file as $1 (i.e. the first command line argument), to be used by the script to pass dynamically generated config file directives back to OpenVPN.
If the script wants to generate a dynamic config file to be applied on the server when the client connects, it should write it to the file named by $1.
See the --client-config-dir option below for options which can be legally used in a dynamically generated config file.
Note that the return value of script is significant. If script returns a non-zero error status, it will cause the client to be disconnected.
Portanto, tudo o que você precisa fazer é manter uma lista de entradas (cliente-nome-comum, gateway padrão) e preparar um script client-connect
que verificará o nome do cliente e preparará o push "route-gateway a.b.c.d"
apropriado a ser enviado para o servidor OpenVPN, e de lá para o cliente.
Você também pode colocar ip
comandos no script, mas talvez não precise deles.
Por exemplo:
#!/bin/sh
# Connect script for OpenVPN. This is /usr/local/bin/openvpn-connect-script.sh
# and OpenVPN server requires the extra option
#
# --connect-client /usr/local/bin/openvpn-connect-script.sh
#
$script="$1"
# We could even fetch this from, say, a MySQL database.
# GATEWAY=$( echo "SELECT gateway FROM users_config WHERE user='$username';" \
# | mysql -N openvpn )
case "$username" in
"lserni")
GATEWAY=192.168.168.192
;;
"apiraino")
GATEWAY=192.168.170.133
;;
"*")
GATEWAY=192.168.172.1
;;
esac
cat <<-CONFIG > $script
# Extra options, user-dependant.
gateway $GATEWAY
CONFIG
exit 0