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 / 784262
Accepted
metablaster
metablaster
Asked: 2024-09-29 21:16:05 +0800 CST2024-09-29 21:16:05 +0800 CST 2024-09-29 21:16:05 +0800 CST

Os comprimentos de endereço MAC relatados pelo nftables em logs nem sempre consistem em 12 dígitos hexadecimais

  • 772

Ao monitorar os logs do firewall, notei que MACos endereços relatados nos nftableslogs não correspondem ao comprimento padrão.

Pelo que entendi, MACo endereço tem 48 bits, que devem ser representados como 12 dígitos hexadecimais, porque cada dígito hexadecimal requer 4 bits, portanto 48/4 = 12 dígitos hexadecimais (agrupados em 6 grupos de 2 dígitos cada).

O acima exposto está de acordo com o que a Wikipedia afirma:

Como normalmente representados, os endereços MAC são reconhecíveis como seis grupos de dois dígitos hexadecimais , separados por hífens, dois pontos ou sem separador.

De acordo com a Wikipedia, um exemplo desse endereço é 01:23:45:67:89:AB, o que significa que há 12 dígitos hexadecimais (6 grupos x 2 por grupo = 12) e é assim que reconheço dispositivos no meu LANtambém e como faço a filtragem de tráfego no LAN.

Esses 6 dígitos hexadecimais de grupo também são vistos em logs de firewall (por exemplo, ARPentrada), já que isso está claro, não vou postar um exemplo disso.

No entanto, também existem registros como este:

2024-09-29T14:44:21.000498+02:00 debian kernel: [ 2520.417160] DROP default new_in_4: IN=wlan0 OUT= MAC=00:c0:ca:52:bf:8e:10:a3:b8:f5:f7:28:08:00 SRC=157.48.189.170 DST=192.168.1.34 LEN=132 TOS=0x08 PREC=0x20 TTL=43 ID=0 PROTO=UDP SPT=35165 DPT=3451 LEN=112

Este lista 14 grupos de MACendereços de dígitos hexadecimais ou 28 dígitos hexadecimais no total.
Todos esses endereços começam com 00:e terminam com :00como primeiro e último grupo de dígitos.

Portanto, este MACendereço que pode ser visto no nftableslog tem mais que o dobro do tamanho do que deveria ter (contando o grupo de prefixo e o grupo de sufixo de 00).

A pergunta 1 é: o que é esse MACendereço de 14 grupos e 28 dígitos e o que ele significa em nftableslogs?

E a pergunta 2, provavelmente ainda mais interessante, é: como é possível obter MACo endereço de um peer em algum lugar da internet? Presumo que esse MACendereço venha de fora NATdo firewall porque não o reconheço.

Como posso filtrar esses MACendereços estranhos e devo fazer isso?

Esta entrada de log de exemplo descarta o tráfego UDP de entrada gerado pelo peer do BitTorrent porque fechei o cliente.

editar:

ip link show wlan0

3: wlan0 <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DORMANT group default qlen 1000
    link/ether 00:c0:ca:52:bf:8e brd ff:ff:ff:ff:ff:ff
ethernet
  • 1 1 respostas
  • 78 Views

1 respostas

  • Voted
  1. Best Answer
    Chester Gillon
    2024-09-29T23:06:11+08:002024-09-29T23:06:11+08:00

    Dei uma olhada no código-fonte para tentar descobrir o que relata o MAC=.

    Foi encontrada a função dump_mac_header no kernel do Linux netfilter, que possui o seguinte bloco relevante:

        if (!(logflags & NF_LOG_MACDECODE))
            goto fallback;
    
        switch (dev->type) {
        case ARPHRD_ETHER:
            nf_log_buf_add(m, "MACSRC=%pM MACDST=%pM ",
                       eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest);
            nf_log_dump_vlan(m, skb);
            nf_log_buf_add(m, "MACPROTO=%04x ",
                       ntohs(eth_hdr(skb)->h_proto));
            return;
        default:
            break;
        }
    
    fallback:
        nf_log_buf_add(m, "MAC=");
        if (dev->hard_header_len &&
            skb->mac_header != skb->network_header) {
            const unsigned char *p = skb_mac_header(skb);
            unsigned int i;
    
            if (dev->type == ARPHRD_SIT) {
                p -= ETH_HLEN;
    
                if (p < skb->head)
                    p = NULL;
            }
    
            if (p) {
                nf_log_buf_add(m, "%02x", *p++);
                for (i = 1; i < dev->hard_header_len; i++)
                    nf_log_buf_add(m, ":%02x", *p++);
            }
    

    O que significa:

    • Se o NF_LOG_MACDECODEsinalizador de log estiver definido, serão reportados campos MACSRC, MACDSTe separados MACPROTO.
    • Caso contrário, relata apenas MAC=uma lista de bytes separada por dois pontos.

    Ainda não tentei, mas na Tabela 60. log-flagsman nft você deve conseguir definir o ethersinalizador para causar a decodificação dos endereços MAC:

    Bandeira Descrição
    éter Decodifique endereços MAC de um protocolo.

    MAC=00:c0:ca:52:bf:8e:10:a3:b8:f5:f7:28:08:00

    Do iptables está ocasionalmente registrando endereços MAC. Por quê? como sugerido por ilkkachu então para aqueles 14 bytes MAC=na pergunta pense que:

    1. 00:c0:ca:52:bf:8eé o endereço MAC de destino. Isso corresponde ao endereço MAC para o wlan0dispositivo fornecido na pergunta. Da Wireshark OUI Lookup Tool que é para o Alfa, Inc.fabricante, um fornecedor de adaptadores WiFi.
    2. 10:a3:b8:f5:f7:28é o endereço MAC de origem. Isso é para o Iskratel d.o.o.fabricante, um provedor de equipamentos de rede para conectividade de banda larga e comunicações convergentes .
    3. 08:00é o EtherType para IPv4.
    • 4

relate perguntas

  • 10-eth0.network

  • Como me conecto a um QNAP [fechado]

  • Desconexão Ethernet com fio após a primeira página da Web

  • dhcpd e bridge - Nenhum erro de declaração de sub-rede

  • Como obter as informações sobre o status de recebimento e envio de dados na ethernet?

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