eu escrevi
route-nopull
route myexternalip.com 255.255.255.255
no .ovpn
arquivo de configuração como é mostrado em muitos tutoriais. E para myexternalip.com
ele funciona bem, mas para alguns outros sites - não. Por exemplo analog.com
, digikey.com
, , speedtest.net
, whatismyip.com
pode acessar meu endereço IP real, embora se eu ativar a VPN para todas as conexões, ele funcione bem. Então aqui está a tabela de roteamento completa que tentei usar
route-nopull
route myexternalip.com 255.255.255.255
route analog.com 255.255.255.255
route speedtest.net 255.255.255.255
route whatismyip.com 255.255.255.255
Suponho que seja porque esses domínios têm vários endereços IP, e eu tenho que especificar cada um deles para que funcione bem, ou talvez por causa do endereçamento IPv6, mas não sei como posso corrigir isso. Estou fazendo algo errado, mas não sei exatamente o que.
Estou executando a comunidade OpenVPN mais recente (2.5.6) no Windows 10 21H1
As rotas nunca são comparadas com domínios reais, apenas com endereços IP. Em seus exemplos, o OpenVPN deve procurar os endereços do domínio especificado e adicionar rotas para esses endereços .
Vários endereços não são um grande problema; se o host "speedtest.net" tiver quatro endereços IPv4 (e quatro IPv6), o OpenVPN poderá adicionar apenas quatro rotas IPv4. (Mas não tenho certeza se isso acontece. Você deve verificar se realmente adicionou essas rotas!)
O primeiro problema é que os domínios podem ter subdomínios. Agora speedtest.com aponta para um conjunto de endereços IP, mas se você visitá-lo, será redirecionado para
www.speedtest.com
, que é um conjunto diferente de endereços IP e não corresponde mais às rotas geradas. (A lista de endereços IP muda com bastante frequência, devido à maneira como o Fastly CDN funciona, portanto, essas rotas podem ficar obsoletas rapidamente.)O mesmo acontece com o whatismyip.com (que redireciona para um subdomínio "www" e depois pinga outro subdomínio para teste de IPv6), e o mesmo acontece com analog.com.
Portanto, como o OpenVPN deve expandir os nomes de domínio para endereços antecipadamente, ele não pode simplesmente fazer uma correspondência de curingas; para algo como (hipotético)
route *.speedtest.net
funcionar, seria necessário obter uma lista de todos os subdomínios individuais, procurar endereços de cada subdomínio, adicionar rotas para todos os endereços. Mas como ele não pode obter uma lista de subdomínios (quase todos os operadores de domínio bloqueiam essa função), isso é praticamente um não-inicial.(E, claro, o próximo problema é que os sites não estão restritos a acessar apenas seu domínio 'principal'. Assim que você iniciar um teste em www.speedtest.com , o site entrará em contato diretamente com vários servidores de teste ao redor do mundo e como o DevTools do navegador mostraria, esses não são subdomínios de
.speedtest.com
- na verdade, são subdomínios de.prod.hosts.ooklaserver.net
.)Você não pode fazer isso funcionar de forma confiável apenas com rotas IP (a menos que você saiba exatamente para quais domínios o site faz solicitações); você precisaria de algo que funcione em uma camada superior, por exemplo, configurar um proxy HTTP em seu servidor e combiná-lo com um script "Proxy Auto-Config" que informa aos navegadores se cada domínio deve ser proxy ou não.
(Às vezes, uma opção melhor pode ser excluir sites que precisam ignorar a VPN. Por exemplo, se você precisar acessar um intervalo de IP específico diretamente enquanto a VPN estiver ativa com uma 'rota padrão', adicionar "route 192.0.2.0 255.255. 255.0 net_gateway" conseguiria isso.)