Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №4 (FAQ).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
406.02 Кб
Скачать

6.1.3. Route(8)

Утилита route(8) больше предназначена для управления таблицей маршрутизации, однако с её помощью тоже можно получить некоторую диагностическую информацию. Допустим нам надо узнать маршрут к машине с адресом 192.168.3.4

$ route get 192.168.3.4

route to: 192.168.3.4

destination: default

mask: default

gateway: xxx.yyy.zzz.254

interface: rl0

flags: <UP,GATEWAY,DONE,STATIC>

recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire

0 0 0 0 0 0 1500 0

В NetBSD и OpenBSD есть так же команда show, которая заставляет route(8) распечатать таблицу маршрутизации целиком, подобно netstat -r:

$ route -n show

Routing tables

Internet:

Destination Gateway Flags

default ************** UG

127.0.0.0 localhost UG

************** localhost UGH

192.168.26.0 link#1 U

************** 0:10:e0:0:e9:cd UH

192.168.26.2 0:10:e0:0:7c:46 UH

192.168.26.7 0:e:a6:66:2d:c5 UH

BASE-ADDRESS.MCA localhost U

Internet6:

Destination Gateway Flags

default ****************** UG

default ****************** UG

**************** ****************** UH

::127.0.0.0 ****************** UG

::224.0.0.0 ****************** UG

::255.0.0.0 ****************** UG

::ffff:0.0.0.0 ****************** UG

2002:: ****************** UG

2002:7f00:: ****************** UG

2002:e000:: ****************** UG

2002:ff00:: ****************** UG

fe80:: ****************** UG

fe80::%le0 link#1 U

fe80::%lo0 fe80::1%lo0 U

fec0:: ****************** UG

ff01:: ****************** U

ff02::%le0 link#1 U

ff02::%lo0 fe80::1%lo0 U

При помощи команды route monitor можно следить за изменениями маршрутной таблицы в реальном времени.

6.1.4. /Etc/resolv.Conf(5)

Когда машине надо обратиться к некоторому адресу в интернет, она должна преобразовать символьное имя машины (такое, как example.ru), в IP (или IPv6) адрес. Осуществляется это при помощи библиотечной функции gethostbyname(3). Типичное поведение этой функции выглядит так: 1) изучается файл /etc/hosts в котором перечислено какие имена соответствуют некоторым адресам; 2) затем, если поиск не дал результатов, при помощи resolver(3)'а осуществляются запросы к серверам DNS. На порядок этих действий можно влиять при помощи файла /etc/nsswitch.conf, это описано в Раздел 6.7, «Изменение порядка разрешения имён».

За работу resolver'а отвечает настроечный файл /etc/resolv.conf. Вот его мы и рассмотрим в данном разделе.

Файл /etc/resolv.conf является настроечным файлом для клиентской части системы DNS — resolver'а. Синтаксис файла предельно прост: в нём перечисляются DNS сервера в порядке убывания приоритета. Перед IP адресом сервера DNS указывается ключевое слово nameserver.

nameserver 127.0.0.1

nameserver 192.168.0.1

search somewhere.ru ru ua org

Здесь сказано, что для разрешения имён в IP-адреса, нужно сперва обратиться к локальной машине (предполагается, что на ней запущен свой собственный named(8)), а если обратиться к нему неудастся (если он не запущен), обратиться к DNS на машине 192.168.0.1. Здесь сервер DNS на машине 127.0.0.1 называется первичным DNS-сервером (primary), а 192.168.0.1 — вторичным (secondary). Обратите внимание: если первичный сервер DNS не сможет разрешить имя, он вернёт отрицательный ответ и запрос к вторичному серверу выполнен не будет (ведь ответ пришёл, просто он отрицательный).

resolver использует для работы первые три сервера DNS.

Допустим, мы хотим разрешить имя host, а в нашем файле /etc/resolv.conf имеются только записи типа nameserver. В этом случае resolver попытается найти машину host., такой машины конечно же нет, следующее действие resolver'а будет таким: он возьмёт имя домена в котором находится наша машина и допишет этот домен. Если наша машина имеет имя client.somewhere.ru, то resolver попытается разрешить имя host.somewhere.ru.

На это поведение можно влиять двумя способами: 1) с помощью директивы domain указать какой-нибудь другой домен и тогда поиск будет осуществляться в нём.

