Cheguei aqui enquanto procurava informações semelhantes e fiquei surpreso ao saber que muitos estão vazando seus endereços IP privados. Eu acho que em termos de hackers, não faz muita diferença se você estiver em uma rede segura. No entanto, o DigitalOcean teve todo o tráfego de rede local exatamente nos mesmos cabos, com todos realmente tendo acesso ao tráfego de todos os outros (provavelmente possível com um ataque do tipo Man in the Middle.) Se você tivesse um computador no mesmo data center, teria as informações certamente lhe dão um passo mais perto de invadir meu tráfego. Agora, cada cliente tem sua própria rede privada reservada, como acontece com outros serviços em nuvem, como a AWS.
Dito isto, com o seu próprio serviço BIND9, você pode definir facilmente seus IPs públicos e privados. Isso é feito usando o view
recurso, que inclui uma condicional. Isso permite que você consulte um DNS e obtenha uma resposta sobre IPs internos apenas se você estiver solicitando seu endereço IP interno.
A configuração requer duas zonas. A seleção usa o match-clients
. Aqui está um exemplo de configuração do servidor DNS Two-in-one com BIND9 :
acl slaves {
195.234.42.0/24; // XName
193.218.105.144/28; // XName
193.24.212.232/29; // XName
};
acl internals {
127.0.0.0/8;
10.0.0.0/24;
};
view "internal" {
match-clients { internals; };
recursion yes;
zone "example.com" {
type master;
file "/etc/bind/internals/db.example.com";
};
};
view "external" {
match-clients { any; };
recursion no;
zone "example.com" {
type master;
file "/etc/bind/externals/db.example.com";
allow-transfer { slaves; };
};
};
Aqui está a zona externa e podemos ver os IPs não são privados
; example.com
$TTL 604800
@ IN SOA ns1.example.com. root.example.com. (
2006020201 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800); Negative Cache TTL
;
@ IN NS ns1
IN MX 10 mail
IN A 192.0.2.1
ns1 IN A 192.0.2.1
mail IN A 192.0.2.128 ; We have our mail server somewhere else.
www IN A 192.0.2.1
client1 IN A 192.0.2.201 ; We connect to client1 very often.
Quanto à zona interna, primeiro incluímos a zona externa, que é assim que funciona. ou seja, se você é um computador interno, você acessa apenas a zona interna e ainda precisa das definições de zona externa, daí o $include
comando:
$include "/etc/bind/external/db.example.com"
@ IN A 10.0.0.1
boss IN A 10.0.0.100
printer IN A 10.0.0.101
scrtry IN A 10.0.0.102
sip01 IN A 10.0.0.201
lab IN A 10.0.0.103
Finalmente, você precisa garantir que todos os seus computadores agora usem esse DNS e seus escravos. Supondo uma rede estática, isso significaria editar seu /etc/network/interfaces
arquivo e usar seus IPs DNS na nameserver
opção. Algo assim:
iface eth0 inet static
...
nameserver 10.0.0.1 10.0.0.103 ...
Agora você deve estar pronto.