Сообщение об ошибке «network unreachable» четко указывает на проблему маршрутизации. Если проблема в локальной таблице маршрутизации, ее легко обнаружить и устранить.
Во-первых, воспользуйтесь командами netstat -nr и grep, чтобы определить, присутствует ли в таблице допустимый маршрут к целевой системе. В данном примере проверяется наличие маршрута к сети 128.8.0.0:
% netstat -nr | grep '~128\.8\.' 128.8.0.0 26.20.0.16 UG 0 37 dnet0
Этот же тест на системе, не имеющей такого маршрута в таблице, завершится вообще без результатов. К примеру, пользователь сообщает, что «сеть легла», потому что он не может провести сеанс ftp с helios.metalab.unc.edu, а про- звонка возвращает следующие результаты:
% ping -s helios.metalab.unc.edu 56 2 PING helios.metalab.unc.edu: 56 data bytes sendto: Network is unreachable ping: wrote helios.metalab.unc.edu 64 chars, ret=-1 sendto: Network is unreachable ping: wrote helios.metalab.unc.edu 64 chars, ret=-1 helios.metalab.unc.edu PING Statistics 2 packets transmitted, 0 packets received, 100% packet loss
Руководствуясь сообщением «network unreachable», проверьте таблицу маршрутизации пользователя. В данном случае мы ищем маршрут к системе helios.metalab.unc.edu. IP-адрес helios.metalab.unc.edu - 152.2.210.81. Выполним поиск всех маршрутов, конечный пункт которых начинается с по- следовательности 152.2:
% netstat -nr | grep "Ч52\.2\. ' 9 6
Данная проверка показала, что таких маршрутов нет. Если бы маршрут су- ществовал, команда grep отобразила бы его. Поскольку нет конкретного маршрута для данного конечного пункта, вспомним, что есть еще и маршрут по умолчанию. Следующий пример показывает успешную проверку марш- рута по умолчанию в системе Solaris:
% netstat -nr | grep def default 172.16.12.1 UG 0 101277 dnet0
Если netstat свидетельствует о наличии конкретного маршрута или действующего маршрута по умолчанию, проблема не в таблице маршрутизации. В таком случае воспользуйтесь командой trace route (как описано в следующем разделе) для трассировки сегментов маршрута на пути к пункту назначения. Если в таблице маршрутизации ожидаемый маршрут отсутствует, проблема в локальной маршрутизации. Существует два подхода к таким проблемам, в зависимости от того, статическую или динамическую маршрутизацию утилизует система. В случае статической маршрутизации установите нужный маршрут при помощи команды route add. Помните, большинство систем, использующих статическую маршрутизацию, полагаются на маршрут по умолчанию, поэтому нужным маршрутом вполне может быть маршрут по умолчанию. Убедитесь, что загрузочные файлы добавляют необходимый маршрут в таблицу при загрузке системы. Подробно команда route add описана в главе 7. В случае динамической маршрутизации убедитесь, что программа маршрутизации запущена. Например, следующая команда позволяет убедиться, что запущен демон gated:
% ps 'cat /etc/gated.pid' PID T T STA T TIME COMMAN D 27711 ? S 304:59 gated -tep /etc/log/gated.log
Если нужный демон маршрутизации не запущен, перезапустите его и предпишите трассировку. Трассировка позволяет обнаружить проблемы, вынуждающие демон аварийно завершать работу.