5.3. Настройка TCP/IP

На данный момент ваша сетевая карта уже должна быть физически вставлена в ваш компьютер, и должны быть загружены соответствующие драйверы ядра. Вы пока что не сможете установить связь посредством своей сетевой карты, однако о ней можно получить информацию с помощью команды ifconfig -a.

# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:A0:CC:3C:60:A4
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:110081 errors:1 dropped:0 overruns:0 frame:0
TX packets:84931 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:114824506 (109.5 Mb) TX bytes:9337924 (8.9 Mb)
Interrupt:5 Base address:0x8400

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:2234 errors:0 dropped:0 overruns:0 frame:0
TX packets:2234 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:168758 (164.8 Kb) TX bytes:168758 (164.8 Kb)

Если вы набрали просто /sbin/ifconfig без параметра -a, вы не увидите интерфейс eth0, потому что вашей сетевой карте ещё не присвоен действительный IP-адрес или маршрут.

Хотя существует много различных способов для настройки и организации сети, всех их можно свести к двум типам: статический и динамический. В статических сетях каждый узел (в просторечии, нечто, имеющее IP-адрес) всегда имеет один и тот же IP-адрес. В динамических сетях IP-адреса для узлов выдаются централизованно одной машиной, называемой DHCP-сервером.

5.3.1. DHCP

DHCP (Dynamic Host Configuration Protocol, протокол динамического конфигурирования хоста) определяет, какой IP-адрес может быть присвоен компьютеру во время загрузки. Во время загрузки DHCP-клиент отправляет в локальную сеть запрос на поиск DHCP-сервера, чтобы последний назначил ему IP-адрес. DHCP-сервер имеет пул (или диапазон) доступных IP-адресов и ответит на такой запрос выделением клиенту IP-адреса из пула вместе со временем аренды. По истечении этого времени данный IP-адрес считается устаревшим, и клиент должен связаться с сервером и повторить операцию получения или продления срока действия IP-адреса.

Затем клиент примет выданный сервером IP-адрес и настроит запрошенный интерфейс на использование этого адреса. Однако существует ещё одна довольно удобная возможность, которую DHCP-клиенты используют для получения IP-адреса. Клиент запоминает последний выданный ему адрес, а затем обращается к серверу с запросом повторно выдать ему тот же самый IP-адрес. Если это возможно, сервер так и сделает, в противном случае будет назначен новый адрес. Итак, согласование происходит следующим образом:

    Клиент: Если в этой ЛВС сервер DHCP?
    Сервер: Да, есть. Это я.
    Клиент: Мне нужен IP-адрес.
    Сервер: Можешь взять 192.168.10.10 сроком на 19200 секунд.
    Клиент: Спасибо.

    Клиент: Если в этой ЛВС сервер DHCP?
    Сервер: Да, есть. Это я.
    Клиент: Мне нужен IP-адрес. В последний раз у меня был 192.168.10.10. Могу я снова получить его?
    Сервер: Да, можешь (или Нет, не можешь: вместо этого получай 192.168.10.12).
    Клиент: Спасибо.

DHCP-клиентом в Linux является /sbin/dhcpcd. Если вы загрузите /etc/rc.d/rc.inet1 в свой любимый текстовый редактор, вы заметите, что /sbin/dhcpcd вызывается примерно в середине скрипта. Результатом этого вызова будет беседа, представленная выше. Также dhcpcd будет следить за временем, оставшимся до конца аренды текущего IP-адреса, и при необходимости автоматически обратится к серверу DHCP с запросом на продление аренды. DHCP также может предоставлять сопутствующую сетевую информацию: используемый сервер ntp, маршрут по умолчанию и т.п.

Настроить DHCP в Slackware довольно просто. Просто запустите netconfig и выберите DHCP, когда будет предложено. Если у вас несколько сетевых интерфейсов и вы не хотите, чтобы eth0 был настроен посредством DHCP, просто отредактируйте файл /etc/rc.d/rc.inet1.conf и измените соответствующую переменную для своей карты на “YES”.

5.3.2. Статический IP

