Короткий ответ

ICMP Echo — не веб. Сайт — это DNS → TCP (обычно 443) → TLS → HTTP. Если ping зелёный, вы доказали только, что какой-то узел отвечает на echo (иногда anycast/CDN, не ваш origin). Дальше отдельно: резолвинг, порт 80/443, SNI/прокси, MTU.

Не отключайте брандмауэр «чтобы сайт открылся». Сначала nslookup, затем Test-NetConnection -Port 443 на полученный IP, затем curl -vI.

Симптомы и как отличить

Типичная картина:

  • ping example.com — ответы;
  • Chrome/Edge: таймаут, ERR_SSL_PROTOCOL_ERROR, долгий спиннер;
  • curl http://10.0.10.10 с сервера работает, с ПК — нет, или наоборот.

Отличия:

КартинаНе «пинг vs сайт» как одноКуда
Ping тоже нетшлюз/NATЕсть IP, нет интернета
Имя не резолвитсяDNSDNS нестабилен
Только из одной сетиsplit DNS, NAT, маршрутСайт только из одной сети
Мелкий ping есть, большой нетMTUНеверный MTU
Внутренний портал по IP открывается, по имени — чужой сертификатsplit-horizonSplit DNS

Ping по имени успешен не доказывает верный A-запись: вы могли пропинговать не тот хост, что открывает браузер (Happy Eyeballs, IPv6, другой resolver).

Возможные причины

  1. DNS отдаёт не тот IP (кэш, split, hosts).
  2. TCP/80/443 фильтруется, ICMP разрешён.
  3. Прокси/WPAD: ping минует прокси, браузер — нет.
  4. TLS-инспекция, неверный SNI, истёкший сертификат.
  5. PMTUD: ICMP echo 32 байт проходит, TLS-сегменты нет.
  6. Служба на сервере слушает другой интерфейс/IPv6-only.
  7. Фильтр по SNI/категориям на шлюзе.
  8. Браузерный DoH обходит корпоративный DNS и получает внешний IP, до которого нет маршрута (hairpin).

Диагностика

