Bug 39601 - ping не работает с avahi при запуске от рута
Summary: ping не работает с avahi при запуске от рута
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: avahi-daemon (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Sergey Bolshakov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-01-26 14:43 MSK by Aleksei Nikiforov
Modified: 2021-01-26 14:43 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.