According to the manual, redirect-gateway def1 doesn't try to replace the default route, it just creates two new ones 0.0.0.0/1 and 128.0.0.0/1. How does not having a default route prevent these from being created?
Se o OpenVPN apenas substituísse o gateway padrão, ele não conseguiria mais chegar ao ponto final do mesmo nível por meio desse gateway original. Então, o que ele faz primeiro é olhar para o gateway padrão e definir uma rota de host explícita para seu ponto final de ponto através desse gateway.
A página man do OpenVPN é bastante explícita sobre isso:
--redirect-gateway flags...
Automatically execute routing commands to cause all outgoing IP traffic to be redirected over the VPN. This is a client-side option.
This option performs three steps:
(1) Create a static route for the --remote address which forwards to the pre-existing default gateway. This is done so that (3) will not create a routing loop.
(2) Delete the default gateway route.
(3) Set the new default gateway to be the VPN endpoint address (derived either from --route-gateway or the second parameter to --ifconfig when --dev tun is specified).
When the tunnel is torn down, all of the above steps are reversed so that the original default route is restored.
Você então pergunta
how can I get OpenVPN to automatically route all traffic through the VPN when a default route doesn't initially exist?
Uma rota deve existir (em algum lugar) para que o cliente OpenVPN chegue ao seu terminal ponto a ponto (ou seja, o servidor). Portanto, seja qual for o caminho, você precisará implementar as três tarefas descritas acima em um script --up
. Você precisará escrever este script, é claro.