O que é o resolv.conf e por que o cliente VPN o corta?

6

Como declarado em um pergunta Eu quero me conectar a 2 servidores VPN ao mesmo tempo e para cada conexão especificar os IPs dos computadores que eu quero alcançar com ele. Uma dessas conexões VPN é feita com vpnc e um arquivo default.conf , e a outra é feita com um cliente Cisco (não posso, pelo menos agora, me conectar com vpnc porque não tenho o elemento IPSecrete necessário para conectar-se).

Estou bem com a conexão feita por vpnc : consigo conectar os IPs de destino para usar a interface criada da seguinte forma:

#!/bin/sh

#Get default gateway
DEFGW='ip route list | grep default | awk -F' ' '{print $3 }''
DEVICE='ip route list | grep default | awk -F' ' '{print $5 }''

echo "Default Gatway is: $DEFGW on device $DEVICE"

echo "Starting vpnc"
sudo vpnc

echo "Adding routes to known computers through VPN network interface"
sudo route add -net 132.181.11.0  netmask 255.255.255.0 dev tun0

echo "Adding all other routes through standard network interface"
sudo route del default
sudo route add default gw $DEFGW dev $DEVICE

Agora, antes de executar as duas conexões simultaneamente, estou tentando fazer o mesmo com o cliente Cisco, mas estou enfrentando um problema com resolv.conf . Este arquivo é modificado pelo cliente VPN com um valor de domínio e por valores de servidores DNS. Executando o seguinte resultado de script em erros de resolução de DNS (relatados pelo chrome)

#!/bin/sh

#Get default gateway
DEFGW='ip route list | grep default | awk -F' ' '{print $3 }''
DEVICE='ip route list | grep default | awk -F' ' '{print $5 }''

echo "Default Gatway is: $DEFGW on device $DEVICE"

echo "Starting cisco"
sudo /opt/cisco/vpn/bin/vpn connect 134.214.244.203

echo "Adding routes to computers through VPN network interface"
sudo route add -net 132.212.146.156  netmask 255.255.255.255 dev cscotun0

echo "Adding all other routes through standard network interface"
sudo route del default
sudo route add default gw $DEFGW dev $DEVICE

Qualquer ajuda e comentários sobre isso e resolver o problema são bem-vindos.

Obrigado

    
por Manuel Selva 06.09.2012 / 23:37

2 respostas

6

/etc/resolv.conf define como o computador resolve os nomes de host (por exemplo, quais nomes de domínio padrão, se houver algum, são pesquisados quando você tenta resolver um nome de host não FQDN .... a pesquisa de www torna-se www.yourdomain.example.com ), e quais servidores de nomes são usados para fazer a pesquisa.

Uma das razões, e o mais provável, que os clientes VPN possam modificar o /etc/resolv.conf é fazer com que o computador cliente VPN use um servidor de nomes específico para a resolução do nome do host - por exemplo, se o roteador VPN executar um servidor de nomes em cache.

Não há nada que impeça você de alterar o /etc/resolv.conf de volta para o que você quer que ele seja, e o software cliente VPN pode até mesmo fornecer um método automatizado para fazer isso (caso contrário, apenas uma cópia de backup do resolv .conf de volta ao lugar) .... mas você pode ter dificuldade em resolver alguns nomes (por exemplo, alguns domínios são configurados com visualizações públicas e privadas - pessoas de fora vêem apenas nomes "públicos", enquanto insiders - incluindo clientes VPN - vêem todos os nomes internos , nomes privados também).

Uma maneira de resolver isso seria cp não uma cópia de backup do resolv.conf original, mas uma cópia modificada com seus servidores de nomes preferidos e domínios de pesquisa, bem como com o que o software cliente VPN deseja.

    
por 07.09.2012 / 00:54
2

/etc/resolv.conf lista os servidores de nomes que seu computador usa para pesquisar DNS nomes. Para enviar pacotes para um computador, você precisa saber seu endereço IP , mas os endereços IP estão (mais ou menos) vinculados a um determinado provedor de serviços de Internet e localização, e pode mudar, então eles não são normalmente usados para designar computadores. Em vez disso, nomes DNS são usados.

Normalmente, quem fornece o seu acesso à Internet (por exemplo, o seu ISP) fornece servidores de nomes para usar. Os próprios servidores de nomes precisam ser acessados pelo endereço IP, é claro. Normalmente, quando você se conecta com DHCP ou PPP , seu computador recebe endereços de servidor DNS e o software atualiza /etc/resolv.conf automaticamente para adicionar os endereços dos servidores DNS do provedor e removê-los quando você se desconecta.

Em casos simples, você só precisa de um único servidor DNS listado em /etc/resolv.conf . Esse servidor irá interrogar outros servidores conforme necessário se não tiver a resposta para uma consulta. Geralmente, quando você se conecta por meio de um provedor ou dentro de uma grande organização, você verá dois endereços: um servidor principal e um servidor de fallback, caso o servidor principal fique off-line.

Com as distribuições baseadas no Debian, assegure-se de ter o pacote resolvconf instalado (agora está instalado por padrão no Ubuntu), pois ele cuida do gerenciamento de /etc/resolv.conf . Geralmente, as coisas ficam certas automaticamente, e se isso não acontecer, é fácil ajustar.

Se, com suas duas VPNs, você puder usar um único servidor de nomes, organize um servidor de nomes funcional para acabar em /etc/resolv.conf . De preferência, configure o cliente VPN que você não deseja que o DNS não substitua /etc/resolv.conf (qualquer bom cliente VPN deve ter isso como uma opção em seu arquivo de configuração ou em um script complementar).

Se você precisar de vários servidores de nomes, por exemplo, porque cada VPN oferece acesso a uma rede interna diferente, você precisará se conectar a um único servidor de nomes que envia as solicitações. Eu recomendo dnsmasq , que é leve, fácil de configurar e poderoso o suficiente para a maioria das configurações de uma única máquina e de uma pequena rede. Se você executar seu próprio servidor de nomes, /etc/resolv.conf deve conter nameserver 127.0.0.1 e nenhuma outra diretiva nameserver , portanto, certifique-se de que nenhum dos seus clientes VPN substitua isso.

    
por 07.09.2012 / 03:26