Короткий ответ
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, нет интернета |
| Имя не резолвится | DNS | DNS нестабилен |
| Только из одной сети | split DNS, NAT, маршрут | Сайт только из одной сети |
| Мелкий ping есть, большой нет | MTU | Неверный MTU |
| Внутренний портал по IP открывается, по имени — чужой сертификат | split-horizon | Split DNS |
Ping по имени успешен не доказывает верный A-запись: вы могли пропинговать не тот хост, что открывает браузер (Happy Eyeballs, IPv6, другой resolver).
Возможные причины
- DNS отдаёт не тот IP (кэш, split, hosts).
- TCP/80/443 фильтруется, ICMP разрешён.
- Прокси/WPAD: ping минует прокси, браузер — нет.
- TLS-инспекция, неверный SNI, истёкший сертификат.
- PMTUD: ICMP echo 32 байт проходит, TLS-сегменты нет.
- Служба на сервере слушает другой интерфейс/IPv6-only.
- Фильтр по SNI/категориям на шлюзе.
- Браузерный 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\hostsresolvectl 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 443ping -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 proxyenv | 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 $ipping -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/служба на порту, не «перезагрузить коммутатор».