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 / user-599939

metablaster's questions

Martin Hope
metablaster
Asked: 2025-04-04 18:30:40 +0800 CST

Interpretando a saída do comando date

  • 5

Este comando produzirá o seguinte:
date --iso-8601=ns

2025-04-04T12:10:16,045431370+02:00

De acordo com man dateo nsestá documentado da seguinte forma:

-I[FMT], --iso-8601[=FMT]
output  date/time  in  ISO  8601  format.   FMT='date'  for  date  only  (the  default),  'hours',  'minutes',  'seconds',
or  'ns'  for  date and time to the indicated precision.

A parte confusa é 'ns' for date and time to the indicated precision
O que exatamente é "precisão indicada"? O que é ns?

Particularmente, quero saber o significado do número 045431370na saída de2025-04-04T12:10:16,045431370+02:00

Como interpretar 045431370números? E o que é nsopção?

a propósito. Imagino +02:00que signifique deslocamento UTC? ou UTC +2?

command-line
  • 1 respostas
  • 18 Views
Martin Hope
metablaster
Asked: 2025-03-31 05:24:22 +0800 CST

Quais ferramentas bind9-dnsutils estão obsoletas ou obsoletas?

  • 5

As seguintes são bind9-dnsutilsferramentas:

delv
dig
dnstap-read
mdig
nslookup
nsupdate

Lista retirada de: https://manpages.debian.org/bookworm/bind9-dnsutils/index.html

Eu sei nslookupque está obsoleto e dignão está (dig é substituto).

Mas e as outras 4 ferramentas, elas estão obsoletas ou obsoletas ou ainda são válidas?
E se sim, quais são as substituições?

debian
  • 1 respostas
  • 15 Views
Martin Hope
metablaster
Asked: 2025-03-16 05:58:55 +0800 CST

Remova espaços e numeração na lista de palavras com sed

  • 5

Tenho um arquivo com o seguinte conteúdo de exemplo:

  2 jordyt
  2 dawder
  2 LOL12345
  2 2251084185
  2 123456789
  1 canada
  1 buddy123
  1 bagdad
  1 baba01
  1 124050
  1 123windi
  1 123456789m
  1 123321

O objetivo é remover espaços e números no início para que apenas as senhas permaneçam, assim:

jordyt
dawder
LOL12345
2251084185
123456789
canada
buddy123
bagdad
baba01
124050
123windi
123456789m
123321

Usei este comando, mas não está funcionando como eu queria:

cat file.txt | sed 's/^\s+\d+\s+//g'

Não precisa ser assim sedse houver uma abordagem melhor, o desempenho do processamento é importante porque tenho gigabytes de arquivos.

E a propósito, por que meu comando não está funcionando?

sed
  • 1 respostas
  • 43 Views
Martin Hope
metablaster
Asked: 2025-03-15 20:16:56 +0800 CST

É seguro limpar (excluir) referências a unidades systemd ausentes?

  • 5

Listar serviços ausentes

systemctl --state=not-found --all

Saída:

      UNIT                           LOAD      ACTIVE   SUB  DESCRIPTION                   
● boot.automount                 not-found inactive dead boot.automount                
● home.mount                     not-found inactive dead home.mount
● tmp.mount                      not-found inactive dead tmp.mount                     
● connman.service                not-found inactive dead connman.service
● console-screen.service         not-found inactive dead console-screen.service
● dpdk.service                   not-found inactive dead dpdk.service
● fcoe.service                   not-found inactive dead fcoe.service
● firewalld.service              not-found inactive dead firewalld.service
● haveged.service                not-found inactive dead haveged.service
● ip6tables.service              not-found inactive dead ip6tables.service
● iptables.service               not-found inactive dead iptables.service
● iscsi-shutdown.service         not-found inactive dead iscsi-shutdown.service
● iscsi.service                  not-found inactive dead iscsi.service
● iscsid.service                 not-found inactive dead iscsid.service
● kbd.service                    not-found inactive dead kbd.service
● rbdmap.service                 not-found inactive dead rbdmap.service
● systemd-hwdb-update.service    not-found inactive dead systemd-hwdb-update.service
● systemd-oomd.service           not-found inactive dead systemd-oomd.service
● systemd-update-done.service    not-found inactive dead systemd-update-done.service
● systemd-vconsole-setup.service not-found inactive dead systemd-vconsole-setup.service
● xencommons.service             not-found inactive dead xencommons.service
● xendomains.service             not-found inactive dead xendomains.service            
● virtlxcd.socket                not-found inactive dead virtlxcd.socket
● virtqemud.socket               not-found inactive dead virtqemud.socket
● virtvboxd.socket               not-found inactive dead virtvboxd.socket
● virtvzd.socket                 not-found inactive dead virtvzd.socket
● virtxend.socket                not-found inactive dead virtxend.socket

