
- •4.1. Создание, изменение и удаление учётных записей
- •4.1.1. Введение
- •4.1.2. Добавление пользователя
- •4.1.3. Изменение параметров пользовательской учётной записи
- •4.1.4. Удаление учётной записи
- •6.1. Определение существующих установок tcp/ip
- •Комментарий
- •6.1.1. Ifconfig(8) — настройки сетевых интерфейсов
- •6.1.2. Netstat(1)
- •6.1.2.1. Таблица маршрутизации
- •6.1.2.2. Статистика
- •6.1.2.3. Работающие интернет сервисы и открытые сокеты
- •6.1.2.3.1. Открытие tcp соединения (тройное рукопожатие)
- •6.1.2.3.2. Закрытие tcp соединения
- •6.1.3. Route(8)
- •6.1.4. /Etc/resolv.Conf(5)
- •6.2.2.1. Изменение настроек физического уровня
- •6.2.2.2. Изменение настроек канального уровня
- •6.2.2.2.1. Изменение mac-адреса:
- •6.2.2.2.2. Смена флагов канального уровня
- •6.2.2.3. Изменение настроек сетевого уровня
- •6.2.2.3.2. Ip, маска подсети, широковещательный адрес
- •6.2.2.3.4. Другие протоколы сетевого уровня
- •6.2.3. Route(8) — настройка таблицы маршрутизации
- •6.2.4. Resolv.Conf(5) — настройка клиента dns
- •6.2.5. Hosts(5) — локальная база имён
- •6.2.6. Как сохранить установленные сетевые параметры
- •6.2.6.1. FreeBsd
- •6.3. Определение какие tcp или udp порты открыты в системе
- •Комментарий
- •6.3.1. Fstat(1)
- •6.3.2. Sockstat(1)
- •6.3.3. Lsof(1)
- •6.3.4. Nmap(1)
- •6.4. Проверка доступности tcp/ip сервиса
- •Комментарий
- •6.4.1. Ping(8)
- •6.4.2. Traceroute(1)
- •6.4.3. Hping(8)
- •6.4.4. Telnet(1), nc(1)
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 такой особенностью не обладает.