2) при помощи директивы search явно перечислить через пробел домены в которых следует производить поиск, как это показано в листинге выше. В нашем примере если resolver не сможет разрешить имя host, то он допишет к нему домен «somewhere.ru» и попробует разрешить имя host.somewhere.ru, затем будет осуществлена попытка разрешить имя host.ru, host.ua и host.org:

$ host -v host

Trying domain "somewhere.ru"

rcode = 3 (Non-existent domain), ancount=0

Trying domain "ru"

rcode = 0 (Success), ancount=1

The following answer is not authoritative:

The following answer is not verified as authentic by the server:

host.ru 1800 IN A 195.2.70.38

For authoritative answers, see:

host.ru 1800 IN NS dns1.zenon.net

host.ru 1800 IN NS dns2.zenon.net

Additional information:

dns1.zenon.net 1412 IN A 195.2.64.38

dns2.zenon.net 1412 IN A 195.2.83.38

Здесь осуществлена попытка разрешить имя host.somewhere.ru. Эта попытка завершилась неудачей — такого хоста нет.

Теперь система пытается разрешить имя host.ru. Такое имя существует, машина с этим именем имеет IP 195.2.70.38, за неё отвечает два сервера DNS: dns1.zenon.net и dns2.zenon.net с IP адресами 195.2.64.38 и 195.2.83.38. (Про команду host(1) мы будем говорить в Раздел 6.5, «Запрос к серверу DNS».)

Попробуем обнаружить машину соответствующую озеру Леприндо, расположенному в Читинской области на БАМе у подножия горного массива Кодар:

$ host -v leprindo

Trying domain "somewhere.ru"

rcode = 3 (Non-existent domain), ancount=0

Trying domain "ru"

rcode = 3 (Non-existent domain), ancount=0

Trying domain "ua"

rcode = 3 (Non-existent domain), ancount=0

Trying domain "org"

rcode = 3 (Non-existent domain), ancount=0

Host not found.

Как видим, resolver выполнил 4 запроса к DNS, попытавшись обнаружить машины leprindo.somewhere.ru, leprindo.ru, leprindo.ua и leprindo.org, и потерпел неудачу.

Наконец, в этом файле можно задавать некоторые опции. Следующая строка во-первых, включает режим отладки, а во-вторых объявляет, что надо пытаться разрешить имя при помощи списка из директивы search, если в нём менее 2-х точек (а не одной, как по умолчанию). Т.е. по умолчанию, если в имени нет точек, то оно сперва ищется в списке доменов из директивы search, а со включённой ниже опцией это поведение распространяется на имена содержащие одну точку.

options debug ndots:2

После редактирования файла /etc/resolv.conf никаких специальных действий не требуется, изменения немедленно вступают в силу.

6.1.5. hostname(1)

Утилита hostname(1) служит для того, чтобы сообщить имя машины, на которой она запущена. Используется во множестве разнообразных скриптов. Имеет всего один необязательный аргумент служащий для удаления имени домена:

$ hostname

myhost.example.org

$ hostname -s

myhost

6.2. Установка параметров TCP/IP

Описание.  Кандидат должен уметь изменять настройки TCP/IP как временно, так и постоянно, так, чтобы изменения сохранялись после перезагрузки.

Практикаhostname(1), ifconfig(8), route(8), resolv.conf(5), rc.conf(5), hosts(5), hostname.if(5), myname(5), mygate(5), netstart(8)

Комментарий

Теперь мы снова рассмотрим те же утилиты, что и в Раздел 6.1, «Определение существующих установок TCP/IP», но на этот раз с точки зрения управления параметрами. Как и в прошлый раз, мы выйдем за рамки задачи постваленной в данном экзаменационном билете, во имя целостности повествования.

6.2.1. hostname(1) — задание имени машины

Утилита hostname(1) может не только сообщать имя машины, но и устанавливать новое:

$ hostname

myhost.example.org

$ hostname -s

myhost

# hostname other.example.org

$ hostname

other.example.org

6.2.2. ifconfig(8) — настройки сетевых интерфейсов

Утилита ifconfig(8) позволяет не только просматривать, но и манипулировать настройками сетевого интерфейса. Причём даже на физическом уровне OSI. (О модели OSI можно прочесть в глоссарии: OSI.)

Здесь описаны не все возможности утилиты ifconfig(8). Существуют некоторые опции, характерные для данных операционных систем и т.д. Сверяйтесь со справкой вашей операционной системы. Например, OpenBSD позволяет объединять интерфейсы вгруппы, а FreeBSD такой особенностью не обладает.