Encontre unidades que fazem referência a serviços ausentes

grep -rR "<service_name>" /usr/lib/systemd
grep -rR "<service_name>" /etc/systemd

# See tables in man page for more directories to search with grep and to learn their purpose
man systemd.unit

Amostra paratmp.mount

grep -rR "tmp.mount" /usr/lib/systemd
grep -rR "tmp.mount" /etc/systemd

Saída:

/usr/lib/systemd/system/basic.target:After=sysinit.target sockets.target paths.target slices.target tmp.mount
/usr/lib/systemd/system/basic.target:Wants=tmp.mount

Limpar referências

sudo nano /usr/lib/systemd/system/basic.target

Conteúdo:

[Unit]
Description=Basic System
Documentation=man:systemd.special(7)
Requires=sysinit.target
Wants=sockets.target timers.target paths.target slices.target
After=sysinit.target sockets.target paths.target slices.target tmp.mount

RequiresMountsFor=/var /var/tmp
Wants=tmp.mount

Aqui encontramos tmp.mountabaixo After=eWants=

Quero excluir essas entradas para que systemctl --state=not-found --allnão sejam mais listadas, e assim por diante para cada unidade ausente.

Pergunta

É seguro excluir essas entradas para cada unidade ausente no sistema?

systemd
  • 1 respostas
  • 34 Views
Martin Hope
metablaster
Asked: 2024-11-05 03:38:06 +0800 CST

Os pacotes build-deps precisam permanecer instalados ou podemos removê-los?

  • 5

Geralmente sigo o SimpleBackportCreation para criar backports personalizados para vários pacotes que não existem no branch estável.

Um dos passos é instalar build-depscom sudo mk-build-deps --install --removecomando.

A questão é: depois que o backport estiver instalado, preciso manter build-depsos pacotes instalados ou é seguro excluí-los depois que o backport personalizado estiver instalado?

Quero principalmente economizar espaço, mas o motivo secundário é que atualizar um backport pode desinstalar/atualizar build-depsuma versão anterior, mas a compilação para a nova versão do backport pode falhar, então estou pensando se, nesse caso, build-depsos pacotes removidos afetarão o backport antigo criado inicialmente e já instalado.


Resumindo, posso purgar *-build-deps?

debian
  • 1 respostas
  • 20 Views
Martin Hope
metablaster
Asked: 2024-10-01 17:06:44 +0800 CST

Os comandos ethers, rarp, plipconfig e slattach estão obsoletos e quais são seus substitutos?

  • 8

Há 10 ferramentas de rede no pacote net-tools do Debian (e também em outras distros, provavelmente o pacote tem um nome diferente):

  • arp (ip n)
  • ifconfig (ip)
  • mmi-ferramenta (ethtool)
  • nameif (link ip)
  • netstat (ss)
  • rota (ip r)
  • éteres
  • rapp
  • plipconfig
  • slattach

Pela lista acima, tenho certeza de que os primeiros 6 estão obsoletos e há substitutos conhecidos, conforme estabelecido entre parênteses.

Mas não está claro sobre os outros 4, eles também estão obsoletos e quais são seus substitutos? São eles:

  • éteres
  • rapp
  • plipconfig
  • slattach
