Gentoo Logo

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

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

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

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

Листинг 1.1: Предпочтение модуля

# выбор iproute2, а не ifconfig
modules=( "iproute2" )

# можно также указать другие модули для отдельного интерфейса
# здесь мы выбираем udhcpc, а не dhcpcd
modules_eth0=( "udhcpc" )

# также можно указать, какие модули не надо использовать: например,
# возможно, вы используете supplicant или linux-wlan-ng для управления
# параметрами беспроводной сети, но при этом желаете настраивать сетевые
# параметры раздельно для каждого связанного ESSID
modules=( "!iwconfig" )

1.  Обработчики интерфейса

Сейчас мы предоставляем два обработчика интерфейса: ifconfig и iproute2. Для настройки сети вам нужен только один из них.

ifconfig в текущем Gentoo используется по умолчанию, и включен в системный профиль. iproute2 — более мощный и гибкий пакет, который не включен в системный профиль по умолчанию.

Листинг 1.1: Установка iproute2

# emerge sys-apps/iproute2

# выбор iproute2, а не ifconfig, когда установлены оба
modules=( "iproute2" )

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

Листинг 1.1: Примеры 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" )

1.  DHCP

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

Поддержка DHCP обеспечивается dhclient, dhcpcd, pump или udhcpc. У каждого модуля DHCP есть свои плюсы и минусы: здесь мы быстренько рассмотрим их.

Модуль DHCP Пакет Плюсы Минусы
dhclient net-misc/dhcp Сделан ISC, теми же людьми, кто делает BIND DNS. Гибок в настройке. Настройка чрезмерно сложна, программа довольно «распухшая», не может получать данные о серверах NTP с DHCP, по умолчанию не отправляет имя узла.
dhcpcd net-misc/dhcpcd Давно в Gentoo по умолчанию, не зависит от внешних утилит. Более не поддерживается разработчиком, может быть временами медленным, не становится демоном при неограниченном сроке аренды адреса.
pump net-misc/pump Компактный, не зависит от внешних утилит. Более не поддерживается разработчиком, ненадежен, особенно по модему, не может получать данные о серверых NIS по DHCP.
udhcpc net-misc/udhcp Компактный; наименьший существующий клиент DHCP, сделан для встроенных систем. Не зарекомендовал себя — ни в одном дистрибутиве не используется по умолчанию; не поддерживает длительность таймаута более 3 секунд.

Если у вас установлено больше одного DHCP клиента, вам нужно указать, какой использовать; иначе по умолчанию используется dhcpcd, если есть.

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

Мы попытались сделать DHCP относительным агностиком: по существу, мы поддерживаем следующие команды, с использованием переменной dhcp_eth0. По умолчанию не включена ни одна из них.

  • release — освобождать IP-адрес для повторного использования
  • nodns — не замещать /etc/resolv.conf
  • nontp — не замещать /etc/ntp.conf
  • nonis — не замещать /etc/yp.conf

Листинг 1.1: Простая настройка DHCP в /etc/conf.d/net

# требуется только если у вас несколько модулей DHCP
modules=( "dhcpcd" )

config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10" # прекращение после 10 секунд
dhcp_eth0="release nodns nontp nonis" # только получать адрес

Примечание: По умолчанию, dhcpcd, udhcpc и pump передают текущее узла на сервер DHCP, поэтому его больше не требуется указывать.

1.  Модем ADSL

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

Листинг 1.1: Установка пакета rp-pppoe

# emerge net-dialup/rp-pppoe

Предупреждение: В baselayout-1.11.x поддерживается только PPPoE. Надеемся, что в будущих версиях появится поддержка PPPoA.

Сейчас нам нужно указать, что на eth0 будет ADSL-интерфейс, и ввести наше имя пользователя, обновив /etc/conf.d/net.

Листинг 1.1: Настройка eth0 для ADSL в /etc/conf.d/net

                           	
config_eth0=( "adsl" )
adsl_user_eth0="имя-пользователя"

Наконец, нужно указать ваше имя и пароль в /etc/ppp/pap-secrets.

Листинг 1.1: Пример /etc/ppp/pap-secrets

# * обязательна
"пользователь"  *  "пароль"

1.  APIPA (автоматическая частная IP-адресация)

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

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

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

Листинг 1.1: Настройка APIPA в /etc/conf.d/net

