|
#1
|
|||
|
|||
прекрасный RPC
Eugene Grosbein написал(а) к All в Oct 18 07:52:39 по местному времени:
Привет! После ребута машины ВНЕЗАПНО сломался rsync-сервис, запускаемый из inetd. Полез разбираться: $ fgrep rsync /var/log/messages Oct 21 06:08:37 host <daemon.err> inetd[50635]: rsync/tcp: bind: Address already in use Што?! $ fgrep rsync /etc/services rsync 873/tcp rsync 873/udp $ sockstat | fgrep 873 root mountd 1620 5 udp6 :873 *: root mountd 1620 6 tcp6 :873 *: root mountd 1620 7 udp4 :873 *: root mountd 1620 8 tcp4 :873 *: Прекрасный RPC. mountd по дефолту использует функцию bindresvport_sa() чтобы сесть на динамический привилегированный порт и в текущей реализации FreeBSD это IPPORTRANGELOW с дефолтами: net.inet.ip.portrange.lowlast: 600 net.inet.ip.portrange.lowfirst: 1023 То есть, любой сервис, использующий порты от 600 то 1023 и запускаемый после mountd (или nfs-сервера, который запустит mountd по зависимости), так неиллюзорно рискует. Сюда кроме rsyncd входит spamd с его портом 783, ipp (631), ldaps (636), dhcp-failover (647, 847), imaps (993), pop3s (995)... А вообще что угодно из /etc/services, там ещё какой-то ha-cluster есть, порты kerberos, iscsi, ircs, ftps, telnets... и много другого. И так-то это не то чтобы совсем новость, но проверил на своих серверах с dhcp-failover и NFS-клиентом и mountd, конечно, я там не прибивал к порту, как когда-то делал и mountd там сел на порт 620 и только по этой случайности dhcpd успешно занял свой tcp/647 для кластера. Пошел везде прибивать гвоздями, благо у нас есть mountd_flags="-p 620" Eugene --- slrn/1.0.3 (FreeBSD) |