debian
  • 1 respostas
  • 153 Views
Martin Hope
metablaster
Asked: 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

  • 7

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 respostas
  • 78 Views
Martin Hope
metablaster
Asked: 2024-09-28 14:13:52 +0800 CST

Como tornar o qdisc permanente? (para persistir reinicializações)

  • 5

Uma pergunta relacionada está aqui, mas a resposta não é muito intuitiva. Certamente há um método mais padrão para configurar NIC:
Como posso associar permanentemente comandos tc qdisc a uma interface específica?

Outra questão relacionada é:
As regras do TC podem persistir além de uma reinicialização? Onde?

No entanto, não estou usando networkingo serviço para editar, /etc/network/interfacesconforme detalhado posteriormente na pergunta.


Atualmente, minha placa de rede wifi está configurada para usar noqueuedisciplina de enfileiramento e quero alterá-la para fq_codel, mas, para que ela persista, reinicialize:

ip link show dev wlan0
    
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

Para mudar qdisceu faço:

sudo tc qdisc add dev wlan0 root fq_codel
ip link show dev wlan0

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DORMANT group default qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

Isso funciona, qdiscfoi alterado conforme visto, mas somente até a reinicialização.

Também verifiquei o qdiscvalor padrão definido no sistema, que já está definido como fq_codel:

sudo sysctl net.core.default_qdisc

net.core.default_qdisc = fq_codel

A rede é controlada por systemd-networkd, networkingo serviço é desabilitado.
A NIC é gerenciada por NetworkManagersem nenhuma configuração systemd.

networking
  • 1 respostas
  • 29 Views
Martin Hope
metablaster
Asked: 2024-09-19 02:39:42 +0800 CST

Como identificar e desinstalar pacotes instalados como dependências durante a criação de um backport personalizado?

  • 7

Estou usando o método no link abaixo para criar um backport personalizado do Debian, por exemplo, para pacotes que ainda não foram backportados, mas existem no branch de testes:

https://wiki.debian.org/SimpleBackportCreation

Agora eu gostaria de desfazer o pacote backport instalado, mas simplesmente executar sudo apt purge <package_name>não é suficiente porque vejo que alguns pacotes foram instalados e sobreviveram à limpeza. (Eu os vejo no menu do aplicativo e posso executá-los)

A questão é como identificar todos os pacotes extras que foram instalados para poder eliminá-los também?

Ainda tenho o diretório de compilação que foi usado para compilar o backport.

Se eu executar sudo less /var/log/apt/history.logo log, ele mostrará apenas o backport, mas não mostrará os pacotes extras que foram instalados.

O pacote específico que atualmente desejo expurgar, bem como as dependências, é crow-translate: https://packages.debian.org/trixie/crow-translate

Os pacotes extras neste caso específico que vejo no menu do aplicativo são:

  • Assistente QT 5
  • Designer QT 5
  • QT 5 Linguista

Mas acredito que há mais que não estão visíveis no menu do aplicativo.

debian
  • 1 respostas
  • 67 Views
Martin Hope
metablaster
Asked: 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?

  • 5

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 respostas
  • 49 Views
Martin Hope
metablaster
Asked: 2024-08-14 15:07:55 +0800 CST

Construções bit a bit para corresponder aos sinalizadores TCP em nftables

  • 5

Não consigo encontrar nenhuma documentação que explique a sintaxe e a avaliação dos seguintes exemplos de construção:

add rule filter output tcp flags & (syn | ack) == syn | ack
add rule filter output tcp flags & (fin | syn) != 0

Eu li a resposta do @AB aqui: logging TCP flags .

Isso apenas explica o propósito dessas construções ( TCPsinalizadores de correspondência), mas eu gostaria de saber a sintaxe e como funciona a avaliação das expressões junto com os operadores.

Particularmente o significado dos operadores "bit a bit" e como eles são avaliados nas flagsexpressões como um todo.

Também não está claro para mim o que != 0faz e, em particular, o propósito do &operador inicial.

Eu sei que eles são OR, AND etc., mas não entendo como isso se aplica às nftablesregras.

