Eu vejo nissopergunta, a tabela de roteamento tem:
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
O que significa ter uma máscara de sub-rede /32
e, nesse caso, qual será o seu ID de rede? Um host pode existir sem um ID de rede caso consideremos o acima como um único host?
Até onde eu sei, o ID da rede e o endereço IP atribuídos a um host nessa rede são duas coisas diferentes. 192.168.0.0 é um ID de rede e se sua sub-rede for 255.255.255.0, os hosts nesta rede poderão ser 192.168.0.1 - 192.168.0.254. Neste caso, como um host pode existir sem um ID de rede?
Vinculado:Por que minha máscara de sub-rede é 255.255.255.255?
Responder1
Há um pouco de confusão aqui; que /32 não se refere ao tamanho de nenhuma (sub)rede, mas ao intervalo de endereços aos quais essa entrada específica da tabela de roteamento se aplica. Normalmente os dois são iguais (porque você roteia uma rede ou sub-rede como uma unidade, certo?), mas o macOS faz as coisas um pouco diferentes para outros hosts na mesma rede local. Deixe-me adicionar algumas linhas antes das que você citou:
Destination Gateway Flags Refs Use Netif Expire
default openwrt.lan UGSc 10 0 en0
...
192.168.1 link#4 UCS 2 0 en0
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
Observe que 192.168.1 (abreviação de 192.168.1.0/24) é roteado por en0 (também conhecido como link#4); não por meio de qualquer gateway, apenas pela própria interface. Esta é a rede em que o próprio Mac está. 192.168.1.1 e 192.168.1.125 são endereços específicosdentro desse alcance de rede. Se você comparar essas entradas /32 com a entrada 192.168.1, elas são basicamente duplicatas redundantes; eles dizem a mesma coisa, apenas sobre endereços específicos em vez de todo o alcance da rede.
Não sei por que o macOS cria essas entradas redundantes específicas de endereço, mas provavelmente está relacionado a outra coisa que você pode ver na listagem acima: o macOS lista suas entradas da tabela ARP na tabela de roteamento. A entrada "openwrt.lan" acima (que tenho certeza que é na verdade 192.168.1.1, listada apenas por nome em vez de número) diz que é roteado via en0 para o endereço MAC 46:94:fc:63:fc:7 .
Portanto, o que você vê na listagem de rotas é uma mistura de rotas de rede reais (como as entradas "padrão" e 192.168.1) e entradas por host (as entradas /32 e direcionadas a MAC).
Responder2
/32
endereçamento
De modo geral, /32
significa que a rede possui apenas um único endereço IPv4 e todo o tráfego irá diretamente entre o dispositivo com esse endereço IPv4 e o gateway padrão. O dispositivo não conseguiria se comunicar com outros dispositivos na sub-rede local.
Existem algumas razões possíveis para isso que eu vi. Poderia ser:
- Um servidor web que atende vários sites, com cada site vinculado a um endereço IPv4 específico
- Aendereço de loopbackusado para testes.
- Um truque de segurança de rede: isolar a máquina com a máscara de rede /32 do restante dos sistemas na sub-rede. Isto permite apenas o tráfego para destinos definidos explicitamente por rotas estáticas no sistema. Por exemplo, isto pode ser usado para descomissionar um sistema.
ID de rede
OID de redeparte de um endereço IP é determinada pela máscara de sub-rede. Por exemplo:
- Uma
/24
rede IPv4 tem uma máscara de sub-rede1111.1111.1111.0000
, o que significa que os primeiros 3 octetos são o ID da rede e o último octeto é usado para atribuir IDs de host (256 IDs disponíveis, embora geralmente alguns sejam reservados). - Uma
/16
rede IPv4 tem uma máscara de sub-rede1111.1111.0000.0000
, o que significa que os primeiros 2 octetos são o ID da rede e o último octeto é usado para atribuir IDs de host (65.536 IDs disponíveis, embora geralmente alguns sejam reservados).
No caso de /32
, isso não se aplica porque o endereço é um ID de rede e um ID de host. /31
os endereços também são todos IDs de host sem nenhum endereço 0 reservado.
Responder3
É apenas o valor CIDR. Você pode aprender mais emaquipara CIDR.
DR
Um endereço de rede CIDR se parece com isto em IPv4:
192.30.250.00/18
O “192.30.250.0” é o próprio endereço de rede e o “18” indica que os primeiros 18 bits são a parte da rede do endereço, deixando os últimos 14 bits para endereços de host específicos. máscara de sub-rede
Responder4
O que você está vendo não são máscaras de sub-rede. São indicações do comprimento dos prefixos da tabela de roteamento¹.
Uma implementação ingênua de uma tabela de roteamento listaria todos os endereços IP possíveis para que, dado qualquer endereço IP, você procurasse aquele exato e recuperasse as informações de roteamento² associadas a ele.
Claramente é necessário algum tipo de compressão. A natureza da informação de roteamento é que endereços adjacentes provavelmente usarão a mesma informação, então podemos usar uma forma deárvore de raizpara comprimi-los juntos. Aqui, brevemente, está como funciona.
Dados os números de 0 a 7, podemos representá-los em binário da seguinte forma:
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Agora, se tivermos duas entradas na tabela de roteamento, uma para os endereços 0 e 1 e outra para os endereços 2 e 3, podemos armazená-las sob os prefixos binários que elas compartilham. Se usarmos a .
para indicar o bit “não utilizado” após o final do prefixo, temos 00.
para o intervalo 0-1 e
01.
para o intervalo 2-3.
Uma forma padrão de representar isso é com o número mais baixo do intervalo seguido pelo comprimento do prefixo; neste caso, seriam 0/2
para o intervalo 0-1 e 2/2
para o intervalo 2-3.
Mas o que acontece se quisermos procurar as informações de roteamento do endereço 6? Normalmente adicionaríamos um conjunto "padrão" de informações de roteamento com prefix 0/0
, ou seja, correspondendo a qualquer bit e então, quando pesquisamos, procuramos as informações mais específicas, ou seja, o prefixo correspondente mais longo que podemos encontrar. Portanto, a tabela de roteamento completa que acabamos de descrever é:
0/2 00. Matches addresses 1 and 2.
2/2 01. Matches addresses 3 and 4.
0/0 ... Matches any address.
As máscaras de sub-rede podem ser descritas com prefixos da mesma maneira e, portanto, esse esquema é frequentemente usado para isso. Mas tenha em mente que só porque este esquemapodeser usado para descrever sub-redes não significa que seja usadoapenaspara descrever sub-redes.
Como exemplo de prefixos de tabela de roteamento que não são sub-redes, você poderia ter duas interfaces de rede conectadas à mesma rede, digamos, 192.168.2.0/24. (Isso poderia ser implementado conectando duas placas de rede separadas ao mesmo switch, cada uma com seu próprio cabo.) Você poderia então configurar a tabela de roteamento para "equilibrar" o tráfego de saída nas duas interfaces usando duas entradas da tabela de roteamento:
192.168.2.0/25 eth0 # range ...2.0 to ...2.127
192.168.2.128/25 eth1 # range ...2.128 to ...2.255
Isto enviaria pacotes destinados aos endereços 0-127 naquela rede eth0
, mas pacotes destinados aos endereços 128-255 naquela rede eth1
. Essa é uma maneira ruim de fazer isso (por motivos que não abordarei aqui), mas demonstra como os prefixos de roteamento e os endereços de rede podem não corresponder.
¹ O artigo da Wikipédia sobretabelas de roteamentoinfelizmente diz que o campo de prefixo contém o "ID da rede". Embora isso possa ser verdade em certas implementações específicas de tabelas de roteamento, nem sempre é um ID de rede no caso geral, como visto no exemplo que você fornece e no meu exemplo posteriormente nesta resposta.
² Essas informações de roteamento normalmente incluem coisas como qual interface usar, qual roteador contatar nessa interface, se houver, o endereço MAC de um host para hosts diretamente acessíveis através dessa interface, qual endereço de origem devemos colocar no pacote se o host tem vários endereços de origem, informações de segurança e assim por diante. Há uma enorme variedade de dados que poderiam estar lá, mas nada disso é importante para os propósitos desta discussão, já que estamos falando apenas sobre como você procura o conjunto de dados correto para um determinado endereço, e não o que está no conjunto de dados em si. .