|
1.
Сетевые модули
Cейчас мы поддерживаем модульные сетевые сценарии. Это значит, что мы можем
легко добавлять поддержку для новых типов интерфейсов и конфигурационных
модулей, сохраняя совместимость с существующими.
По умолчанию, модули загружаются только если пакет, нужный им, установлен. Если
отметить модуль, для которого не установлен пакет, будет выдана ошибка с
указанием, какой пакет нужно установить. В идеале, настройка модулей требуется
только тогда, когда установленно несколько пакетов, представляющих одну и ту же
службу, а вам установить приоритет одного из них.
Примечание:
Все обсуждаемые значения хранятся в /etc/conf.d/net, если явно не
указано иное.
|
Листинг 1.1: Предпочтение модуля |
modules=( "iproute2" )
modules_eth0=( "udhcpc" )
modules=( "!iwconfig" )
|
1.
Обработчики интерфейса
Сейчас мы предоставляем два обработчика интерфейса: ifconfig и
iproute2. Для настройки сети вам нужен только один из них.
ifconfig в текущем Gentoo используется по умолчанию, и включен в
системный профиль. iproute2 — более мощный и гибкий пакет, который
не включен в системный профиль по умолчанию.
Листинг 1.1: Установка iproute2 |
# emerge sys-apps/iproute2
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 |
modules=( "dhcpcd" )
config_eth0=( "dhcp" )
dhcpcd_eth0="-t 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 |
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )
config_eth0=( "apipa" )
|
1.
Объединение интерфейсов
Для объединения каналов в ствол (bonding) установите net-misc/ifenslave.
Объединение используется для повышения пропускной способности сети. Если у вас
есть две сетевых карты, выходящих в одну и ту же сеть, можно объединить их,
так что ваши приложения увидят только один интерфейс, но реально будут
пользоваться двумя сетевыми платами.
Листинг 1.1: Настройка объединения в /etc/conf.d/net |
slaves_bond0="eth0 eth1 eth2"
config_bond0=( "null" )
depend_bond0() {
need net.eth0 net.eth1 net.eth2
}
|
1.
Образование моста (поддержка 802.1d)
Для поддержки мостов установите net-misc/bridge-utils.
Мосты используются для объединения сетей. Например, у вас может быть сервер,
подсоединенный к интернету через ADSL-модем, и плата беспроводного доступа
для предоставления доступа в интернет через ADSL модем другим компьютерам.
Чтобы соединить оба интерфейса, можно создать «мост».
Листинг 1.1: Настройка моста в /etc/conf.d/net |
brctl_br0=( "setfd 0" "sethello 0" "stp off" )
bridge_br0="eth0 eth1"
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.0.1/24" )
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_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
mac_eth0="random-full"
|
1.
Образование тоннеля
Для образования тоннеля вам не нужно ничего устанавливать, поскольку на это
способен сам обработчик интерфейса.
Листинг 1.1: Настройка тоннеля в /etc/conf.d/net |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
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 |
vlans_eth0="1 2"
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 вам может потребоваться обращение к
документации по (именам
переменных).
|
|