AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 783652
Accepted
metablaster
metablaster
Asked: 2024-09-18 05:33:27 +0800 CST2024-09-18 05:33:27 +0800 CST 2024-09-18 05:33:27 +0800 CST

Por que o endereço 00:00:00:00:00:00 é usado em vez do endereço de broadcast ff:ff:ff:ff:ff:ff no ARP?

  • 772

A seguir está meu conjunto de regras simplificado ARP, apenas regras de transmissão são mostradas, outras regras (não mostradas aqui) não são relevantes.

Por favor, veja os comentários do código que são perguntas (?)

#!/usr/sbin/nft -f

add chain arp arp_table input {
    # filter = 0
    # Packets delivered to the local system
    type filter hook input priority filter; policy drop;
}

add chain arp arp_table output {
    # filter = 0
    # Packets send by the local system
    type filter hook output priority filter; policy drop;
}

# ARP Broadcast address
define broadcast_ether = { ff:ff:ff:ff:ff:ff }

# IPv4 network address
define network_addr_4 = { 192.168.1.0/24 }

# NIC ether address
define physical_ether = { bb:c9:51:d4:4a:b6 }

# Why input to broadcast address never hits?
# This rule should handle broadcast input
add rule arp arp_table input arp daddr ether $broadcast_ether log prefix "ACCEPT input broadcast: " accept

# Why input to 00:00:00:00:00:00 hits instead?
# This rule handles input toward 00:00:00:00:00:00 from LAN
add rule arp arp_table input arp saddr ip $network_addr_4 arp daddr ether 00:00:00:00:00:00 accept

# Why output to broadcast never hits?
# This rule should handle output toward ff:ff:ff:ff:ff:ff to LAN
add rule arp arp_table output arp daddr ether $broadcast_ether log prefix "ACCEPT output broadcast: " accept

# Why output to 00:00:00:00:00:00 hits instead?
# This rule handles output toward 00:00:00:00:00:00 to LAN
add rule arp arp_table output arp saddr ether $physical_ether arp daddr ether 00:00:00:00:00:00 accept

Há várias questões aqui, a principal delas é que o ARPtráfego de transmissão ff:ff:ff:ff:ff:ffé inexistente, por isso adicionei uma instrução de log para capturar esse tráfego, mas ele nunca aparece, tanto para o tráfego quanto para inputo outputtráfego.

O que acontece é que vejo muita entrada/saída direcionada ao 00:00:00:00:00:00endereço, o que sugere que, 00:00:00:00:00:00de alguma forma, é um endereço de broadcast.

Então a questão principal é por que não vejo ARPtráfego direcionado para o endereço de broadcast e por que 00:00:00:00:00:00o endereço é usado em vez disso?

A segunda pergunta é: o que é 00:00:00:00:00:00endereço? Por que ele é necessário e o que significa?

Se eu bloquear o tráfego de/para 00:00:00:00:00:00(por exemplo, removendo essas regras), a rede deixará de funcionar devido à ARPperda desses pacotes.

nftables
  • 1 1 respostas
  • 49 Views

1 respostas

  • Voted
  1. Best Answer
    ilkkachu
    2024-09-22T00:34:11+08:002024-09-22T00:34:11+08:00

    O wiki nftables lista ether {saddr | daddr} «ether_addr» para corresponder a origem e o destino no cabeçalho Ethernet; e arp {saddr | daddr } ether «ether_addr»para corresponder o Sender Hardware Address (SHA) e o Target Hardware Address (THA) no cabeçalho ARP. Os comandos poderiam talvez ser nomeados mais claramente, tanto para fazer uma distinção mais clara entre os cabeçalhos ARP e Ethernet, quanto porque o campo no cabeçalho ARP é chamado de endereço de destino , não de destino(*).

    O endereço de destino Ethernet de uma solicitação ARP seria o endereço de transmissão, ff:ff:ff:ff:ff:ffjá que a solicitação precisa ser enviada necessariamente a todos os respondentes possíveis.

    Você provavelmente não deve confiar no endereço de hardware de destino ARP de uma solicitação ARP contendo algo em particular, pois esse é o valor que o remetente do pacote não sabe e está consultando. É provável que seja definido como zeros, como você viu, mas o RFC 826 parece deixar a porta aberta para que seja qualquer coisa:

    O módulo Address Resolution então define [...] ar$oppara ares_op$REQUEST, ar$shacom o endereço ethernet de 48 bits dele mesmo, ar$spacom o endereço de protocolo dele mesmo, e ar$tpa com o endereço de protocolo da máquina que está tentando ser acessada. Ele não define ar$thanada em particular, porque é esse valor que ele está tentando determinar. Ele poderia definir ar$tha para o endereço de broadcast para o hardware (todos os no caso do Ethernet de 10 Mbit) se isso o tornasse conveniente para algum aspecto da implementação.

    (* Practicalnetworking.net aponta uma diferença de significado entre "alvo" e "destino" aqui: no caso do Proxy ARP, o host sobre o qual a consulta está sendo feita (o "alvo") não veria a consulta em si (e, portanto, não seria seu "destino"), já que algum outro host responderia em seu nome.)

    • 2

relate perguntas

  • nftables: flush/delete ao alterar ou criar uma nova tabela

  • nftables não está funcionando, estou fazendo certo?

  • Posso combinar um conjunto negativamente em nftables?

  • Como crio um conjunto nomeado de interfaces por nome em nftables?

  • As regras do Nftables foram destruídas após a reinicialização!

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve