Eu primeiro desliguei as interfaces
# Shutdown the interfaces
ip link set enp2s0f0 down
ip link set enp2s0f1 down
Usando ifconfig
:
# Set subnets to interfaces
ifconfig enp2s0f0 10.0.0.1/24
ifconfig enp2s0f1 10.0.1.1/24
# Add two routes
ip route add 10.11.1.1 dev enp2s0f0
ip route add 10.11.0.1 dev enp2s0f1
# Result => NO PROBLEM, my routes are here even tho the interfaces are down
$ip route
10.0.0.0/24 dev enp2s0f0 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev enp2s0f1 proto kernel scope link src 10.0.1.1
10.11.0.1 dev enp2s0f1 scope link
10.11.1.1 dev enp2s0f0 scope link
Usando ip
:
# Set subnets to interfaces
ip addr add 10.0.0.1/24 dev enp2s0f0
ip addr add 10.0.1.1/24 dev enp2s0f1
$ip route
#NOTHING => Where are the routes?!
# Add two routes
ip route add 10.11.1.1 dev enp2s0f0
ip route add 10.11.0.1 dev enp2s0f1
$ip route
#NOTHING => Where are my routes?!
ip link set enp2s0f0 up
ip link set enp2s0f1 up
# Result => WOW only two routes appeared miraculously
$ip route
10.0.0.0/24 dev enp2s0f0 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev enp2s0f1 proto kernel scope link src 10.0.1.1
# => Where are my 10.11.*.* routes?
- Por que não
ip route
mostra minhas rotas? - Onde minhas rotas são adicionadas milagrosamente depois que eu abro minhas interfaces? Por que não posso vê-los antes?
- Por que minhas rotas não aparecem depois que eu abro as interfaces?
Quero configurar todas as rotas antes de ativar as interfaces. Eu não tenho nenhum problema em ifconfig
fazer isso. Eu me pergunto quais surpresas surgirão a seguir.
Achei ifconfig
e ip
eram compatíveis, a mudança do ifconfig para o ip não será tão fácil.
Responder1
Todas as suas três perguntas resultam de um mal-entendido:
ifconfig
com uma interface e um endereço implica a up
opção, portanto, no seu ifconfig
exemplo, a interface aparece ao mesmo tempo em que você especifica um endereço para ela.
Isso significa
ifconfig enp2s0f0 10.0.0.1/24
ifconfig enp2s0f1 10.0.1.1/24
na verdade é uma abreviação de
ifconfig enp2s0f0 10.0.0.1/24 up
ifconfig enp2s0f1 10.0.1.1/24 up
ip
deiproute2organiza de forma mais limpa os atos de:
- trazendo uminterfacepara cima e para baixo (
ip link
), - atribuindo um IPendereçopara um dispositivo de rede (
ip address
) e - configurando o kernelroteamentotabelas (
ip route
).
ifconfig
mistura esses conceitos díspares, o que é sem dúvida mais confuso ou menos intuitivo.
Se você deseja uma maneira conveniente de gerenciar o estado de rotas, dispositivos de rede, interfaces e túneis, considere usar uma ferramenta de gerenciamento de configuração de rede. Eles permitem que você defina sua rede em uma sintaxe declarativa conveniente, que você pode ativar ou desativar rapidamente com um comando.
Estas são algumas das ferramentas incluídas nas distribuições Linux comuns:
- Debian –ifupdown(
/etc/network/interfaces
,/etc/network/interfaces.d/
) - Ubuntu –netplan.io(
/etc/netplan/
) - Red Hat Enterprise Linux/CentOS –ifcfg(
/etc/sysconfig/network-scripts/
) - geralmente distros com ambientes de desktop –Gerente da rede(
/etc/NetworkManager/
)
Para completar, aqui estão as respostas às suas perguntas:
- Por que não
ip route
mostra minhas rotas?
As rotas não serão salvas na tabela principal se o link correspondente estiver inativo. Sua ip
sequência de comandos não traz primeiro as interfaces envolvidas.
- Onde minhas rotas são adicionadas milagrosamente depois que eu abro minhas interfaces? Por que não posso vê-los antes?
As rotas de um dispositivo não são registradas na tabela de roteamento se a interface estiver inativa.
- Por que minhas rotas não aparecem depois que eu abro as interfaces?
As rotas não foram adicionadas porque as interfaces correspondentes tiveram que ser ativadas primeiro. Você deveria ter visto uma mensagem de erro como RTNETLINK answers: Network is down
ou Error: Device for nexthop is not up.
se sua adição de rota foi tentada em uma interface inativa. O código de retorno ( $?
) também deveria ser diferente de zero.
Quero configurar todas as rotas antes de ativar as interfaces.
Pelo que eu sei, isso não pode ser feito, mesmo com ifconfig
. Lembre-se de que seus ifconfig
comandos estão, na verdade, trazendo as interfaces antes de você adicionar as rotas.
Eu me pergunto quais surpresas surgirão a seguir.
Esperemos que nenhum. ip
A separação de interesses faz muito sentido se vocêconheça.
Eu pensei
ifconfig
eip
eram compatíveis
Os dois comandos têm alguma sobreposição, mas não são intercambiáveis.