Статические IP-адреса представляют собой фиксированные адреса, которые изменяются только вручную. Они используются в тех случаях, когда администратор не хочет, чтобы информация об IP изменялась, например, для внутренних серверов в локальной сети, серверов, подключенных к Интернету и маршрутизаторов. Используя статическую IP-адресацию, вы присваиваете адрес, и он остаётся неизменным. Другие машины знают, что вы всегда доступны по определённому IP-адресу и могут в любой момент связаться с вами, используя этот адрес.

5.3.3. /etc/rc.d/rc.inet1.conf

Если вы планируете назначить IP-адрес своей новой машине со Slackware, вы можете сделать это через скрипт netconfig или можете отредактировать файл /etc/rc.d/rc.inet1.conf. В /etc/rc.d/rc.inet1.conf вы найдёте следующее:

    # Primary network interface card (eth0)
    IPADDR[0]=""
    NETMASK[0]=""
    USE_DHCP[0]=""
    DHCP_HOSTNAME[0]=""

А ниже:

    GATEWAY=""

В этом случае наша задача заключается просто в указании корректной информации, заключённой в кавычки. Эти переменные используются скриптом /etc/rc.d/rc.inet1 во время загрузки системы для настройки сетевых интерфейсов. Для каждого из интерфейсов просто введите верную информацию об IP или укажите “YES” для переменной USE_DHCP. Slackware поднимет интерфейсы с указанными здесь данными в порядке нахождения сетевых устройств.

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

5.3.4. /etc/resolv.conf

Итак, у вас есть IP-адрес, у вас есть шлюз по умолчанию, у вас даже может быть десять миллионов долларов (дайте нам немножко), однако что в этом хорошего, если вы не можете преобразовать имена в IP-адреса? Никто не захочет набирать 72.9.234.112 в адресной строке своего браузера для того, чтобы зайти на www.slackbook.org. В конце концов кто кроме авторов сможет запомнить этот IP-адрес? Нам нужно настроить DNS, но как? Вот для чего нужен /etc/resolv.conf.

Есть шанс, что нужные параметры уже присутствуют в /etc/resolv.conf. Если вы настраиваете своё сетевое подключение, используя DHCP, сервер DHCP должен был обновить этот файл за вас. (Если быть точным, DHCP-сервер просто сообщил службе dhcpcd, что нужно именно поместить в этот файл, и она подчинилась команде.) Если вам нужно вручную обновить свой список серверов DNS, отредактируйте файл /etc/resolv.conf. Ниже представлен пример:

# cat /etc/resolv.conf
nameserver 192.168.1.254
search lizella.net

Первая строка довольно проста. Директива nameserver сообщает нам, какому DNS-серверу отправлять запросы. В силу сложившихся обстоятельств это всегда IP-адрес. У вас их может быть сколько угодно. Slackware охотно проверит их один за другим до тех пор, пока не получит нужный ответ.

Вторая строка немного интереснее. Директива search даёт нам список доменных имён, подразумеваемых в каждом DNS-запросе. Это позволяет вам связываться с машиной, используя только первую часть её FQDN (Fully Qualified Domain Name, полное доменное имя машины). Например, если в вашем пути search указан “slackware.com”, вы сможете обратиться к http://store.slackware.com, указав в своём веб-браузере только http://store.

# ping -c 1 store
PING store.slackware.com (69.50.233.153): 56 data bytes
64 bytes from 69.50.233.153 : icmp_seq=0 ttl=64 time=0.251 ms
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.251/0.251/0.251 ms


5.3.5. /etc/hosts

Теперь, когда наш DNS нормально работает, что если нам вдруг понадобится обойти наш сервер DNS или добавить DNS-запись для машины, которая отсутствует в DNS? В Slackware есть всеми любимый файл /etc/hosts, содержащий локальный список доменных имён и соответствующих им IP-адресов.

# cat /etc/hosts
127.0.0.1           localhost  locahost.localdomain
192.168.1.101       redtail
172.14.66.32        foobar.slackware.com

Здесь вы можете видеть, что localhost имеет IP-адрес 127.0.0.1 (всегда зарезервирован для localhost), к redtail'у можно обратиться как к 192.168.1.101, а foobar.slackware.com имеет адрес 172.14.66.32.