Я запустил who
в общем окне NetBSD, и появился этот странный IP-адрес пользователя:
<redacted> pts/33 May 13 02:13 (XXX.XXX.XXX.XXX)
<redacted> pts/35 May 12 20:59 (202-172-110-147-)
<redacted> pts/36 May 6 20:36 (XXX.XXX.XXX.XXX)
Я никогда не видел такого IP. Очевидно, ping 202-172-110-147-
будет жаловаться с "Не удается разрешить ... (Неизвестный хост)".
Был похожий вопрос опубликовано 7 лет назад, который утверждал, что это нестандартный способ обозначения диапазонов IP-адресов, но, видя, что есть -
в конце адреса это не похоже.
Редактировать:
Я пробовал обратный DNS с nslookup 202-172-110-147-
, в котором возникает ошибка "** сервер не может найти 202-172-110-147-: NXDOMAIN"
Делать w <user>
возвращает:
9:49AM up 89 days, 7:46, 1 user, load averages: 0.23, 0.18, 0.17
USER TTY FROM LOGIN@ IDLE WHAT
<redacted> pts/35 202-172-110-147- Tue08PM 4:13
Изменить 2: это на NetBSD, а не на Linux, как я упоминал в начале (я думал, что это Linux):
$ uname -rsv
NetBSD 8.1 NetBSD 8.1 (GENERIC) #0: Fri May 31 08:43:59 UTC 2019 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC
Изменить 3: после обновления @NStorm я запустил w -n
для отображения сетевых адресов в виде чисел. Я все еще вижу тот же результат
$ w -n <user>
9:57AM up 89 days, 7:54, 1 user, load averages: 0.12, 0.12, 0.14
USER TTY FROM LOGIN@ IDLE WHAT
<redacted> pts/35 202-172-110-147- Tue08PM 4:22
Это просто DNS RR (обратная запись), преобразованная из IP в это имя.
Невозможно действительно сопоставить разрешенную RR с исходным IP-адресом, поскольку записи независимы. Более того, RR может содержать несуществующее доменное имя. Таким образом, вы не можете полагаться на RR для получения информации об IP вошедших пользователей.
Чтобы проверить реальный IP-адрес без разрешения DNS, вы можете использовать last -a -i
команда, которая показывает не только пользователей, вошедших в систему в данный момент, но и всех недавних входов в систему.
Если вам действительно нужно отображать только зарегистрированных в данный момент пользователей, вы можете просто отфильтровать последний вывод с помощью grep следующим образом: last -ai | grep "still logged in"
Или вы можете просто использовать w -fi
согласно комментарию Янне Пиккарайнена ниже, если у вас есть современный дистрибутив. Я только что понял, что это уже действительно неподдерживаемые версии дистрибутива, в которых отсутствует поддержка ключа -i этого инструмента, например CentOS 5. Просто имейте в виду - если ваш дистрибутив жалуется на w -fi
, вы всегда можете использовать last
как указано выше.
РЕДАКТИРОВАТЬ: В качестве информации об обновлении OP для ОС ниже (NetBSD 8.1) вот способ получить IP вместо записей DNS в NetBSD в соответствии с Справочные страницы NetBSD: w -n
-n Show network addresses as numbers (normally w interprets
addresses and attempts to display them symbolically).
Или last -n -f /var/run/utmptx
:
-n Print host addresses numerically. This option works only
on wtmpx(5) entries, and prints nothing on wtmp(5)
entries.
Согласно руководствам NetBSD, если пользователь в данный момент вошел в систему /var/run/utmptx
это единственное место, где он регистрирует реальный IP-адрес вошедших в систему пользователей как struct sockaddr_storage ut_ss
поле. Если у вас нет доступа к этому файлу и / или текущим сетевым соединениям (netstat
например, к которому у вас, скорее всего, тоже нет доступа), вы не можете сказать наверняка. Тогда лучший способ - угадать.
Похоже, что 202-172-110-147-
запись усечена из полного доменного имени. Но мы можем попытаться угадать, что это IP 202.172.110.147
который пытался копать RR. И бинго:
dig -x 202.172.110.147
...
;; ANSWER SECTION:
147.110.172.202.in-addr.arpa. 300 IN PTR 202-172-110-147-cpe.spintel.net.au.
Похоже, это тот самый. И полное имя хоста 202-172-110-147-cpe.spintel.net.au
который просто усечен в who
и другой инструмент вывода.
Если у вас есть доступ к /var/log/wtmpx
вы можете получить этот IP оттуда, но только после того, как этот пользователь выйдет из системы.