Eu tenho uma máquina do CentOS 7 no espaço de endereço privado, o IP é 10.10.0.2. Eu gostaria de ter acesso à Internet através de um gateway com um IP público que está conectado ao mesmo switch , vamos chamá-lo 50.50.50.50. Eu tive que trabalhar em algum momento, mas agora quebrou e parece não ser capaz de consertá-lo. Eu também instalei net-tools porque acho muito mais fácil colocar minha cabeça em torno do formato para isso.
[root@node002 ~]# ip route show
10.0.0.0/8 dev ens785 proto kernel scope link src 10.10.0.2 metric 100
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
Então, como posso adicionar uma rota para todo o resto, com 50.50.50.50 como o gateway?
Eu tentei algumas coisas, como [root@node002 ~]# ip route add 0.0.0.0/0 dev ens785
, mas isso não adiciona nada à tabela de roteamento. Nenhuma mensagem de erro também. Eu também tentei adicionar uma rota para o host como este ip route add 50.50.50.50 dev ens785
, o que me deu uma linha extra na tabela de roteamento.
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
Eu também tentei outras variações, como [root@node002 ~]# ip route add 0.0.0.0/0 via 50.50.50.50
, mas isso excluiu minha rota para o host, pois é assim que fica imediatamente após a execução:
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
Eu também tentei:
[root@node002 ~]# ip route add default via 50.50.50.50/0
Error: ??? address is expected rather than "50.50.50.50/0".
E até mesmo:
[root@node002 ~]# ip route add default dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
Todas as outras máquinas têm uma rota padrão que tem 0.0.0.0 como o destino e o gateway. Como minha área de trabalho, por exemplo, o que faz sentido - o tráfego na mesma rede vai para a rede local sem um gateway, o tráfego para qualquer outra coisa passa pelo roteador.
root@desktop ~ $ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 100.100.100.1 0.0.0.0 UG 100 0 0 eth0
100.100.100.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
Eu não sei bem como eu quebrei isso ou como consertá-lo. Quaisquer ponteiros muito apreciados!
EDITAR
Primeiro de tudo, dei à máquina do gateway um endereço particular na mesma interface. Agora é 10.1.1.1, o que eu acho que significa com uma máscara de sub-rede de 255.0.0.0 significa que é a mesma rede. O endereço é pingável. Mas também não posso adicioná-lo como padrão.
[root@node002 ~]# ip route add default via 10.1.1.1
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
Posso adicionar temporariamente um IP público ao nó e, ENTÃO, posso adicionar um gateway padrão:
[root@node002 ~]# ip a add 50.50.50.51 dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
[root@node002 ~]# ip route add default via 10.1.1.1
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.1.1 0.0.0.0 UG 100 0 0 ens785
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
50.50.50.51 0.0.0.0 255.255.255.255 UH 100 0 0 ens785
Eu posso remover o endereço IP público, mas ainda manter a rota padrão:
[root@node002 ~]# ip a del 50.50.50.51/32 dev ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.1.1 0.0.0.0 UG 100 0 0 ens785
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens785
50.50.50.50 0.0.0.0 255.255.255.255 UH 0 0 0 ens785
Então, por que eu tenho que adicionar um IP público para poder adicionar um gateway, se eu puder remover o IP público e manter o gateway?
EDIT 2
Ainda não consigo obter uma rota padrão para adicionar usando os comandos ip, a menos que eu adicione um IP público brevemente.
Mais confusamente, posso conseguir coisas ignorando o NetworkManager e usando arquivos ifcfg (e trocando para uma atribuição estática ao invés de DHCP).
[root@node002 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens785
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
NM_CONTROLLED=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens785
DEVICE=ens785
ONBOOT=yes
MTU=9000
HWADDR=00:11:22:33:44:55
IPADDR=10.10.0.2
NETMASK=255.0.0.0
GATEWAY=10.1.1.1
DNS1=10.1.1.1
[root@node002 ~]# systemctl stop NetworkManager
[root@node002 ~]# ifdown ens785 && ifup ens785
[root@node002 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
0.0.0.0 10.1.1.1 0.0.0.0 UG 0 0 0 ens785
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 ens785
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 ens785