Eu tenho uma instalação mínima do CentOS 7.
Desativei o Gerenciador de Rede, pois quero configurar minha rede da maneira "antiga".
systemctl stop NetworkManager
systemctl disable NetworkManager
chkconfig network on
service network restart
Minha configuração de rede (/ etc / sysconfig / network-scripts / ifcfg-ens4) se parece com isto:
DEVICE="ens4"
TYPE="Ethernet"
NOZEROCONF="yes"
PERSISTENT_DHCLIENT="1"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens4"
ONBOOT="yes"
NM_CONTROLLED="no"
Meu arquivo de aluguel DHCP é assim:
lease {
interface "ens4";
fixed-address 144.76.190.238;
option subnet-mask 255.255.255.255;
option routers 144.76.190.224;
option dhcp-lease-time 86400;
option dhcp-message-type 5;
option domain-name-servers 8.8.8.8,8.8.4.4;
option dhcp-server-identifier 144.76.190.224;
option host-name "hello.example.com";
option domain-name "example.com";
renew 2 2014/10/21 05:44:47;
rebind 2 2014/10/21 15:04:03;
expire 2 2014/10/21 18:04:03;
}
Agora, meu problema é que o campo "roteadores" do DHCP parece ser ignorado pelo CentOS 7.
IP, netmask e hostname estão sendo definidos corretamente, mas minha rota padrão não está sendo definida (em branco).
Como você pode ver, estou usando a máscara de rede 255.255.255.255 para que o IP do gateway fique "fora" da minha rede. Por isso, é necessária uma rota extra. Se eu executar estes manualmente:
route add -host 144.76.190.224 dev ens4
route add defualt gw 144.76.190.224
Então tudo funciona bem:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 144.76.190.224 0.0.0.0 UG 0 0 0 ens4
144.76.190.224 0.0.0.0 255.255.255.255 UH 0 0 0 ens4
Todas as outras distribuições de Linux que testei, incluindo o Centos 6, funcionam bem e configuram essas duas rotas automaticamente a partir do DHCP.
Então minha pergunta é essa; Por que isso não é definido automaticamente no CentOS 7? Alguma coisa mudou e eu tenho que adicionar alguns sinalizadores adicionais ao cliente DHCP para que ele funcione?
Parece que o CentOS 6 usa o dhclient versão 4.1.1-P1 e o CentOS 7 usa o 4.2.5.
Talvez eles tenham mudado alguma coisa entre essas versões?
UPDATE 1:
Eu olhei para as notas de lançamento do dhclient e achei isso para 4.0.0:
"O dhclient-script foi atualizado para criar uma rota de host para o padrão
gateway se a máscara de sub-rede fornecida para um endereço IPv4 for um / 32. este
permite que o cliente trabalhe em ambientes de rede 'cativos', onde o
operador não quer que os clientes façam crosstalk diretamente. "
Então, isso deveria estar funcionando desde há muito tempo. Talvez o CentOS 7 o tenha removido do "dhclient-script"?
UPDATE 2:
Copiei o arquivo "/ sbin / dhclient-script" de uma instalação do CentOS 6 para o servidor do CentOS 7. Agora tudo funciona bem. Vou investigar quais mudanças eles fizeram, mas parece que eles introduziram um bug no CentOS 7.
UPDATE 3:
Eu descobri o problema. Eles adicionaram uma verificação de ping (estúpida) na nova versão do / sbin / dhclient-script que tenta fazer ping no gateway antes de adicioná-lo. Como estou bloqueando pings no meu firewall no servidor DHCP, ele não respondeu e, portanto, o dhclient-script não adicionou nenhuma rota padrão.