Como configurar o endereço IP estático e por que
Aviso prévio! Não falo sobre outras maneiras de configurar a rede, como no NetworkManager. Qualquer dispositivo mencionado em /etc/network/interfaces
não é tocado pelo NM
Para poder se comunicar através de uma rede IP (IPv4 e IPv6), o computador deve saber qual endereço IP possui. Portanto, address
é necessária uma diretiva para informar isso ao computador.
Quando o computador deseja conversar com outro computador, ele usa o endereço IP dos outros computadores para verificar se o computador está na mesma rede, LAN. Nesse caso, o computador pode se comunicar diretamente com o outro computador.
Então, como o computador sabe quando está se comunicando com um computador na mesma LAN? Usando as redes netmask
, onde a parte líquida do endereço é definida como uns e a parte do host é definida como zeros. Portanto, fazendo uma operação AND bit a bit entre cada bit em um endereço IP e a máscara de rede, obteremos o endereço de rede do endereço IP, onde a parte do host é zero. Portanto, se fizermos isso no endereço IP dos computadores e nos endereços IP dos outros computadores, obteremos cada endereço de rede. Se eles são iguais, significa que os computadores estão na mesma rede e podem conversar diretamente entre si.
Se os endereços de rede não forem iguais, eles estarão em uma LAN diferente e não poderão se comunicar diretamente entre si. Em seguida, o computador precisa usar um computador especial conectado a outras LANs. Esse computador é um roteador (que também pode ter um firewall e NAT). Portanto, quando o computador deseja conversar com outros computadores fora da LAN, ele precisa saber o endereço desse computador que está definido com a gateway
diretiva. Se outra interface já tiver definido um gateway
valor, você não deve e não deve definir outra diretiva de gateway para essa interface. A gateway
diretiva define a rota padrão para o computador; portanto, você precisa de apenas um para IPv4 e apenas um para IPv6 em cada máquina. Este endereço de rede pode ser definido manualmente com a network
diretiva.
Às vezes, o computador deseja se comunicar com todos os computadores da LAN e usa o endereço de broadcast. Este endereço é ouvido por todos os computadores na mesma LAN. É basicamente o mesmo que o endereço de rede, exceto que a parte do host não é toda zeros e sim todos. Este endereço de broadcast é definido pela diretiva broadcast
na interface.
O network
endereço da interface só precisa ser calculado uma vez e geralmente é calculado corretamente a partir disso address
e das netmask
diretivas. Mesmo com o broadcast
endereço. Então você não precisa configurá-los. De fato, se você definir um ou ambos os valores errados, poderá perder a conexão com a Internet e outros computadores na sua LAN. Portanto, a menos que você tenha alguns valores estranhos, deixe o computador calculá-los para você.
Portanto, uma configuração estática mínima, ou estrofe, /etc/network/interfaces
pode ser assim para o dispositivo eth1
em uma rede privada:
iface eth1 static inet
address 192.168.44.10
netmask 255.255.255.0
gateway 192.168.44.1
Como a resolução de nomes funciona e como está vinculada ao DNS.
Os nomes de domínio são usados para converter entre fácil para humanos ler e lembrar nomes de domínio e os computadores não tão fáceis de lembrar do endereço IP mencionado acima. Isso é chamado de resolução de nomes .
Isso geralmente é controlado pelo arquivo /etc/nsswitc.conf
e pela linha que começa com hosts:
. Se você solicitar que o computador se conecte ao computador my.example.com
, ele analisará esse arquivo e tentará resolver o endereço IP a partir do nome my.example.com
. Na verdade, esse arquivo não responde à pergunta "qual IP meu my.example.com possui", apenas informa ao computador onde poderia encontrar a resposta.
Geralmente, ele tenta o /etc/hosts
arquivo primeiro para nomes locais estáticos, depois avahi mDNS
para nomes locais dinâmicos e, em seguida, um resovler de nome de domínio DNS para obter um nome da Internet.
Se algumas delas demorarem a responder às suas perguntas, pode parecer que o computador ficou parado por um tempo. Portanto, se você conseguir isso, verifique primeiro a resolução de nomes.
Para adicionar endereços estáticos, basta adicioná-lo ao seu /etc/hosts
arquivo. A propósito, se você possui um endereço estático, provavelmente deve alterar o endereço IP da sua máquina para o seu endereço IP e não o padrão 127.0.1.1
(que está na rede localnet onde localhost está 127.0.0.1
). Isso só funciona bem para clientes e não para servidores.
Os endereços dinâmicos que você obtém das máquinas Linux com o avahi
pacote e das máquinas Apple (e MS Windows com iTunes?). Isso é tratado pela "mágica" e você não precisará consertar isso.
O DNS é usado para acessar a Internet e você precisa informar ao computador onde estão esses servidores DNS, qual endereço IP usar e qual é o domínio DNS padrão.
Isso é feito no arquivo /etc/resolv.conf
e pode ser configurado estaticamente. Isso não funciona tão bem em nosso mundo não tão estático, então geralmente você tem um pacote chamado resolvconf
instalado. Isso permite que você defina essas configurações no /e/n/interfaces
arquivo.
Portanto, se assumirmos que queremos adicionar um dos servidores DNS do Google 8.8.8.8
, e o servidor DNS do seu ISP 192.0.2.1
e o domínio do my.example.org
domínio como padrão, basta editar o /etc/network/interfaces
arquivo e adicionar essas duas linhas na estrofe do dispositivo estático.
dns-nameservers 8.8.8.8 192.0.2.10
dns-search my.example.org
Você também pode perceber que o resolvedor de DNS usará apenas um máximo de três servidores DNS. Por favor, procure isso na página man
de resolv.conf
. Como habitualmente, você pode usar o comando man nsswitch.conf
, man resolv.conf
e man resolvconf
para mais informações.
Observe também que eu uso o domínio exemplo.com e exemplo.org e a rede IP 192.0.2.0/24 para o servidor DNS de exemplo do ISP. Estes são explicitamente definidos para serem usados em exemplos. Consulte http://example.com/ ou http://tools.ietf.org/html/rfc2606 e rfc5735
Como você verifica se funciona?
Você pode fazer isso de várias maneiras, mas eu costumo usar
getent hosts my.test.com
para testar toda a instalação quanto à resolução de nomes. Se eu apenas quiser verificar se o DNS funciona, use um destes comandos:
host my.test.com
dig my.test.com
Mas lembre-se de que eles apenas testam o DNS através das configurações do /etc/resolv.conf
arquivo, e não da /etc/nsswitch.conf
parte. Pode ser o que você quer ou não.