netctl (Русский)

From ArchWiki
Revision as of 00:23, 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).

Переход с Netcfg

Warning: netctl конфликтует с netcfg, поэтому отключите существующие netcfg@<profile> сервисы перед установкой netctl.

Профили netctl находятся в /etc/netctl, а не в каталоге /etc/network.d, который использовал netcfg.

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

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

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

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

Если это еще не сделано, установите wpa_actiond из Official Repositories.

Далее, сгенерируйте ваш 256-bit Encrypted PSK используя wpa_passphrase:

Usage: wpa_passphrase [ssid] [passphrase]
$ wpa_passphrase archlinux freenode

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

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

Далее вам будет необходимо отредактировать /etc/netctl/wireless-wpa, используя ваш любимый текстовый редактор, и добавить Encrypted Pre-shared Key, который был сгенерирован ранее с использованием wpa_passphrase, в переменную Key этого профиля.

Профиль wireless-wpa, включающий 256-bit Encrypted PSK будет выглядеть примерно так:

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

Поддержка

Официальная страница обсуждения: https://bbs.archlinux.org/viewtopic.php?id=157670

Советы

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

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

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

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