Como usar o ACL ou o PAC ao usar o OpenVPN?

0

Atualmente eu uso uma tabela ip para dividir o tráfego ao usar o OpenVPN, conseguindo isso executando um script para sudo route add uma lista de IPs que eu gosto de conectar diretamente.

Isso põe um problema. Quando eu solicito um URL, ele ainda é executado via DNS do OpenVPN e retorna um IP que pode não ser utilizável se eu o conectar diretamente (estou na China, o GFW bloqueia o Facebook, o Google e muitos IPs / domínios externos, portanto Eu não posso usar o DNS local também.

Idealmente, eu teria a ACL ou o PAC onde ele faz um DN local primeiro e descobrir qual DNS (local ou internacional) usar e conectar de acordo. Como isso seria feito no Linux ou no Unix?

    
por Aero Wang 02.09.2017 / 07:24

1 resposta

1

Primeiro, ao fazer o roteamento, geralmente não é necessário usar também iptables , a menos que você queira fazer algo complicado por algum motivo.

Você não disse se está dividindo o tráfego com base em uma lista de endereços completos ou se está dividindo por prefixos etc. Então, edite sua pergunta e forneça essas informações.

Se você dividir com base em endereços completos, a solução mais simples é apenas adicionar nomes para esses endereços a /etc/hosts . A pesquisa nesse arquivo tem precedência sobre a pesquisa de DNS (a menos que seja configurado de outra forma em nssswitch.conf ). Naturalmente, os endereços IP neste arquivo e no arquivo de roteamento precisam ser atualizados se forem alterados.

Outra opção é usar /etc/resolv.conf . De man 5 resovler :

nameserver Name server IP address

Internet address of a name server that the resolver should query [...] Up to MAXNS (currently 3, see ) name servers may be listed, one per keyword. If there are multiple servers, the resolver library queries them in the order listed.

No entanto, esse arquivo geralmente é gerado automaticamente por várias outras partes do sistema, e os detalhes diferem da distribuição do Linux para a distribuição do Linux. Portanto, você deve descobrir quais scripts são executados para seu cliente DHCP e / ou OpenVPN para atualizar esse arquivo com as informações de servidor de nomes recebidas e, em seguida, modificar esses scripts para que as entradas nameserver acabem em resolv.conf na ordem correta. / p>

Nesse formulário, ele só funcionará se o servidor DNS chinês não retornar um endereço IP para domínios bloqueados. Se o servidor DNS chinês se comportar de maneira diferente, por exemplo Se você tiver que testar o IP retornado para descobrir se ele está bloqueado ou não, ou se você precisar de diferentes tipos de testes, ele ficará ainda mais difícil: você terá que usar algum tipo de proxy DNS local que faça esses testes, e provavelmente modificar o código de um software proxy existente.

Eu diria que outras pessoas na China que já usaram VPNs já enfrentaram o mesmo problema, então possivelmente há também algumas soluções prontas por aí, mas a comunidade internacional provavelmente não sabe sobre isso.

    
por 02.09.2017 / 10:02

Tags