Alguns exemplos mais complexos também poderiam ajudar.

tcp
  • 1 respostas
  • 20 Views
Martin Hope
metablaster
Asked: 2024-08-08 16:34:51 +0800 CST

pkexec vs runuser

  • 3

pkexecnão é instalado por padrão, ao Debiancontrário runuserdo que é.

Até agora eu tenho usado, pkexecmas descobri que também existe runuser, e desde então runuserparece ser mais avançado (olhando as opções na manentrada que não entendo completamente e não usei o comando ainda), então isso me fez pensar se existe existe qualquer benefício para instalar pkexecjá runuserestá lá.

Quais são os prós e os contras runuserem comparação com pkexec?

debian
  • 1 respostas
  • 31 Views
Martin Hope
metablaster
Asked: 2024-08-03 01:40:29 +0800 CST

comando de sincronização executado como usuário padrão

  • 5

Existem vários blogs on-line dizendo que se syncfor executado, pois sudosincronizará todos os sistemas de arquivos, mas se for executado normalmente (sem sudo), sincronizará o sistema de arquivos "atual".

Mas não está claro o que significa "atual", qual sistema de arquivos é atual?

Se eu tiver 3 discos onde cada um tem 2 partições ext4 totalizando 6 sistemas de arquivos, então qual deles é "atual", synccontra qual deles funcionará se não for executado sudo?

EDITAR:

Blogs que afirmam isso:

https://www.baeldung.com/linux/sync-command

https://phoenixnap.com/kb/linux-sync

Citações:

Geralmente, para sincronizar o sistema de arquivos atual, executamos o comando sincronizar sem qualquer opção:

$ sincronização

Embora o uso de sincronização sem argumentos sincronize o sistema de arquivos atual, a execução do comando com sudo sincroniza todos os sistemas de arquivos montados.

command
  • 1 respostas
  • 25 Views
Martin Hope
metablaster
Asked: 2024-04-28 22:15:54 +0800 CST

Listar switch virtual openvswitch com comando ip

  • 6

Configurei o switch virtual openvswitch e posso listá-lo com ipo comando da seguinte maneira:

# Show all interfaces
ip link

Saída:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

<snip>

5: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 8a:94:11:48:01:db brd ff:ff:ff:ff:ff:ff
6: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether e6:db:3f:88:4b:48 brd ff:ff:ff:ff:ff:ff

O openvswitch desta saída é nomeadoovsbr0

Agora quero usar o ipcomando para listar apenas esse switch virtual e excluir outras interfaces, por exemplo:

# List only bridges
ip link show type bridge

Resultado esperado:

6: ovsbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether e6:db:3f:88:4b:48 brd ff:ff:ff:ff:ff:ff

Saída real:

<no output>


Por que espero que este comando seja gerado ovsbr0?

Este problema é específico openvswitchporque se eu usar o mesmo comando para listar pontes que não o são, openvswitchele funcionará bem.

Exemplo com uma ponte criada com ipcomando:

# Create bridge named "br0"
sudo ip link add br0 type bridge

# Show the newly created bridge called "br0"
ip link show type bridge

Fornece o resultado esperado:

7: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 6a:76:6f:50:da:35 brd ff:ff:ff:ff:ff:ff

Como você pode ver, o comando funciona se a ponte for criada com ipo comando.
Mas não funciona paraopenvswitch

Pergunta:

  1. Como utilizo o ipcomando para listar apenas openvswitchinterfaces (switches virtuais)?
  2. Por que o ipcomando não funciona para listar openvswitchinterfaces (switches virtuais)?

Contexto adicional:

O openvswitchnão foi criado com ipo comando, mas sim com o comando ovs-vsctl que faz parte do openvswitchpacote:

sudo ovs-vsctl add-br ovsbr0

No entanto, esta openvswitchponte pode ser excluída com ipo comando, mesmo que não tenha sido criada com ipo comando:

# Delete it with ip command
sudo ip link delete ovsbr0

