Настроить беспроводную сеть не совсем просто. Надеемся, мы поможем вам заставить ее работать. 8 2011-08-13
Введение

Беспроводная сеть на Linux обычно просто настраивается. Существует два пути конфигурации wifi: либо с использованием графического клиента, либо из командной строки.

Самым простым путем является использование графического клиента, как только вы установили графическое окружение. Большинство графических клиентов, таких как wicd или NetworkManager достаточно понятны. Они дают вам простой интерфейс "покажите-и-кликните", и вы сможете настроить сеть за несколько секунд.

Программа wicd имеет утилиту для работы в командной строке, в дополнение к главному графическому интерфейсу. Вы можете получить ее установив wicd с USE-флагом ncurses. Утилита wicd-curses особенно полезна для тех людей, которые не используют окружение, основанное на gtk, однако все еще хотят простую утилиту командной строки, которая не требует ручного редактирования конфигурационных файлов.

Однако, если вам не нужно использовать графический клиент, то вы можете сконфигурировать wifi из командной строки, отредактировав несколько конфигурационных файлов. Это потребует немного больше времени для настройки, но также и требует меньше пакетов для скачивания и установки. Так как графические клиенты в большинстве своем понятны (с полезными скриншотами на своих сайтах), мы сфокусируемся на альтернативах — утилитах командной строки.

Вы можете настроить беспроводную сеть из командной строки, установив wireless-tools или wpa_supplicant. Важно запомнить, что вы конфигурируете беспроводные сети глобально, а не на каждый интерфейс.

wpa_supplicant будет лучшим выбором. Для того, чтобы увидеть список поддерживаемых драйверов прочитайте сайт wpa_supplicant.

wireless-tools поддерживает практически все карты и драйвера, но эта программа не может соединяться к точкам доступа со стандартом WPA. Если ваши сети предоставляют только шифрование WEP или вообще открыты, тогда вы можете предпочесть простоту wireless-tools.

Драйвер linux-wlan-ng в настоящее время не поддерживается. Это потому, что linux-wlan-ng имеет свою собственную настройку и конфигурационные файлы, которые полностью отличны от чего бы то ни было еще. Разработчики linux-wlan-ng, вроде бы, изменяют свою настройку, чтобы она была похожа на wireless-tools, так что, когда это произойдет, вы сможете использовать linux-wlan-ng с Gentoo.
WPA Supplicant

WPA Supplicant — пакет, позволяющий подсоединяться к точкам доступа с протоколом WPA.

# emerge net-wireless/wpa_supplicant
Для работы wpa_supplicant в ядре должен быть включен параметр CONFIG_PACKET. Попробуйте запустить grep CONFIG_PACKET /usr/src/linux/.config для проверки того, включена ли эта опция в вашем ядре. В зависимости от ваших USE-флагов, wpa_supplicant может установить графический интерфейс, написанный на Qt4, что будет способствовать хорошей интеграции с KDE. Чтобы получить его, запустите echo "net-wireless/wpa_supplicant qt4" >> /etc/portage/package.use как root, прежде чем устанавливать wpa_supplicant.

Теперь нам необходимо настроить /etc/conf.d/net для предпочтения wpa_supplicant по отношению к wireless-tools (по умолчанию, если обе программы установлены, работает wireless-tools).

# выбор wpa_supplicant
modules="wpa_supplicant"

# важно указать wpa_supplicant, какой драйвер нужно использовать,
# так как программа пока не слишком хорошо угадывает сама

wpa_supplicant_eth0="-Dбезумный-wifi"
Если вы используете драйвер host-ap, то вам потребуется перевести плату в ведомый режим (managed mode), прежде чем она сможет правильно работать с wpa_supplicant. Для этого можно указать iwconfig_eth0="mode managed" в /etc/conf.d/net.

Это довольно просто, не так ли? Однако, нужно настроить саму программу wpa_supplicant, что значительно сложнее. Сложность зависит от степени защиты точек доступа, к которым вы собираетесь подключаться. Следующий упрощенный пример взят из /usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz, поставляемого в составе wpa_supplicant.

