Я управляю KVM VPS на 104.143.14.103, который по какой-то причине не может связаться с http://pecl.php.net .
Когда я пингую
IP-адрес сервера PECL (104.236.228.160), чтобы убедиться, что это не проблема DNS, и каждый раз я получаю Destination Host Unreachable
].
Как я могу отладить, является ли основная причина неправильной конфигурацией моего сервера или тем, что эхо-запрос отклоняется целевым сервером?
У меня нет проблем пинг
с PECL с различных других серверов что мне удается, поэтому я знаю, что PECL не блокирует все эхо-запросы.
У меня также нет проблем ping
с любыми другими сайтами, которые я пробую с моего VPS, проблема только в сервере PECL.
Я использовал зеркало моего хоста VPS ( http://lg.las1.ultravps.net/ ), и у него нет проблем с проверкой связи PECL. Я также отправил запрос в службу поддержки хосту, и они вошли в гипервизор для этого узла и сказали, что могут успешно проверить связь с PECL.
Я запустил traceroute
на сервер PECL с другого сервера, чтобы найти IP-адрес предпоследнего перехода. Я могу успешно пропинговать этот IP-адрес (162.243.188.222) со своего VPS.
Когда я запускаю traceroute
с VPS, я получаю:
[jeffwidman@ultravps ~]$ traceroute pecl.php.net
traceroute to pecl.php.net (104.236.228.160), 30 hops max, 60 byte packets
1 ultravps.jeffwidman.com (104.143.14.103) 3005.478 ms !H 3005.400 ms !H 3005.270 ms !H
[jeffwidman@ultravps ~]$ traceroute 104.236.228.160
traceroute to 104.236.228.160 (104.236.228.160), 30 hops max, 60 byte packets
1 ultravps.jeffwidman.com (104.143.14.103) 3005.916 ms !H 3005.877 ms !H 3005.867 ms !H
[jeffwidman@ultravps ~]$
Я проверил несколько сайтов из черного списка, просто чтобы убедиться, что я не унаследовал плохой IP-адрес ... ни один из них не указал мой IP. Я также не регулярно нажимаю на PECL, и эта проблема возникает в течение нескольких дней, поэтому я был бы очень удивлен, если бы столкнулся с ограничением скорости.
Что еще я могу сделать, чтобы выяснить, блокирует ли PECL мой IP-адрес или что-то неправильно настроено на моем VPS?
Вывод ip route
:
[jeffwidman@ultravps ~]$ ip route
default via 104.143.14.1 dev eth0 proto static metric 100
104.0.0.0/8 dev eth0 proto kernel scope link src 104.143.14.103 metric 100
Вывод ip адрес
:
[jeffwidman@ultravps ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:3c:d1:49:f6 brd ff:ff:ff:ff:ff:ff
inet 104.143.14.103/8 brd 104.255.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::216:3cff:fed1:49f6/64 scope link
valid_lft forever preferred_lft forever
[jeffwidman@ultravps ~]$
Теперь проблема очевидна.
В вашем сетевом интерфейсе установлен неправильный префикс.
Он установлен на / 8 (или в старой нотации маски сети 255.0.0.0), который сообщает вашей операционной системе, что каждый адрес в диапазоне от 104.0.0.0 до 104.255.255.255 включительно находится в той же локальной сети, что и ваш VPS.
Очевидно, это не так. Большая часть этого диапазона разделена на очень маленькие сети, разбросанные по всей Америке.
Из-за этого ваш компьютер не знает, что он предназначен для маршрутизации пакетов, и пытается связаться с любым адресом, начинающимся с 104. в той же локальной сети. , где он не может быть найден.
Чтобы решить проблему, вам необходимо перенастроить сеть для правильной сетевой маски или диапазона CIDR. Вы можете получить эту информацию у своего VPS-провайдера.
Поскольку вы тестируете общедоступный веб-сайт, веб-служба с метко названным отключена для всех или только для меня очень полезна. Просто введите адрес рассматриваемого сайта в их веб-форму, и они будут пинговать адрес из нескольких мест. Мне еще не приходилось сталкиваться с ситуацией, когда сервер был включен, но они не могли связаться с ним, даже в некоторых плохо настроенных местах в Африке и на Ближнем Востоке.
Вы также можете использовать его из интерфейса командной строки, просто grep вывод для диапазона
, чтобы его было легче читать:
$ curl -s http://www.downforeveryoneorjustme.com/serverfault.com | grep span
It's just you. <a href="http://serverfault.com" class="domain">http://serverfault.com</a></span> is up.