Перейти к содержимому

TTL истек в пути

0

Я купил сервер с 4 IP-адресами, которые необходимо настроить вручную

  • yy.zz.159.7/23 (gw yy.zz.156.1)
  • yy.zz.159.8/23 (gw yy.zz.156.1)
  • yy.zz.159.13/23 (gw yy.zz.156.1)
  • xxx.144.29.243 (gw xxx.144.28.1) Основной IP-адрес

Я добавил подынтерфейс ifcfg-eth0: 1/2/3 для каждого из них, и это моя таблица маршрутов:

Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface xxx.144.28.0 0.0.0.0 255.255.254.0 U 0 0 0 eth0 yy.zz.156.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 0.0.0.0 yy.zz.156.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 xxx.144.28.1 0.0.0.0 UG 0 0 0 eth0 

Когда я пингую добавленные ip-адреса, я получаю TTL expired in transitсообщение, из моих исследований я думаю, что в моей таблице маршрутов есть бесконечный цикл, может кто-нибудь указать на проблему здесь?

600 просмотров
Mugiwara спросил 7 лет назад
M 103

1 ответ

2
Принятый ответ

Я угадал ваши адреса, выполнил traceroute(ну, mtr) для всех четырех из них, и хотя он показывает цикл, он пинг-понг между двумя адресами, которые очень похожи на двухточечную связь между двумя маршрутизаторами. Тот же цикл также происходит при попытке пропинговать / трассировать другие адреса из подсети, так что это, вероятно, «нормально» для еще не назначенных адресов у этого провайдера.

Исходя из этого, я предполагаю, что проблема связана с вашим провайдером сервера - у них нет правильных маршрутов, указывающих дополнительные адреса к вашему серверу.


Между тем, ваша собственная таблица маршрутизации кажется нормальной и не пропускает ничего очевидного. Хотя это еще не вся таблица маршрутизации - есть записи, которые устаревшая команда route не видит. Если вы напрямую назначаете IP-адрес интерфейсу (например, показанному в ip addr ), это создает скрытый маршрут / 32, который указывает ОС всегда использовать пакеты, и это имеет приоритет над обычными маршрутами подсети.

Так что, если вы проверили, что адреса введены ip addr, цикл, как правило, не будет вашей ошибкой.


То, что вы должны проверить теперь даже ли вы получать пакеты на всех. Используйте инструмент захвата пакетов, такой как tcpdump :

tcpdump -n -i eth0 "icmp" 

Пока он работает, попробуйте пинговать адреса сервера. Если бы у вас был цикл, tcpdump показывал бы серию пакетов «ICMP Echo» для каждой попытки ping. С другой стороны, если он вообще не показывает никаких эхо-пакетов, то проблема в вашем интернет-провайдере (то есть в хостинговой компании) - они на самом деле не правильно направили адреса на ваш сервер.

Вы были правы, я связался с провайдером и теперь он работает, спасибо еще раз: D

Mugiwara · 7 лет назад · 0
grawity ответил 7 лет назад
G 229 123