Один и тот же FQDN и один клиент. Запишите IP, который видит браузер (DevTools → Security / chrome://net-export избыточен для старта).

1. Что резолвится

nslookup example.com
nslookup example.com 10.0.10.2
Resolve-DnsName example.com -Type A
Resolve-DnsName example.com -Type AAAA
Get-Content C:\Windows\System32\drivers\etc\hosts
resolvectl query example.com
nslookup example.com 10.0.10.2
getent ahosts example.com
cat /etc/hosts

Сравните A/AAAA с тем, куда реально идёт браузер. Если nslookup без сервера и nslookup … 10.0.10.2 расходятся — клиент спрашивает не 10.0.10.2.

2. ICMP отдельно от TCP

На тот же IP, что вернул DNS:

$ip = '93.184.216.34'  # подставьте IP из nslookup, не копируйте как догму
ping -n 4 $ip
Test-NetConnection $ip -Port 80
Test-NetConnection $ip -Port 443
Test-NetConnection example.com -Port 443
ping -c 4 "$IP"
traceroute -n "$IP"
nc -vz "$IP" 443
curl -vI --connect-timeout 5 "https://example.com/"

Интерпретация:

  • Ping OK, TCP 443 False — фильтр/сервис, не «интернет нет».
  • TCP 443 True, curl зависает после ClientHello — TLS/MTU/инспекция.
  • Test-NetConnection example.com резолвит иначе, чем nslookup — IPv6 vs IPv4.

3. Прокси и системный HTTP

Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | Select-Object ProxyEnable, ProxyServer, AutoConfigURL
netsh winhttp show proxy
env | grep -i proxy

Если WinHTTP-прокси задан, ping его не использует, Edge — использует. Для проверки обойдите прокси в curl --noproxy '*' https://example.com/ (только как тест).

4. MTU как скрытый «пинг есть»

ping -n 2 -f -l 1472 10.0.10.1
ping -n 2 -f -l 1472 $ip
ping -c 2 -M do -s 1472 10.0.10.1
ping -c 2 -M do -s 1400 "$IP"

DF+большой размер падает, мелкий ping жив — не открывайте порт «шире», идите в статью про MTU.

5. С сервера приложения

На Ubuntu origin:

ss -lntp | grep -E ':80|:443'
curl -vI --resolve example.com:443:127.0.0.1 https://example.com/

Слушает только 127.0.0.1 — с LAN «пинг хоста» (если разрешён) будет, сайт — нет.

Решение

Сценарий A. DNS врёт

Исправьте зону/кэш, уберите строку из hosts. Сброс: см. DNS-кеш хранит старый адрес. На клиенте домена не оставляйте публичный DNS единственным.

Сценарий B. 443 закрыт, ICMP открыт

На пути: firewall host, NAT forward только ping (редко), ACL «allow icmp deny tcp». Откройте нужный порт до origin, не «any any». На Windows-сервере проверьте Get-NetFirewallRule для 80/443, не отключайте профиль Domain.

Сценарий C. Прокси

Для сайтов, которые должны идти напрямую (внутренний портал 10.0.10.10), добавьте bypass. Для внешних — рабочий прокси. Не смешивайте PAC «всё на прокси» с split-DNS внутренними зонами.

Сценарий D. TLS

Сверьте сертификат, цепочку, время клиента. ERR_SSL при живом TCP — не маршрут. Расхождение имени и IP — split DNS.

Сценарий E. Браузерный DoH

Edge/Chrome «Secure DNS» обходит 10.0.10.2. Для корпоративной сети выключите DoH политикой, верните резолвер. Это чинит внутренние сайты, которые снаружи резолвятся в публичный IP без hairpin.

Как проверить, что проблема устранена

nslookup example.com 10.0.10.2
Test-NetConnection example.com -Port 443
curl.exe -I https://example.com/
resolvectl query example.com
nc -vz "$(dig +short example.com A | head -1)" 443
curl -I https://example.com/

Откройте сайт в обычном и в приватном окне (без расширений). Проверьте HTTP и HTTPS. Если ping по-прежнему единственный «успех» — вы не закончили.

Если не помогло

  • Только смартфон на той же Wi‑Fi открывает — сравните DNS и IPv6 SLAAC.
  • curl с ПК работает, браузер нет — расширение, HSTS, кэш, старый HTTP/3 QUIC (UDP/443 режется, ICMP жив). Проверьте QUIC: отключите в браузере на тест, не навсегда в ОС.
  • Сайт открывается по HTTP, HTTPS нет — сертификат/TLS-фильтр.
  • SMTP/RDP при этом живы — вы в задаче «веб», не default route.

Профилактика

  • Мониторинг синтетики: DNS + TCP/443 + HTTP 200, не один ping.
  • Запрет DoH на корпоративных ПК политикой.
  • Явный PAC/bypass для внутренних зон.
  • Документировать, какие узлы отвечают на ICMP, какие нет — чтобы ping не был KPI.

FAQ

Почему админ пингует сервер, а пользователь нет?

Разный VLAN, ICMP разрешён только с management. Для сайта это нерелевантно: смотрите TCP с пользовательского VLAN.

Нужно ли разрешать ICMP наружу для «интернета»?

Нет. Для веба нужен TCP/443 (и DNS). ICMP полезен для PMTUD; глухой фильтр echo не равен глухому PMTUD.

curl работает, браузер нет. Кто врёт?

Часто прокси WinINET vs прямой curl, или IPv6 в браузере. Сравните curl -4/-6 и Get-NetAdapterBinding.

Можно ли судить по ping -t на время открытия страницы?

Нет. Потеря echo и HTTP — разные очереди. Для качества канала — потеря пакетов, не эта статья.

Test-NetConnection пишет PingSucceeded True и TcpTestSucceeded False. Это нормально?

Да, именно этот раскол — тема статьи. Дальше ACL/служба на порту, не «перезагрузить коммутатор».