netctl (Русский)

From ArchWiki
Revision as of 02:13, 19 August 2013 by Rmuratov (Talk | contribs) (Поддержка)

Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end netctl - это инструмент командной строки, используемый для настройки и управления сетевыми подключениями через профили. Это нативный проект, призванный заменить устаревшую утилиту netcfg.

Установка

Пакет netctl доступен в официальном репозитории. Установка netctl заменит netcfg.

netctl и netcfg - конфликтующие пакеты. Есть вероятность потери соединения после установки netctl, если ваши профили некорректно настроены.

Note: Чтобы убедиться, что не запущены другие сервисы по настройке сети, стоит выполнить systemctl --type=service. Различные сетевые сервисы будут конфликтовать

Обязательно к прочтению

Перед началом использования netctl желательно прочитать следующие страницы:

Настройка

Для управления сетевыми соединениями netctl использует профили, которые расположены в /etc/netctl/. Примеры профилей расположены в /etc/netctl/examples/. В общую конфигурацию включены:

  • ethernet-dhcp
  • ethernet-static
  • wireless-wpa
  • wireless-wpa-static

Чтобы использовать пример конфигурации просто скопируйте один из них из /etc/netctl/examples/ в /etc/netctl/ и отредактируйте необходимым образом:

# cp /etc/netctl/examples/wireless-wpa /etc/netctl/
Tip: Для создания профиля беспроводного соединения в /etc/netctl/ можно выполнить wifi-menu -o.

Как только вы создали профиль, попробуйте установить соединение:

# netctl start profile
Note: Здесь profile - это имя файла профиля, и указание полного пути к файлу приведет к ошибке

Если результат выполнения команды говорит о неудаче, выполните journalctl -xn и netctl status profile для выяснения причин. Выполните необходимую корректировку конфигурации и повторите попытку.

Автоматизация

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

Если требуется часто переключаться между многими профилями, используйте Автоматическое переключение профилей - будет полезно пользователям ноутбуков.

Основной метод

Этим методом можно запустить только один профиль на интерфейс. Сначала проверьте, может ли профиль быть запущен:

# netctl enable profile

Эта команда создаст и активирует systemd-сервис, который будет автоматически запускать профиль при загрузке.

Note: Соединение будет установлено только в том случае, если профиль запускается во время загрузки системы (или запуска сервиса). Это значит, что во время загрузки сетевой кабель должен быть подключен, а беспроводная сеть доступна
Tip: Чтобы запустить профиль со статическим IP на проводном интерфейсе независимо от того, подключен кабель или нет, добавьте SkipNoCarrier=yes в файл профиля

Автоматическое переключение профилей

Для автоматического переключения профилей netcl предоставляет два специальных systemd-сервиса:

  • Для проводных соединений: netctl-ifplugd@interface.service. Профиль измненятся при отключении и подключении кабеля.
  • Для беспроводных соединений: netctl-auto@interface.service. Порфиль изменятся при переходе из диапазона одной сети в диапазон другой.

Сначала установите необходимые пакеты:

  • Пакет wpa_actiond требуется сервисом netctl-auto@interface.service
  • Пакет ifplugd требуется сервисом netctl-ifplugd@interface.service
Note: netcfg использовал net-auto-wireless.service и {{|net-auto-wired.service}} для этих целей.

Теперь отредактируйте все профили, которые netctl-auto@interface.service и netctl-ifplugd@interface.service должны будут запускать.

Если вы хотите, чтобы какой-то из беспрводных профилей не запускался автоматически сервисом netctl-auto@interface.service, то это можно явно указать в файле профиля, добавив в него ExcludeAuto=yes.

Приоритет запуска профиля можно установить с помощью Priority=. netctl-ifplugd@interface.service первым предпочтет профиль, который использует DHCP. Для того, чтобы сначала был запущен профиль, использующий статический IP, можно использовать AutoWired=yes. Подробную информацию смотрите в netctl.profile(5).

Warning: С опцией Security=wpa-config невозможно автоматическое подключение к WPA профилю средствами netctl-auto. Вместо этого используйте Security=wpa-configsection

После того, как все профили настроены, активируйте сервисы с помощью systemctl:

# systemctl enable netctl-auto@interface.service 
# systemctl enable netctl-ifplugd@interface.service
Warning:
  • Юнит не запустится при загрузке системы, если один из профилей содержит ошибки, например пустую переменную Key=.
  • Этот метод несовместим с Основным методом. Если вы ранее активировали профиль через netctl, запустите netctl disable profile, чтобы предотвратить запуск профиля дважды при загрузке.

Переход с Netcfg

netctl хранит профили в /etc/netctl/, а не в /etc/network.d/, как это делал 'netcfg.

Чтобы перейти с netcfg, необходимо выполнить по крайней мере следующие шаги:

  • Отключите сервисы ntcfg: systemctl disable netcfg.service.
  • Удалите netcfg и установите netctl.
  • Переместите файлы сетевых профилей в новую директорию.
  • Переименуйте переменныей в соответствии с netctl.profile(5) (в основном надо привести переменные к UpperCamelCase, например CONNECTION переименовать в Connection)
  • Убедитесь, что в переменной Address профиля со статическим IP прописана маска подсети после IP адреса (из образца файла профиля: Address=('192.168.1.23/24' '192.168.1.87/24'))
  • Если вы настраиваете беспроводное соединение по образцу wireless-wpa-configsection, обратите внимание, что это перезапишет опции wpa_supplicant, определенные выше в скобках. Для подключения к скрытой беспроводной сети добавьте scan_ssid=1 к опциям в wireless-wpa-configsection; Hidden=yes здесь не действует.
  • На ваше усмотрение можно удалить кавычки у переменных, для которых кавычки не обязательны.
  • Выполните netctl enable profile для каждого профиля в старом массиве NETWORKS. Если не сработало, смотрите netctl.special(7).
  • Вместо netcfg-menu используйте netctl list и/или netctl start profile. wifi-menu остался доступным.
  • В отличие от netcfg по умолчанию netctl не поднимает сетевую плату, не подключеную к другой работающей сетевой плате. Чтобы обойти этот недостаток, добавьте SkipNoCarrier=yes в конец вашего /etc/netctl/profile. Тогда, даже если, например, кабель ethernet не подключен, сервис будет запущен.

Шифрование пароля (256-битный Pre-Shared Key)

Note: Не смотря на "зашифрованность", ключа, который вы добавите в конфигурацию профиля, будет вполне достаточно для подключения к сети WPA-PSK. Этот метод скроет человеко-читаемый пароль, но он не предотвратит от подключения к сети кого-либо с правом на чтение этого файла.

У пользователей, не желающих, чтобы их пароль хранился в простом тексте, есть возможность использовать 256-bit Encrypted PSK, вычисляемый на основе пароля и SSID сети стандартными алгоритмами. Реализовать шифрование можно двумя способами:

  • Для генерации нужных настроек в /etc/netctl/ использовать wifi-menu -o.
  • Ручная настройка, описанная ниже.

Какой бы метод вы не выбрали, для доступа пользователя к паролю следует установить нужные права на файл профиля:

# chmod 600 /etc/netctl/<config_file>

Вычислите ваш ключ с помощью wpa_passphrase:

$ wpa_passphrase your_essid passphrase
network={
  ssid="your_essid"
  #psk="passphrase"
  psk=64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
}
Note: Не закрывайте терминал, эта информация будет нужна далее

Во втором окне терминала скопируйте файл-образец wireless-wpa из каталога /etc/netctl/examples в /etc/netctl:

# cp /etc/netctl/examples/wireless-wpa /etc/netctl/wireless-wpa

Теперь следует отредактировать /etc/netctl/wireless-wpa, добавив в переменную Key ключ, сгенерированный ранее с помощью wpa_passphrase.

В итоге профиль wireless-wpa будет выглядеть примерно так:

/etc/netctl/wireless-wpa
Description='A simple WPA encrypted wireless connection using 256-bit PSK'
Interface=wlp2s2
Connection=wireless
Security=wpa
IP=dhcp
ESSID=your_essid
Key=\"64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
Note:
  • Убедитесь, что корректно использованы специальные правила расстановки кавычек (special quoting rules) для переменной Key, которые описаны в конце netctl.profile(5).
  • Если пароль не проходит проверку, попробуйте удалить \" из переменной Key.

Советы и рекомендации

Советы

По состоянию на апрель 2013 в netctl нет альтернативы netcfg current. Если вы использовали эту возможность для чего-то, вроде статус-бара тайлового оконного менеджера, теперь вы можете использовать следующее:

# netctl list | sed -n 's/^\* //p'

или, если для подключения использовался netctl-auto:

# wpa_cli -i <interface> status | sed -n 's/^id_str=//p'