ping одного домена получает ответы от чужого хоста — определите причину
Пользователь сообщает, что ping домена одной компании возвращает ответы, явно идущие с сервера совсем другой организации. По выводу ниже объясните, как это возможно и как вы подтвердите и устраните это на хосте.
$ ping shop.example.com
PING shop.example.com (203.0.113.99) 56(84) bytes of data.
64 bytes from 203.0.113.99: icmp_seq=1 ttl=58 time=11 ms
# но 203.0.113.99 — сервер ДРУГОЙ компании
$ nslookup shop.example.com → Name: shop.example.com Address: 198.51.100.4 (НАСТОЯЩИЙ IP)
Определите причину и фикс.
Разрешение имени переопределено локально. ping разрешает имя через nsswitch.conf, который обычно проверяет /etc/hosts до DNS — так что статическая запись там (сопоставляющая shop.example.com неверному IP) побеждает ответ DNS. Расхождение IP у ping и nslookup это подтверждает, ведь nslookup спрашивает DNS напрямую. Фикс: почистить /etc/hosts и выяснить, как появилась запись.
- ✗Забывать, что
/etc/hostsопрашивается до DNS черезnsswitch.conf - ✗Не замечать, что расхождение
nslookup(прямой DNS) сpingуказывает причину - ✗Винить удалённый DNS-сервер, когда переопределение локальное
- →Как
nsswitch.confопределяет порядокfiles(hosts) иdns? - →Почему неожиданную запись в
/etc/hostsстоит считать инцидентом безопасности?
Решение
ping разрешает имя не через DNS напрямую, а через системный резолвер по правилам nsswitch.conf, где обычно стоит hosts: files dns — то есть /etc/hosts проверяется раньше DNS.
$ getent hosts shop.example.com # покажет, как резолвится имя в системе
$ grep shop.example.com /etc/hosts # найдёт статическую запись-переопределение
Раз ping берёт 203.0.113.99, а nslookup (идущий прямо в DNS) — 198.51.100.4, значит имя переопределено локально записью в /etc/hosts.
Фикс: удалить лишнюю строку из /etc/hosts. Неожиданная запись — повод считать это возможной подменой (фишинг/MITM): выясните, кто и когда её добавил.