No Linux e no Unix, só pode haver um gateway por tabela de roteamento. No Linux, você pode ter várias tabelas de roteamento, mas cada uma possui um único gateway.
No Linux, ele é identificado da seguinte forma:
> ip route show
default via 192.168.73.1 dev eth0 proto static
192.168.73.0/24 dev eth0 proto kernel scope link src 192.168.73.75 metric 1
A linha chave é aquela que começa com default
, ela afirma que (meu) gateway é 192.168.73.1
. Você muda isso da seguinte forma:
> ip route del default
> ip route add default via 192.168.73.1 dev eth0
Se eu tiver mais de uma interface conectada, minha tabela de roteamento será semelhante a:
> ip route show
default via 192.168.73.1 dev eth0 proto static
192.168.73.0/24 dev eth0 proto kernel scope link src 192.168.73.75 metric 1
192.168.73.0/24 dev wlan0 proto kernel scope link src 192.168.73.66 metric 9
Como você pode ver, o tráfego local pode passar por eth0
ou wlan0
, mas, graças ao menor valor metric
(1 vs. 9), será encaminhado através de eth0
.
O tráfego da WAN irá certamente percorrer eth0
porque o gateway padrão está em dev eth0
.
Estes valores são automaticamente mantidos pelo seu network manager
, o que favorece, por padrão, o cabo através de conexões wi-fi. Você pode, no entanto, substituir sua escolha por meio de comandos semelhantes aos anteriores,
> ip route delete default
> ip route add default via 192.168.73.1 dev wlan0
Se você tiver várias interfaces do mesmo tipo ( por exemplo, várias conexões ethernet), a prioridade vai para a interface que foi conectada primeiro.
O gateway padrão é identificado, por assim dizer, pela própria rede: é um dos parâmetros que são passados para a sua máquina quando uma transição DHCP é negociada (os outros são netmask, rede, endereço de broadcast). Você não tem conhecimento disso porque o processo de DHCP é tratado por você pelo network-manager
. Ocasionalmente, você pode querer configurar um endereço IP estático, o qual não usa o DHCP; Nesse caso, você precisará fornecer os quatro parâmetros mencionados acima. Existem técnicas para aprender esses parâmetros, mesmo em redes totalmente novas para você, mas normalmente você configurará um endereço estático apenas em LANs que você já conheça bem.
Além das suas rotas LAN e gateway padrão, você pode ter rotas específicas através de qualquer uma das interfaces. Nesse caso, a ordem de prioridade das rotas é determinada com base no princípio rotas mais específicas primeiro . Suponha que você tenha uma rota para 1.1.1.0/24
thru wlan0
. Então, quando precisamos rotear pacotes para, digamos, 1.1.1.1
, ambas as regras (através de wlan0) e a regra padrão (através de eth0) se aplicam, mas a primeira é mais específica, portanto esses pacotes passarão por wlan0
. Nesse caso, o gateway dafult se torna a rota quando tudo mais falha, ou seja, quando nenhuma outra rota se aplica.
No Linux, você pode ter várias tabelas de roteamento, isso é chamado de policy or source routing
. Neste caso, você também precisará de uma regra para o kernel discriminar quando aplicar as múltiplas tabelas de roteamento à sua disposição. Você encontra uma breve introdução ao roteamento de políticas aqui . Neste caso, os comandos acima permanecem idênticos, exceto que eles são seguidos pelo nome da tabela de roteamento na qual você deseja trabalhar, por exemplo:
> ip route show table main
> ip route show table MyOtherRoutingTable
Você encontrará muitas vezes referências a comandos como netstat, route, ifconfig. No Linux (mas não no Unix, leia o primeiro comentário abaixo) eles estão obsoletos . O comando atual, ip do conjunto iproute2 , substitui todos eles e mais alguns. Ao pesquisar linux ip cheat sheet
, você pode encontrar sites comparando as capacidades de ip
e utilitários anteriores.
Editar
No Unix, os comandos acima seriam: você consulta a tabela de roteamento como
> netstat -rn -f inet
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.11.1 UGSc 10 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 2 161444 lo0
169.254 link#4 UCS 1 0 en0
169.254.10.9 10:c3:7b:9d:c8:78 UHLSW 0 0 en0
192.168.11 link#4 UCS 4 0 en0
192.168.11.1 10:6f:3f:25:c6:33 UHLWIir 11 4589 en0 1162
192.168.11.56 88:53:2e:10:77:5f UHLWI 0 0 en0 1187
192.168.11.65 2:f:b5:70:5b:22 UHLWI 0 0 en0 1081
192.168.11.67 127.0.0.1 UHS 0 0 lo0
192.168.11.113 6:20:3e:52:16:4d UHLWIi 2 278 en0 1188
Aqui, o gateway é identificado pela palavra-chave default
e pelo sinalizador G
.
Você altera o gateway padrão como:
> route delete default
> route add default 192.168.0.1
> route change default -interface enp0s3
Todos os comentários permanecem os mesmos, exceto aqueles sobre policy routing
, que não são suportados pelos kernels Unix.