Изменение настройки сети в файле rc.conf в FreeBSD 9.0

Установка, настройка, эксплуатация.

Модератор: ROOT

Изменение настройки сети в файле rc.conf в FreeBSD 9.0

Сообщение ROOT » 20 июл 2014, 08:27

Интересный сюрприз принесла нам новая версия FreeBSD 9.0 RELEASE. Он связан с некоторым изменением синтаксиса настройки сети в файле /etc/rc.conf. Ранее переменные в этом файле были в основном совместимы с более ранними версиями, однако в новом релизе переменные, относящиеся к конфигурации сети, изменились из-за реорганизации стартовых скриптов. При описании конфигурации IP-адреса теперь обязательно следует указывать тип протокола. Например, строку
Код: выделить все
ifconfig_em0 = "192.168.2.1 mask 255.255.255.0"

следует записывать так:
Код: выделить все
ifconfig_em0 = "inet 192.168.2.1 mask 255.255.255.0".

Хотя старые способы записи по-прежнему поддерживается в существующих переменных для обратной совместимости, некоторые новые переменные не поддерживают старый синтаксис, например в переменных ifconfig_IF_alias также требуется указать тип протокола. Т.е.
Код: выделить все
ifconfig_em0_alias0 = "192.168.2.10 mask 255.255.255.255"

следует записывать так:
Код: выделить все
ifconfig_em0_alias0 = "inet 192.168.2.10 mask 255.255.255.255"

Зато разные протоколы можно записывать в конструкции alias:
Код: выделить все
ifconfig_em0_alias0 = "inet 192.168.2.10 mask 255.255.255.255"
ifconfig_em0_alias1 = "inet6 2001: db8: 1:: 1 prefixlen 64"

Обратите внимание, что IPv6 псевдонимы в конструкции ifconfig_IF_aliasN будут игнорироваться, если переменная ifconfig_IF_ipv6 не определена, поскольку последняя определяет включен ли IPv6-протокол на данном интерфейсе.

Все настройки адресов и статической маршрутизации, записанные в переменных файла /etc/rc.conf , можно отключить остановкой сервиса:
Код: выделить все
# service netif stop em0

Команда
Код: выделить все
# service routing stop

деактивирует все статические маршруты в системе.

Релизы до FreeBSD 9.0 не поддерживает эту функцию только для протоколов отличных от IPv4.

Синтаксис конфигурации протокола IPv6 также существенно изменился. Перед подробным объяснением, приведем пример. То, что раньше записывалось как:
Код: выделить все
ifconfig_em0 = "192.168.2.1 mask 255.255.255.0"
ifconfig_em0_alias0 = "192.168.2.2 mask 255.255.255.255"
ipv6_enable = "YES"
ipv6_ifconfig_em0 = "2001: db8: 1:: 1 prefixlen 64"
ipv6_ifconfig_em0_alias0 = "2001: db8: 2:: 1 prefixlen 64"


# em1 использует SLAAC для настройки IPv6 адресов

в 9.0-RELEASE должно выглядеть следующим образом:
Код: выделить все
ifconfig_em0 = "inet 192.168.2.1 mask 255.255.255.0"
ifconfig_em0_ipv6 = "inet6 2001: db8: 1:: 1 prefixlen 64 accept_rtadv"
ifconfig_em0_alias0 = "192.168.2.2 mask inet 255.255.255.255"
ifconfig_em0_alias1 = "inet6 2001: db8: 2:: 1 prefixlen 64"
ifconfig_em1_ipv6 = "inet6 accept_rtadv"

Переменная ipv6_enable является устаревшей, а IPv6 функциональность в системе и так по умолчанию включена. Система теперь поддерживает автоматическую настройку конфигураций IPv6 между хостом и маршрутизатором. Установкой переменной ipv6_enable предполагается, что система является хостом, если ipv6_gateway_enable установлен в NO (по умолчанию), либо система является маршрутизатором, если ipv6_gateway_enable=»YES». Хост всегда принимает сообщения от ICMPv6 маршрутизатора. Модель автоматической конфигурации протокола IPv6 все еще применяется для каждого интерфейса, а не для всей системы. В частности, если на интерфейсе установлен флаг ACCEPT_RTADV, то RA сообщений будут приниматься на этом интерфейсе для SLAAC (автоконфигурация) независимо от того, установлена переменная ipv6_gateway_enable или нет. Кроме того, для каждого интерфейса добавлены флаг NO_RADR и sysctl переменная net.inet6.ip6.rfc6204w3, определяющие, будет ли маршрутизатор по умолчанию применять полученные сообщения RA. IPv6-маршрутизатор не должен принимать RA сообщения, как источник информации для списка маршрутизаторов по умолчанию, поэтому если установлена переменная IPv6_gateway_enable, система игнорирует сообщения RA, даже если на интерфейсе установлен флаг ACCEPT_RTADV. Тем не менее, это может создать сложную ситуацию, когда система должна работать как CPE (Customer Premises Equipment), т.е. в одно и то же время должна принимать RА сообщения от вышестоящего маршрутизатора, а также самой выступать в качестве маршрутизатора для локальной сети (RFC 6204). Для поддержки такой конфигурации используется переменная
Код: выделить все
ipv6_cpe_wanif в файле /etc/rc.conf.
ipv6_gateway_enable = "YES"
ipv6_cpe_wanif = "em0