# сначала пробуем DHCP, при неудаче переходим на APIPA
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )

# использование только APIPA
config_eth0=( "apipa" )

1.  Объединение интерфейсов

Для объединения каналов в ствол (bonding) установите net-misc/ifenslave.

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

Листинг 1.1: Настройка объединения в /etc/conf.d/net

# объединение интерфейсов
slaves_bond0="eth0 eth1 eth2"

# вы можете не захотеть назначать адрес IP объединенному интерфейсу
config_bond0=( "null" )

# указание зависимости от eth0, eth1 и eth2, так как им может требоваться
# дополнительная настройка
depend_bond0() {
need net.eth0 net.eth1 net.eth2
}

1.  Образование моста (поддержка 802.1d)

Для поддержки мостов установите net-misc/bridge-utils.

Мосты используются для объединения сетей. Например, у вас может быть сервер, подсоединенный к интернету через ADSL-модем, и плата беспроводного доступа для предоставления доступа в интернет через ADSL модем другим компьютерам. Чтобы соединить оба интерфейса, можно создать «мост».

Листинг 1.1: Настройка моста в /etc/conf.d/net

# настройка моста: подробности в "man btctl"
brctl_br0=( "setfd 0" "sethello 0" "stp off" )

# включаем порты в мост br0
bridge_br0="eth0 eth1"

# устанавливаем порты в "null", чтобы не запускался dhcp
config_eth0=( "null" )
config_eth1=( "null" )

# наконец, даем мосту адрес; можно использовать и DHCP
config_br0=( "192.168.0.1/24" )

# указываем зависимость от eth0 и eth1, так как им может требоваться
# дополнительная настройка
depend_br0() {
need net.eth0 net.eth1
}

Важно: Для использования некоторых вариантов моста вам может потребоваться обращение к документации по (именам переменных).

1.  MAC-адрес

Для изменения MAC-адреса своего интерфейса вам не потребуется ничего устанавливать, если у вас sys-apps/baselayout-1.11.14 или новее, и вы собираетесь сменить MAC-адрес на какой-то определенный. Однако, если вам нужно сменить MAC-адрес на случайный, или ваш baselayout старше указанной версии, для смены адреса потребуется установить пакет командой emerge net-analyzer/macchanger.

Листинг 1.1: Пример изменения MAC-адреса

# установка MAC-адреса интерфейса
mac_eth0="00:11:22:33:44:55"

# случайная установка последних 3 байт адреса
mac_eth0="random-ending"

# установка случайного адреса из диапазона для физического соединения
# того же типа (оптического, медного, беспроводного) любого изготовителя
mac_eth0="random-samekind"

# установка случайного адреса из диапазона для любого типа физического
# соединения (оптического, медного, беспроводного) любого изготовителя
mac_eth0="random-anykind"

# полностью случайный; ВНИМАНИЕ, некоторые MAC-адреса, сгенерированные
# таким образом, могут вести себя НЕ ТАК, как предполагается
mac_eth0="random-full"

1.  Образование тоннеля

Для образования тоннеля вам не нужно ничего устанавливать, поскольку на это способен сам обработчик интерфейса.

Листинг 1.1: Настройка тоннеля в /etc/conf.d/net

# для тоннелей GRE
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# для тоннелей IPIP
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# для настройки интерфейса
config_vpn0=( "192.168.0.2 peer 192.168.1.1" )

1.  Виртуальные сети (поддержка 802.1q)

Для поддержки VLAN, установите net-misc/vconfig.

Виртуальная локальная сеть (VLAN) — это группа сетевых устройств, которые ведут себя, как будто подключены к одному сегменту сети, даже когда это не так. Членам VLAN видны только члены той же VLAN даже если в той же физической сети присутствуют другие.

Листинг 1.1: VLAN configuration in /etc/conf.d/net

# указание номеров VLAN для интерфейса
# пожалуйста, убедитесь, что ваши номера VLAN НЕ дополнены нулем
vlans_eth0="1 2"

# можно также настроить VLAN
# за подробностями обращайтесь к man vconfig
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# настройка интерфейса как обычно
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

Важно: Для использования некоторых вариантов VLAN вам может потребоваться обращение к документации по (именам переменных).

Обновлено 30 августа 2006

Исходный документ обновлен 23 октября 2011

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.