Ordem dos resolvedores de DNS ou adição de rota "exclusiva" no Mac OS X?

Ordem dos resolvedores de DNS ou adição de rota "exclusiva" no Mac OS X?

Estou trabalhando em uma empresa onde – por vários motivos estranhos – tenho a seguinte configuração:

  • Ethernet: está em uma rede convidada e tem acesso à internet
  • Wifi: está em uma rede corporativa e tem acesso à intranet
  • a ordem do adaptador é definida, de modo que a Ethernet seja a primeira
  • route addé usado para adicionar as rotas de intranet necessárias (10.[4/6/1/39].xx etc.)

O problema agora é que certos programas não funcionam, pois não usam IPs, mas sim endereços nomeados. Conseqüentemente scutil --dns, tem o resolvedor nº 1 com servidores DNS externos e segue o resolvedor nº 2 com os servidores DNS da intranet. (se eu desconectar o cabo e estiver apenas no Wifi corp, os nomes serão resolvidos perfeitamente).

Pensei em duas soluções possíveis, mas não sei como fazê-las funcionar:

  • mesmo que o Wifi seja o primeiro adaptador em ordem, de alguma forma mudo a ordem do resolvedor de DNS para que o DNS da intranet seja testado antes do DNS da Internet
  • coloque o adaptador Wifi em primeiro lugar e, em seguida, encontre um comando de rota "excluindo", que não diz "enviar IP X por en0", mas sim "enviar qualquer IP diferente de X por en1"

Alguém pode me ajudar aqui?

Responder1

Parece que trabalho na mesma empresa ;-)

Por favor, encontre no link abaixo um script Ruby que você pode adaptar para fazer o queHennes descreve como opção 4), embora use o encaminhamento de solicitação de DNS em vez de visualizações. No entanto, isso deve ser fácil de corrigir. https://github.com/simonair/pubcode/blob/master/multihome_setup/multihome_setup.rb

Este script usará sudo conforme necessário.

Use-o apenas se você entender exatamente o que ele faz.

É melhor criar um novo Locationusing System Preferences > Networkantes de começar a experimentar este script, pois isso permitirá que você desfaça quaisquer alterações voltando para o conhecido em bom estado Location.

O que fará:

  • Enumere todas as interfaces de rede e identifique aquela conectada à rede corporativa e aquela conectada à outra rede com base em suasGATEWAYS PADRÃO'Endereço IP (não o endereço atribuído à própria interface)
  • Configure o servidor DNS integrado BINDpara lidar com solicitações da rede corporativa e da Internet e encaminhá-las por domínio. Por exemplo, example.comserá encaminhado para os servidores de nomes corporativos, enquanto example.netserá encaminhado para outros servidores de nomes.
  • Estabeleça o roteamento para uma lista de sub-redes através da interface corporativa, o restante através da outra rede
  • Opcionalmente, também iniciará uma conexão VPN se configurada corretamente.

Você precisa adaptar o script para atender às suas necessidades.

Esteja ciente de que você precisachame o script novamente com o argumento restoreassim que você se desconectar da rede corporativa,caso contrário, todas as solicitações de DNS chegarão ao seu servidor de nomes local e não será possível resolvê-las fora do seu ambiente corporativo.

Responder2

Não tenho certeza se esta é uma resposta completa e adequada, mas colocá-la em vários comentários parece um erro.

1) Solução rápida:

Adicione os nomes da intranet ao arquivo host. (Está dentro/privado/etc/hosts). Isso funciona se você precisar acessar apenas alguns servidores e for relativamente fácil de fazer. Também parece um erro e se os IPs do servidor mudarem, você precisará atualizar manualmente o arquivo hosts.

2) Supondo que o servidor DNS na intranet também gere nomes na Internet, você pode usar apenas esse servidor DNS. Considero isso improvável, já que você mencionou explicitamente que a rede convidada tem acesso à Internet e a outra à intranet. (Pode ser que a intranet tenha acesso à Internet, mas esteja bloqueada por algumas regras de firewall que não bloqueiam tudo. Por exemplo, não a porta 53).

3) Usar os dois servidores DNS (que é o que você está tentando fazer) pode não funcionar.

Não tenho nenhuma máquina OS/X para testar isso, mas recentemente aprendi da maneira mais difícil que alguns sistemas operacionais não consultam os servidores DNS em ordem, nem recorrem a um servidor de nomes secundário quando o primeiro falha. Em vez disso, eles parecem usar os servidores de nomes listados aleatoriamente.

O resultado disso seria:
(pedir DNS da Internet, DNS da intranet)
Consultar host na internet -> funciona.
Consultar host na intranet -> Falha na pesquisa via servidor DNS na Internet, desista e tente em seguida.

Não sei se este é o caso no OS/X e não tenho mac para testá-lo.

4)Servidor de nomes local

(Em negrito porque acho que esta é a melhor solução).

OS/X vem comVINCULARe parece fácilhabilitá-lo. A palavra-chave que você deseja procurar no BIND é visualizações

Responder3

Eu tive um problema semelhante emMac OScom diversas interfaces de rede físicas e virtuais e a necessidade de solicitar resolução de nomes para diferentes servidores de acordo com a disponibilidade ou indisponibilidade dessas interfaces de rede.

Depois de pesquisar e tentar no Google, encontrei as informações mais completas em uma discussão mais ampla emhttps://rakhesh.com/infraestrutura/macos-vpn-doesnt-use-the-vpn-dns. Resumindo, para definir resolvedores específicos ealterando as prioridades do resolvedor do sistema macos, para cada necessidade específica de resolução minha (por exemplo,"o servidor DNS privado 10.10.10.128 deve ser consultado para mydomain.tld quando estiver acessível, caso contrário, o 8.8.8.8 público do Google") foi o suficiente para

  1. crie um arquivo em /etc/resolver (diga /etc/resolver/per-domain-resolver ou qualquer nome que você preferir)

  2. preenchê-lo com uma sequência dedomínio,nome do servidor, epedido_pesquisadirectivas, por exemplo

    domain mydomain.tld
    nameserver 10.10.10.128
    search_order 1
    nameserver 8.8.8.8
    

Pode valer a pena destacar que meus testes se tornaram soluções funcionais assim que incorporaram odomínioepedido_pesquisadiretivas.

informação relacionada