Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gentoo_x86_Handbook.doc
Скачиваний:
25
Добавлен:
19.09.2019
Размер:
924.16 Кб
Скачать

3. Модульная сеть

3.A. Сетевые модули

Теперь мы поддерживаем модульные сетевые скрипты, что означает, что мы можем легко добавить поддержку новых типов интерфейсов и конфигурационных модулей, и в то же время, сохранить совместимость с существующими.

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

Заметка: Все настройки, обсуждаемые здесь, сохраняются в /etc/conf.d/net, если не сказано иное.

Код 1.1: Настройки модулей

# Предпочесть ifconfig перед iproute2

modules="ifconfig"

# Вы также можете указать другие модули для интерфейса

# В данном случае мы предпочитаем pump перед dhcpd

modules_eth0="pump"

# Вы также можете указать, какие модули не использовать. Например, вы можете

# использовать supplicant или linux-wlan-ng для контроля беспроводной

# конфигурации, но вы все равно хотите конфигурировать настройки сети

# по ассоциированной с ней ESSID

modules="!iwconfig"

3.B. Обработчики интерфейсов

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

ifconfig установлен по умолчанию (пакет net-tools это часть системного профиля). iproute2 это более мощный и гибкий пакет, но он не включен по умолчанию.

Код 2.1: Чтобы установить iproute2

# emerge sys-apps/iproute2

# Чтобы предпочесть ifconfig перед iproute2 в случае, если установлены

# оба из них, нужно написать следующее (так как openrc при этом предпочтет

# iproute2 по умолчанию):

modules="ifconfig"

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

Код 2.2: Примеры ifconfig и iproute2

config_eth0="192.168.0.2/24"

config_eth0="192.168.0.2 netmask 255.255.255.0"

# Также мы можем указать широковещательный адрес

config_eth0="192.168.0.2/24 brd 192.168.0.255"

config_eth0="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"

3.c. DHCP

DHCP это получение сетевой информации (IP адрес, DNS сервера, шлюзы, и т. д.) с DHCP-сервера. Это означает, что если существует DHCP-сервер в сети, то вам просто нужно сказать каждому клиенту использовать DHCP, и сеть настроится сама. Конечно, вам нужно будет сконфигурировать все остальные вещи, вроде беспроводных соединений, PPP, или других вещей, если необходимо, прежде чем вы сможете использовать DHCP.

DHCP может работать с dhclient, dhcpcd или pump. Каждый модуль DHCP имеет свои плюсы и минусы — вот краткий обзор.

Модуль DHCP

Пакет

Плюсы

Минусы

dhclient

net-misc/dhcp

Создан ISC, теми же людьми, которые придумали программы BIND DNS. Очень конфигурируем.

Конфигурация слишком подробная, программы очень раздутые, не умеет получать NTP-сервера по DHCP, по умолчанию не посылает hostname.

dhcpcd

net-misc/dhcpcd

Долгое время был в Gentoo по умолчанию, не зависит от сторонних программ, активно разрабатывается Gentoo

Иногда может быть медленным, пока не умеет переходить в режим демона, если время выдачи адреса бесконечно

pump

net-misc/pump

Легковесный, не зависит от других программ

Больше не разрабатывается, ненадежный, особенно через модемы, не умеет получать сервера NIS по DHCP

Если у вас есть более одного DHCP-клиента, вам нужно определить, какой использовать. Иначе мы будем использовать dhcpcd, если он есть.

Чтобы послать специфические опции модулю DHCP, используйте модуль_eth0="..." (измените модуль на модуль DHCP, который вы используете, например dhcpcd_eth0).

Мы попытались сделать DHCP относительно независимым — поэтому мы поддерживаем следующие команды, используя переменную dhcp_eth0. по умолчанию не включена ни одна опция:

  • release — отдать IP адрес для повторного использования

  • nodns — не перезаписывать /etc/resolv.conf

  • nontp — не перезаписывать /etc/ntp.conf

  • nonis — не перезаписывать /etc/yp.conf

Код 3.1: Примерная конфигурация DHCP в /etc/conf.d/net

# Нужно только если у вас установлено более одного модуля DHCP

modules="dhcpcd"

config_eth0="dhcp"

dhcpcd_eth0="-t 10" # Таймаут после 10 секунд

dhcp_eth0="release nodns nontp nonis" # Только получить адрес

Заметка: dhcpcd и pump посылают текущее имя хоста DHCP-серверу по умолчанию, так что вам не нужно это указывать.

3.d. ADSL с PPPoE/PPPoA

Сначала нам нужно установить программы для ADSL.

Код 4.1: Устанавливаем пакет ppp

# emerge net-dialup/ppp

Потом, создайте сетевой скрипт PPP и сетевой скрипт для ethernet-интерфейса, который будт использоваться PPP:

Код 4.2: Создаем скрипты PPP и ethernet

# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0

# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

Удостоверьтесь, что вы выставили rc_depend_strict в «YES» в /etc/rc.conf.

Теперь нам нужно сконфигурировать /etc/conf.d/net.

Код 4.3: Базовая настройка PPPoE

config_eth0=null (Определите ваш ethernet интерфейс)

config_ppp0="ppp"

link_ppp0="eth0" (Определите ваш ethernet интерфейс)

plugins_ppp0="pppoe"

username_ppp0='user'

password_ppp0='password'

pppd_ppp0="

noauth

defaultroute

usepeerdns

holdoff 3

child-timeout 60

lcp-echo-interval 15

lcp-echo-failure 3

noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"

rc_need_ppp0="net.eth0"

Вы также можете установить ваш пароль в /etc/ppp/pap-secrets.

Код 4.4: Пример файла /etc/ppp/pap-secrets

# Звездочка важна

"username" * "password"

Если вы используете PPPoE с USB-модемом, вам нужно установить br2684ctl. Пожалуйста, прочитайте /usr/portage/net-dialup/speedtouch-usb/files/README для информации о том, как ее правильно сконфигурировать.

Важно: Внимательно прочитайте раздел по ADSL и PPP в /usr/share/doc/openrc-0.8.3-r1/net.example.bz2. В этом файле находятся более детальные объяснения всех настроек, которые скорее всего понадобятся вашему PPP. Конечно, измените версию 0.8.3-r1 на версию OpenRC, установленную на вашей системе.

3.e. APIPA (Automatic Private IP Addressing)

APIPA пытается найти свободный адрес в диапазоне 169.254.0.0-169.254.255.255, пробуя по протоколу arp случайный адрес в этом диапазоне. Если ответа нет, значит мы назначаем этот адрес интерфейсу.

Это полезно только для локальных сетей без сервера DHCP, вы не подключены напрямую к Интернету, и все остальные компьютеры используют APIPA.

Для поддержки APIPA установите net-misc/iputils или net-analyzer/arping.

Код 5.1: Конфигурация APIPA в /etc/conf.d/net

# Попробуем сначала DHCP — если не поможет, попробуем APIPA

config_eth0="dhcp"

fallback_eth0="apipa"

# Просто используем APIPA

config_eth0="apipa"

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]