# Alternative and conventional method
sudo ovs-vsctl del-br ovsbr0

O que eu tentei:

# List openvswitch only but specifying type other than TYPE bridge
ip link show type TYPE

Quais são os outros tipos de interface para testar a listagem?

# See TYPE := section from this output for types other than "bridge"
ip link show help
networking
  • 1 respostas
  • 15 Views
Martin Hope
metablaster
Asked: 2024-04-19 05:32:09 +0800 CST

Qual é o escopo do arquivo /var/log/user.log?

  • 4

/var/log/user.log

Qual é o escopo deste arquivo de log? Está relacionado apenas ao usuário conectado no momento ou a vários usuários e quais?

Do que se trata esse arquivo de log e quando devo examiná-lo?

logs
  • 1 respostas
  • 33 Views
Martin Hope
metablaster
Asked: 2024-04-11 02:50:14 +0800 CST

etapa(s) de decisão de roteamento natables

  • 5

No link abaixo há uma imagem explicando o fluxo de pacotes entre cadeias emnftables

Ganchos de filtro de rede

Entendo tudo menos uma coisa, a imagem não explica em que fase é routing decisionfeito?

Segundo a imagem deverá ser feito em 2 locais:

  1. Depois preroutingdo gancho, mas antes inpute forwardcapuz
  2. Antes outputdo gancho quando um pacote sai do processo localhost

O primeiro ponto acima faz sentido porque existem 2 ganchos possíveis a seguir prerouting, no entanto, para o ponto 2 não está claro qual decisão de roteamento deve ser executada, pois a única opção de fluxo do processo local é o outputgancho, portanto não deve haver nenhuma decisão de roteamento, mas o a imagem diz que existe um.

Isso me faz acreditar que existe apenas uma decisão de roteamento que está no ponto 1 acima.
Por que a imagem especifica routing decisiono nó entre local processe outputo gancho?

SNATé feito no postroutinggancho que, de acordo com a documentação, "vê todos os pacotes após o roteamento, pouco antes de saírem do sistema local"
Mas a questão é qual roteamento? já que existem 2 decisões de roteamento de acordo com a imagem.

E aliás. o que é "decisão de roteamento" (nó na imagem) Não acho que seja NATporque NATé feito em preroutinge postroutingganchos.

nftables
  • 1 respostas
  • 12 Views
Martin Hope
metablaster
Asked: 2024-04-10 03:03:26 +0800 CST

uso e significado de mascarada [para:PORT_SPEC]

  • 5

Aqui está um exemplo de conjunto de regras relevante com 2 exemplos nftablesde regras NAT que mascaram o IP da máquina virtual para a LAN:

#!/usr/sbin/nft -f

add table nat_4

# Sees all packets after routing, just before they leave the local system
add chain nat_4 postrouting_nat_4 {
    type nat hook postrouting priority srcnat; policy accept;
    comment "Postrouting SNAT IPv4 traffic"
}

# Masquerade all packets going from VMs to the LAN/Internet
add rule nat_4 postrouting_nat_4 meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade to :1024-65535

# Same rule as above but without [to :PORT_SPEC]
add rule nat_4 postrouting_nat_4 meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade

O endereço IP de exemplo 192.168.122.0/24é o endereço de rede no qual a máquina virtual opera.

Eu entendo o que masqueradeacontece, ele funciona SNATalterando o IP de origem para o IP da interface de saída.
Nesse sentido, entendo o que faz a segunda regra do exemplo acima.

O que não entendo é a declaração [to :PORT_SPEC] ( docs link ), no exemplo (1ª regra):masquerade to :1024-65535

O que exatamente faz masquerade to :1024-65535e é necessário especificá-lo?
Essas duas regras são basicamente iguais ou em que são diferentes?
Qual é o preferido para fazer NAT da máquina virtual para a Internet em vez do switch virtual no host local?

nftables
  • 1 respostas
  • 12 Views
Martin Hope
metablaster
Asked: 2024-04-10 02:16:05 +0800 CST

Declare e use um conjunto nomeado de tipos ICMP em nftables

  • 6