На интерфейсе em0 принимаются RА сообщений и применяется информация о полученных маршрутах, а на других интерфейсах, даже если на них установлен флаг ACCEPT_RTADV, игнорируется информация от маршрутизаторов. Одновременно с установкой в 1 переменной ipv6_cpe_wanif переменные net.inet6.ip6.rfc6204w3 и net.inet6.ip6.no_radr также устанавливаются в 1. Заметим, что по умолчанию они установлены в 0. Если флаг ACCEPT_RTADV установлен в 1, система принимает информацию от маршрутизатора, даже если переменная IPv6_gateway_enable включена. Обратите внимание, что системный администратор должен принудительно установить флаг NO_RADR с на соответствующих интерфейсах, чтобы избежать принятия нежелательной информацией о маршрутизации по умолчанию.

Если установлена переменная ipv6_enable, то устанавливается и переменная ipv6_activate_all_interfaces в файле /etc /rc.conf и опции ifconfig inet6 accept_rtadv для всех сетевых интерфейсов. Отметим, что это сделано только для обратной совместимости? переменная ipv6_enable не должны использоваться в FreeBSD 9.0. Переменная ipv6_ifconfig_IF переименована в ifconfig_IF_ipv6 и определяет, разрешена ли обработка IPv6-пакетов на данном интерфейсе. Если переменная ifconfig_IF_ipv6 не установлена, IPv6-пакеты на интерфейса IF не обрабатываются. Не забывайте, что переменная ifconfig_IF_ipv6 всегда нуждается в указании протокола inet6. Если вам достаточно присвоения автоматического link-local адреса, добавьте следующие строки:
Код: выделить все
ifconfig_em0_ipv6 = "inet6 auto_linklocal"

Если нужна полная поддержка IPv6 на всех интерфейсах (так, как разрешала переменная ipv6_enable = «YES» предыдущих версиях), вы можете использовать переменную ipv6_activate_all_interfaces.

Если определена переменная ipv6_ifconfig_IF =»…» это эквивалентно определению ifconfig_IF_ipv6 = «inet6 …». Отметим, что это необходимо только для обратной совместимости. Интерфейс без определения переменной ifconfig_IF_ipv6 отмечается флагом IFDISABLED, который означает, что обработка IPv6-пакетов на этом интерфейсе отключена. Это видно в выводе Ifconfig:
Код: выделить все
# Ifconfig em0
em0: flags = 8843 <UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 MTU 1500
options = 9b <RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether XX: XX: XX: XX: XX: XX
inet 192.168.2.1 mask 0xffffff00 broadcast 192.168.2.255
ND6 options = 3 <PERFORMNUD,IFDISABLED,ACCEPT_RTADV>
СМИ: Ethernet autoselect (1000baseT <full-duplex>)
status: active

Для включения функции IPv6, этот флаг должен быть удален в первую очередь. Есть несколько способов сделать это, например добавление IPv6-адрес автоматически удаляет этот флаг. Можно снять этот флаг, явно с помощью следующей команды:
Код: выделить все
# Ifconfig em0 inet6-ifdisabled

Обратите внимание, что объявление ifconfig_IF_ipv6 является наиболее разумным способом, активирования IPv6 функциональности этого интерфейса. Флаг IFDISABLED используется для запрета нежелательного IPv6 трафика (в среде только IPv4) даже если интерфейсу присвоен IPv6 link-local адрес. Если вам нужна полная поддержка функциональности IPv6 на всех интерфейсах, вы можете использовать переменную ipv6_activate_all_interfaces.

Изменена переменная sysctl net.inet6.ip6.accept_rtadv, которая ранее определяла, принимает ли система сообщения ICMPv6 Router Advertisement. В FreeBSD 9.0-RELEASE эта настройка изменяется через ifconfig для каждого интерфейса inet6 accept_rtadv. Хотя sysctl переменная еще доступна в FreeBSD 9.0-RELEASE, теперь он определяет, будет ли для каждого интерфейса параметр установлен по умолчанию. Значение по умолчанию равно 0.

Переменная sysctl net.inet6.ip6.auto_linklocal также изменена. Эта переменная определяла, присваивался ли IPv6 link-local адрес на сетевом интерфейсе автоматически. В FreeBSD 9.0-RELEASE, эта настройка изменяется для каждого интерфейса через ifconfig inet6 auto_linklocal. Хотя sysctl переменная по-прежнему доступна в FreeBSD 9.0-RELEASE, теперь она определяет, будет ли этот параметр установлен по умолчанию для каждого интерфейса. Значение по умолчанию 1 (создания link-local адреса автоматически).

Функциональность ipv6_ifconfig_IF_alias0 интегрирована в ifconfig_IF_alias0. Обратите внимание, что указание протокола обязательно:
Код: выделить все
ifconfig_em0_alias0 = "inet 192.168.2.10 mask 255.255.255.255"
ifconfig_em0_alias1 = "inet6 2001: db8: 1:: 1 prefixlen 64

Переменная ipv6_ifconfig_IF_aliasN до сих пор используется в FreeBSD 9.0, но только для обратной совместимости.

Также добавлена новая переменная ipv6_activate_all_interfaces. Если эта переменная установлена в YES, опция IFDISABLED не будет добавлен, даже если ifconfig_IF_ipv6 переменные не определены. Это может предотвратить IFDISABLED на динамически создаваемых интерфейсах, таких как PPP или ng_iface, где определить ifconfig_IF_ipv6 заранее трудно.
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в FreeBsd

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron