Rede indisponível dentro do script shell do udev

Rede indisponível dentro do script shell do udev

Eu tenho o script de shell personalizado executado quando o dispositivo FireWire é conectado/desconectado do meu PC. Script executado com sucesso, mas encontrei rede indisponível dentro deste script.

Aqui está minha regra:

[root@ rules.d]# cat 99-superuser.rules  
ACTION=="remove", KERNEL=="fw*1", SUBSYSTEM=="firewire", RUN+="/root/remove.bash"
ACTION=="add", KERNEL=="fw*1", SUBSYSTEM=="firewire",RUN+="/root/add.bash"

Aqui está meu script bash:

[root@ rules.d]# cat /root/remove.bash
#!/usr/bin/bash
nslookup superuser.com 8.8.8.8 >> /root/udev.log 2>&1

E é isso que ele imprime em /root/udev.log após o dispositivo ser desconectado:

[root@ rules.d]# cat /root/udev.log 
;; connection timed out; no servers could be reached

Ao mesmo tempo, se eu executar o comando manualmente no console:

[root@ rules.d]# nslookup superuser.com 8.8.8.8
Server:     8.8.8.8
Address:    8.8.8.8#53
Non-authoritative answer:
Name:   superuser.com
Address: 151.101.1.69

Estou absolutamente confuso. Como isso vai acontecer? SELinux desativado. firewall configurado. Fedora 28 atualizado.

Alguma sugestão?

UDP:

Graças agravidade- corrigido alterandoIPAddressDeny=qualquerparaIPAddressAllow=qualquerno arquivo systemd-udevd.service.

Responder1

O serviço udev está configurado para usar filtros seccomp para limitar quais soquetes podem ser criados (embora isso tenha sido relaxado recentemente para permitir inet/inet6), bem como filtros de soquete cgroup BPF para limitar quais endereços IP os pacotes podem ser enviados/recebidos de .

Especificamente, as opções em systemd-udevd.service:

[Unit]
# Attaches a cgroup-wide eBPF socket filter
IPAddressDeny=any

informação relacionada