Bug 39601

Summary: ping не работает с avahi при запуске от рута
Product: Sisyphus Reporter: Aleksei Nikiforov <darktemplaralt>
Component: avahi-daemonAssignee: Sergey Bolshakov <sbolshakov>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: glebfm, ldv, rider, sbolshakov
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Aleksei Nikiforov 2021-01-26 14:43:06 MSK
При запуске ping от рута, ping не может связаться с avahi и разрезолвить доменные имена, доступные через avahi. При запуске той же команды от простого пользователя всё работает успешно.

При запуске от пользователя:
$ ping -c 2 $NAME.local
PING $NAME.local ($IPADDR) 56(84) bytes of data.
64 bytes from $NAME.$DOMAIN ($IPADDR): icmp_seq=1 ttl=254 time=28.1 ms
64 bytes from $NAME.$DOMAIN ($IPADDR): icmp_seq=2 ttl=254 time=2.38 ms

--- $NAME.local ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 2.382/15.243/28.104/12.861 ms

При запуске от рута:
# ping -c 2 $NAME.local
ping: $NAME.local: System error

При этом удалось найти следующую разницу в поведении:
# strace -u $USERNAME -s 4096 -o strace.ping.user.log ping -с 2 $NAME.local
...
socket(AF_UNIX, SOCK_STREAM, 0)         = 5
...
connect(5, {sa_family=AF_UNIX, sun_path="/var/run/avahi-daemon/socket"}, 110) = 0
...

# strace -s 4096 -o strace.ping.root.log ping -с 2 $NAME.local
...
chroot("/var/resolv")                   = 0
chdir("/")                              = 0
...
socket(AF_UNIX, SOCK_STREAM, 0)         = 7
...
connect(7, {sa_family=AF_UNIX, sun_path="/var/run/avahi-daemon/socket"}, 110) = -1 ENOENT (Нет такого файла или каталога)
...

Файла /var/resolve/var/run/avahi-daemon/socket на системе действительно нет. Есть отдельный другой сокет /var/resolv/var/avahi/socket, отличный от /var/run/avahi-daemon/socket. /var/run находится на tmpfs.