# следующую строку нельзя изменять, иначе программа не сможет работать
ctrl_interface=/var/run/wpa_supplicant

# ограничим доступ к настройкам WPA только для root
ctrl_interface_group=0

# пусть wpa_supplicant заботится о сканировании и выборе точки доступа
ap_scan=1

# простой случай: WPA-PSK, согласованный ключ - текстовая строка,
# принимать любой допустимый шифр
network={
  ssid="просто"
  psk="очень тайный пароль"
  # чем выше приоритет, тем скорее выбор
  priority=5
}

# как в предыдущем, но с запросом сканирования по определенному SSID
# (для точек доступа, отклоняющих широковешательный SSID)
network={
  ssid="второй ssid"
  scan_ssid=1
  psk="очень тайный пароль"
  priority=2
}

# использовать только WPA-PSK; принимать любое допустимое сочетание шифров

network={
  ssid="пример"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}

# открытое подключение без шифрования (не WPA, не IEEE #802.1X)

network={
  ssid="тест-открытого-текста"
  key_mgmt=NONE
}

# подключение с общим ключом WEP (не WPA, не IEEE #802.1X)
network={
  ssid="тест-статического-wep"
  key_mgmt=NONE
  # Ключи в кавычках считаются ASCII-ключами
  wep_key0="abcde"
  # Ключи без кавычек считаются hex-ключами
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}

# подключение с общим ключом WEP (не WPA, не IEEE #802.1X),
# допуск c использованим общего ключа IEEE 802.11
network={
  ssid="тест2-статического-wep"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
  auth_alg=SHARED
}

# сеть IBSS/ad-hoc с WPA-None/TKIP
network={
  ssid="тест adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="тайный пароль"
}
Утилиты Wireless tools Начальная установка и режим ведомого

Wireless Tools обеспечивают общий способ настройки базовых беспроводных интерфейсов, вплоть до защиты WEP. Хотя WEP является слабым методом защиты, он наиболее распространен.

Для настройки Wireless Tools служат несколько основных переменных. В примере файла настроек, приведенном ниже, описано все, что вам потребуется. Нужно помнить, что отсутствие настройки означает «подключаться к нешифрующей точке доступа с самым сильным сигналом». Программа будет всегда пытаться подключить вас к чему-нибудь.

# emerge net-wireless/wireless-tools
Хотя вы можете хранить свои параметры настройки беспроводной сети в /etc/conf.d/wireless, это руководство рекомендует хранить их в /etc/conf.d/net. Вам понадобится обратиться к документации по именам переменных.
# приоритет использования iwconfig над wpa_supplicant
modules="iwconfig"

# Настройка ключей WEP для точек доступа ESSID1 и ESSID2
# Можно указывать до 4 ключей WEP, но только 1 может работать в каждый
# момент, поэтому мы указываем индекс по умолчанию [1], чтобы сделать ключ [1],
# а впоследствии снова, чтобы изменить активный ключ на [1].
# Это нужно, если вы настраиваете другие ESSID на использование WEP-ключей, 
# отличающихся от [1].
#
# Приставка s: перед ключом означает, что ключ текстовый, иначе - 
# шестнадцатиричный
#
# enc open указывает открытую защиту (более безопасно)
# enc restricted указывает ограниченную защиту (менее безопасно)
key_ESSID1="[1] s:ваш-ключ-здесь key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
#
# Нижеследующее работает только при поиске доступных точек доступа.

# Иногда видны несколько точек доступа, и требуется задать
# предпочтительный порядок подключения
preferred_aps="ESSID1 ESSID2"
Настройка порядка выбора точки доступа

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

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

anyповедение по умолчаниюpreferredonlyсоединяться только с видимыми точками доступа из спискаforcepreferred принудительно подключаться к точкам доступа в заданной последовательности, если они не обнаружены при сканировании forcepreferredonly не сканировать точки доступа, просто пытаться подключиться к каждой по списку forceany так же, как в forcepreferred + подключаться к любой доступной точке доступа
Значение Описание

Наконец, мы можем указать blacklist_aps и unique_ap. blacklist_aps работает подобно preferred_aps. unique_ap устанавливается в yes или no, указывая, можно ли подключать второй беспроводной интерфейс к той же точке доступа, что и первый.

# иногда требуется полностью исключить возможность подключения
# к определенным точкам доступа
blacklist_aps="ESSID3 ESSID4"

# если у вас несколько беспроводных плат, можно указать, можно ли им
# подключаться к одной и той же точке доступа
# значение - "yes" или "no"
# по умолчанию - "yes"
unique_ap="yes"
Режим отдельного и ведущего узла

Если вы хотите становиться отдельным узлом (ad hoc), когда не удается подключиться ни к какой точке доступа в ведомом режиме, это тоже возможно.

adhoc_essid_eth0="Этот отдельный узел"

Как насчет подключения к сетям Ad-Hoc или запуска в режиме ведущего (master), чтобы стать точкой доступа? Есть конфигурация и для такой работы! Вам может потребоваться определить WEP-ключи, как показано выше.

# установка режима: допускается managed (ведомый, по умолчанию),
# ad-hoc (отдельный) или или master (ведущий). Не все драйверы поддерживают 
# каждый режим 
mode_eth0="ad-hoc"

# установка ESSID интерфейса
# в ведомом режиме заставляет интерфейс пытаться подключиться к указанному
# ESSID, и больше ничего
essid_eth0="Этот отдельный узел"

# если не указан, используется канал 3
channel_eth0="9"
Следующий текст взят дословно из документации BSD wavelan, входящей в документацию NetBSD. «Существуют 14 каналов. Нам сообщили, что использование каналов с 1 по 11 является законным в Северной Америке, каналов с 1 по 13 — в большинстве стран Европы, каналов с 10 по 13 — во Франции, и только канала 14 — в Японии. Если у вас есть сомнения, обратитесь к документации от вашей платы или точки доступа. Убедитесь что выбранный канал совпадает с каналом точки доступа (или другой платы в сети ad-hoc). По умолчанию на платах, продаваемых в Северной Америке и большинстве стран Европы, настроен канал 3; на платах, продаваемых во Франции — канал 11; на платах, продаваемых в Японии — канал 14.»
Устранение неполадок в wireless tools

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

iwconfig_eth0 За подробными сведениями о параметрах iwconfig обращайтесь к странице справки iwconfig. iwpriv_eth0 За подробными сведениями о параметрах iwpriv обращайтесь к странице справки iwpriv sleep_scan_eth00 Время задержки в секундах перед попыткой сканирования. Требуется, когда драйверу или прошивке нужно дополнительное время для перехода в рабочий режим. sleep_associate_eth05 Время ожидания связи интерфейса с точкой доступа (в секундах) перед переходом к опросу следующей. associate_test_eth0MAC Некоторые драйверы не сбрасывают MAC-адрес, связанный с недоступной точкой доступа, при потере или попытки связи. Некоторые драйверы не сбрасывают значение качества сигнала при потере или попытке соединения. Допустимые значения: MAC, quality и all. scan_mode_eth0 Некоторым драйверам необходимо сканировать в режиме ad-hoc. Если сканирование не удается, попробуйте указать здесь ad-hoc. iwpriv_scan_pre_eth0 Посылать интерфейсу некоторые команды iwpriv перед сканированием. За дополнительными сведениями обращайтесь к странице справки iwpriv. iwpriv_scan_post_eth0 Посылать интерфейсу некоторые команды iwpriv после сканирования. За дополнительными сведениями обращайтесь к странице справки iwpriv.
Переменная Значение по умолчанию Описание
Раздельная настройка сети по ESSID

Иногда необходим статический IP при соединении с ESSID1, и DHCP при соединении с ESSID2. На деле, большинство переменных модуля можно определять раздельно по ESSID. Вот как это сделать:

Это работает при использовании WPA Supplicant или Wireless Tools. Вам потребуется свериться с документацией по именам переменных.
config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"

config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"

# можно также указать сервера имен и др.
# ПРЕДУПРЕЖДЕНИЕ: DHCP переопределит настройки, если не указано иное
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"

# перенастройка производится по МАС-адресу точки доступа;
# это полезно, когда в разных местах есть точки доступа с одинаковым ESSID
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"