Aqui está um exemplo prático de como atualmente uso um unamed settipo de ICMP:

#!/usr/sbin/nft -f

add table filter_4

add chain filter_4 icmp_out_4 {
    comment "Output ICMPv4 traffic"
}

define response_icmp_4 = {
    0, # Echo Reply
    3, # Destination Unreachable
    10, # Router Solicitation
    11, # Time Exceeded
    12, # Parameter Problem
    14 # Timestamp Reply
}

# Block ICMP response from localhost
add rule filter_4 icmp_out_4 icmp type $response_icmp_4 drop

O que eu quero fazer é converter isso unamed setchamado response_icmp_4em um conjunto nomeado.
Aqui está minha tentativa frustrada de fazer isso:

# Declare named set
add set filter_4 response_icmp_4 { type inet_service }

# Add ICMP type elements
add element filter_4 response_icmp_4 {
    0, # Echo Reply
    3, # Destination Unreachable
    10, # Router Solicitation
    11, # Time Exceeded
    12, # Parameter Problem
    14 # Timestamp Reply
}

A criação do conjunto funciona, mas é recusada durante o processamento da regra:

# Block ICMP response from localhost
add rule filter_4 icmp_out_4 icmp type @response_icmp_4 drop

Com a seguinte saída de erro:

Erro: incompatibilidade de tipo de dados, tipo ICMP esperado, expressão tem tipo serviço de rede de internet

O erro é autoexplicativo, mas a questão é: o que typedevo especificar? porque type inet_servicenão funciona.

De acordo com os documentos, as expressões válidas typesãoipv4_addr, ipv6_addr, ether_addr, inet_proto, inet_service, mark

Também é possível especificar typeofa derivação automática do tipo de dados, mas isso não funciona tão bem, por exemplo:

add set filter_4 response_icmp_4 { typeof vlan id }

Quais erros com erro semelhante:

Erro: incompatibilidade de tipo de dados, tipo ICMP esperado, expressão tem tipo inteiro

O que é um erro estranho porque ICMP typeÉ um número inteiro.

Se você também puder criar um link para a documentação explicando isso, isso seria útil porque não consigo encontrá-lo.

nftables
  • 1 respostas
  • 7 Views
Martin Hope
metablaster
Asked: 2024-04-08 18:29:30 +0800 CST

Declarar objeto auxiliar ct fora do escopo de declaração da tabela em nftables

  • 6

Aqui está um exemplo prático de como ct helpero objeto é atualmente declarado de acordo com os documentos do Nftables

#!/usr/sbin/nft -f

add table filter_4 {
    # TODO: Can helper object be declared outside the scope of table declaration scope?
    # ct helper stateful object
    # "ftp-standard" is the name of this ct helper stateful object
    # "ftp" is the in-kernel name of the ct helper for ftp
    ct helper ftp-standard {
        type "ftp" protocol tcp;
    }
}

O ct helperobjeto é então usado para ex. do seguinte modo:

add chain filter_4 new_out_4 {
    comment "New output IPv4 traffic"
}

# FTP (active and passive)
# Rule for initial ftp connection (control channel), setting ct helper stateful object to use
# "ftp-standard" is the name of the ct helper stateful object
add rule filter_4 new_out_4 tcp sport >1023 tcp dport 21 ct helper set "ftp-standard" accept

O que eu quero alcançar é conhecer a sintaxe para declarar ct helperobjetos fora da tabela de maneira semelhante a como os conjuntos são declarados.

Um exemplo de como um conjunto é declarado fora do escopo da declaração da tabela

add set filter_4 multicast_proto { type inet_proto; comment "IPv4 multicast protocols"; }
add element ip filter_4 multicast_proto { udp, igmp }

De maneira semelhante, quero declarar ct helpero objeto, por exemplo:

# Table declaration
add table filter_4

# Declare ct helper separately
add ct helper ftp-standard {
    type "ftp" protocol tcp;
}

É claro que isso não funciona, qual é a sintaxe para adicionar\declarar ct helperassim?

Parece ct helperque deve estar vinculado a uma tabela (isso é verdade?), portanto, talvez o nome da tabela deva ser especificado no exemplo acima.

nftables
  • 1 respostas
  • 8 Views
Martin Hope
metablaster
Asked: 2024-03-08 18:35:39 +0800 CST

nftables – pacotes multicast não correspondidos

  • 6

Eu configurei uma regra para combinar pacotes multicast da seguinte maneira:

add rule filter_4 new_out_4 meta pkttype multicast goto multicast_out_4

filter_4é uma tabela IPv4, new_out4é uma cadeia de saída e multicast_out_4é uma cadeia para lidar com tráfego somente multicast.

Aqui está uma imagem mais completa da tabela IPv4, excluindo a parte não relevante:

#!/usr/sbin/nft -f

add table filter_4

add chain filter_4 output {
    # filter = 0
    type filter hook output priority filter; policy drop;
}

add chain filter_4 multicast_out_4 {
    comment "Output multicast IPV4 traffic"
}

add chain filter_4 new_out_4 {
    comment "New output IPv4 traffic"
}

#
# Stateful filtering
#

# Established IPv4 traffic
add rule filter_4 input ct state established goto established_in_4
add rule filter_4 output ct state established goto established_out_4

# Related IPv4 traffic
add rule filter_4 input ct state related goto related_in_4
add rule filter_4 output ct state related goto related_out_4

# New IPv4 traffic ( PACKET IS MATCHED HERE )
add rule filter_4 input ct state new goto new_in_4
add rule filter_4 output ct state new goto new_out_4

# Invalid IPv4 traffic
add rule filter_4 input ct state invalid log prefix "drop invalid_filter_in_4: " counter name invalid_filter_count_4 drop
add rule filter_4 output ct state invalid log prefix "drop invalid_filter_out_4: " counter name invalid_filter_count_4 drop

# Untracked IPv4 traffic
add rule filter_4 input ct state untracked log prefix "drop untracked_filter_in_4: " counter name untracked_filter_count_4 drop
add rule filter_4 output ct state untracked log prefix "drop untracked_filter_out_4: " counter name untracked_filter_count_4 drop

Na configuração acima, o novo tráfego de saída, incluindo multicast, é correspondido por regraadd rule filter_4 output ct state new goto new_out_4

Aqui está new_out_4uma cadeia apenas com a regra multicast relevante (não funcional) que não funciona:

# Multicast IPv4 traffic ( THIS RULE DOES NOT WORK, SEE LOG OUTPUT BELOW)
add rule filter_4 new_out_4 meta pkttype multicast goto multicast_out_4

#
# Default chain action ( MULTICAST PACKET IS DROPPED HERE )
#
add rule filter_4 new_out_4 log prefix "drop new_out_4: " counter name new_out_filter_count_4 drop

Aqui está o que o log diz sobre pacotes multicast descartados:

descarte new_out_4: IN= OUT=eth0 SRC=192.168.1.100 DST=224.0.0.251 LEN=163 TOS=0x00 PREC=0x00 TTL=255 ID=27018 DF PROTO=UDP SPT=5353 DPT=5353 LEN=143

O pacote descartado foi enviado para o endereço de destino 224.0.0.251, este é o endereço multicast, deveria ser correspondido pela regra multicast em new_out_4cadeia e deveria ser processado por multicast_out_4cadeia, mas não foi.

Em vez disso, o pacote não foi correspondido e foi descartado pela regra de descarte padrão na new_out_4cadeia acima, consulte o comentário (Ação da cadeia padrão).

Obviamente isto significa que a regra multicast não funciona.

Por que a regra multicast não funciona?

Esperado:

meta pkttype multicastcorresponde ao endereço de destino224.0.0.251

EDITAR:

Informações do sistema:
Kernel: 6.5.0-0.deb12.4-amd64
teve o mesmo problema com o kernel anterior 6.1

nftables: v1.0.6 (Lester Gooch #5)

firewall
  • 1 respostas
  • 28 Views

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