Difference between revisions of "Netctl"

From ArchWiki
Jump to: navigation, search
(стилевые правки)
(Undo revision 325522 by Blackx (talk) - the Russian page is here)
Line 1: Line 1:
 
{{Lowercase title}}
 
{{Lowercase title}}
[[Category:Русский]]
+
[[Category:Network managers]]
[[Category:Networking (Русский)]]
+
[[Category:Network managers (Русский)]]
+
 
[[cs:Netctl]]
 
[[cs:Netctl]]
[[en:Netctl]]
 
 
[[es:Netctl]]
 
[[es:Netctl]]
 
[[fr:Netctl]]
 
[[fr:Netctl]]
 
[[ja:Netctl]]
 
[[ja:Netctl]]
 +
[[ru:Netctl]]
 
[[zh-CN:Netctl]]
 
[[zh-CN:Netctl]]
 +
{{Related articles start}}
 +
{{Related|Bridge with netctl}}
 +
{{Related|Network configuration}}
 +
{{Related|Wireless network configuration}}
 +
{{Related|:Category:Network managers}}
 +
{{Related articles end}}
  
''netctl'' — это инструмент командной строки, используемый для настройки и управления сетевыми подключениями через профили. Это один из проектов Arch Linux, призванный заменить устаревшую утилиту ''netcfg''.
+
''netctl'' is a CLI-based tool used to configure and manage network connections via profiles. It is a native Arch Linux project that replaces the old ''netcfg'' utility.
  
== Установка ==
+
== Installation ==
  
{{Expansion (Русский)|Следует упомянуть о дополнительных зависимостях.}}
+
{{Expansion|Optional dependencies should be mentioned.}}
  
Пакет {{Pkg|netctl}} доступен в [[Official Repositories (Русский)|официальных репозиториях]]. Установка netctl заменит {{AUR|netcfg}} ({{Pkg|netctl}} и {{AUR|netcfg}} — конфликтующие пакеты). Есть вероятность потери сетевого соединения после установки {{Pkg|netctl}}, если ваши профили некорректно настроены с точки зрения netctl.
+
The {{Pkg|netctl}} package is available in the [[official repositories]]. Installing netctl will replace {{AUR|netcfg}}.  
  
{{Note (Русский)|Чтобы убедиться, что не запущены другие службы настройки сети, стоит выполнить {{ic|1=systemctl --type=service}}. Разные сетевые службы будут конфликтовать.}}
+
{{Pkg|netctl}} and {{AUR|netcfg}} are conflicting packages. You will be potentially connectionless after installing ''netctl'' if your profiles are misconfigured.
  
== Рекомендуется к прочтению ==
+
{{Note|It may be a good idea to use {{ic|1=systemctl --type=service}} to ensure that no other service is running that may want to configure the network. Multiple networking services will conflict.}}
  
Перед началом использования netctl желательно прочитать следующие страницы:
+
== Required reading ==
* [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.1.txt netctl]
+
* [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile]
+
* [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.special.7.txt netctl.special]
+
  
== Настройка ==
+
It is advisable to read the following man pages before using netctl:
 +
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.1.txt netctl]
 +
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile]
 +
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.special.7.txt netctl.special]
  
Для управления сетевыми соединениями netctl использует профили, файлы которых расположены в {{ic|/etc/netctl/}}. В {{ic|/etc/netctl/examples/}} можно найти примеры типовых конфигураций:
+
== Configuration ==
  
 +
''netctl'' uses profiles to manage network connections, profile files are stored in {{ic|/etc/netctl/}}. Example configuration files are provided for the user to assist them in configuring their network connection. These example profiles are located in {{ic|/etc/netctl/examples/}}. The common configurations include:
 
* ethernet-dhcp
 
* ethernet-dhcp
 
* ethernet-static
 
* ethernet-static
Line 36: Line 41:
 
* wireless-wpa-static
 
* wireless-wpa-static
  
Вы можете использовать любой файл из предоставленных примеров как основу для своей конфигурации, для этого просто скопируйте один из них в {{ic|/etc/netctl/}} и отредактируйте необходимым образом:
+
To use an example profile, simply copy one of them from {{ic|/etc/netctl/examples/}} to {{ic|/etc/netctl/}} and configure it to your needs:
  
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/''имя_профиля''
+
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/''profile''
  
{{Note (Русский)|Скорее всего, вам будет '''необходимо''' изменить имя сетевого интерфейса в профиле. Начиная с версии 197, [[udev (Русский)|udev]] больше не присваивает интерфейсам имена стандартного вида {{ic|wlanX}} и {{ic|ethX}}. Теперь устройствам присваиваются имена вида {{ic|enXXXXX}} (адаптеры Ethernet), {{ic|wlXXXXX}} (беспроводные адаптеры), которые могу изменяться в зависимости от места их физического подключения. Используйте команду {{ic|ip link}} чтобы узнать имена сетевых интерфейсов в вашей системе.}}
+
{{Note|You will most probably '''need''' to edit the interface name in the profile. As of v197, udev no longer assigns network interface names according to the {{ic|wlan''X''}} and {{ic|eth''X''}} naming scheme. Please do not assume that your wireless interface is named {{ic|wlan0}}, or that your wired interface is named {{ic|eth0}}, as used in examples on this page. You can use the command {{ic|ip link}} to discover the names of your interfaces. See [[Network configuration#Device names]] for details.}}
  
{{Tip (Русский)|Для автоматического создания профиля беспроводного соединения в {{ic|/etc/netctl/}} воспользуйтесь командой {{ic|wifi-menu -o}}.}}
+
{{Tip|For wireless settings, you can use {{ic|wifi-menu -o}} to generate the profile file in {{ic|/etc/netctl/}}.}}
  
Как только вы создали профиль, попробуйте установить соединение:
+
Once you have created your profile, make an attempt to establish a connection using the newly created profile by running:
  
  # netctl start ''имя_профиля''
+
  # netctl start ''profile''
  
{{Note (Русский)|Здесь ''имя_профиля'' — это имя файла профиля. Указание полного пути к файлу является ошибкой.}}
+
{{Note|''profile'' is the file name, not including the full path. Providing the full path will make ''netctl'' exit with an error code.}}
  
Если в результате выполнения команды было выведено сообщение об ошибке, выполните {{ic|journalctl -xn}} и {{ic|netctl status ''имя_профиля''}} для выяснения ее причины. Произведите необходимую корректировку конфигурации и повторите попытку.
+
If issuing the above command results in a failure, then use {{ic|journalctl -xn}} and {{ic|netctl status ''profile''}} in order to obtain a more in depth explanation of the failure. Make the needed corrections to the failed configuration and retest.
  
=== Автоматизация ===
+
=== Automatic operation ===
  
Если используется только один профиль на один интерфейс или вы хотите переключать профили вручную, то подойдет [[#Основной метод|основной метод]] — пользователям серверов, рабочих станций, роутеров и т. п.
+
If you use only one profile (per interface) or want to switch profiles manually, the [[#Basic method|Basic method]] will do. Most common examples are servers, workstations, routers etc.
  
Если требуется часто переключаться между несколькими профилями, используйте [[#Автоматическое переключение профилей|автоматическое переключение профилей]] — будет полезно пользователям ноутбуков.
+
If you need to switch multiple profiles frequently, use [[#Automatic switching of profiles|Automatic switching of profiles]]. Most common examples are laptops.
  
==== Основной метод ====
+
==== Basic method ====
  
Этот метод создаст и активирует службу [[systemd (Русский)|systemd]], который будет запускаться при загрузке системы. Изменения в файле профиля не будут отражаться в файле конфигурации службы автоматически, поэтому, после внесения изменений в файл, необходимо вновь активировать профиль командой:
+
With this method, you can statically start only one profile per interface. First manually check that the profile can be started  successfully, then it can be enabled using
  
  # netctl enable ''имя_профиля''
+
  # netctl enable ''profile''
  
{{Note (Русский)|Соединение будет установлено только в том случае, если профиль может быть успешно запущен во время загрузки системы (во время запуска службы). Это значит, что во время загрузки сетевой кабель должен быть подключен, а беспроводная сеть доступна.}}
+
This will create and enable a [[systemd]] service that will start when the computer boots. Changes to the profile file will not propagate to the service file automatically. After such changes, it is necessary to reenable the profile:
  
{{Tip (Русский)|Вы можете запускать профиль Ethetnet со статическим IP независимо от того, подключен кабель или нет. Для этого добавьте {{ic|1=SkipNoCarrier=yes}} в файл конфигурации профиля.}}
+
# netctl reenable ''profile''
  
==== Автоматическое переключение профилей ====
+
{{Note|The connection is only established if the profile can be started succesfully at boot time (or when the service starts). That specifically means, in case of wired connection the cable must be plugged-in, in case of wireless connection the network must be in range.}}
  
Для автоматического переключения профилей netctl предоставляет две специальных службы [[systemd (Русский)|systemd]]:
+
{{Tip|To enable static IP profile on wired interface no matter if the cable is connected or not, use {{ic|1=SkipNoCarrier=yes}} in your profile.}}
  
* Для проводных соединений: {{ic|netctl-ifplugd@''interface''.service}}. Сервис автоматически изменяет профиль при подключении и отключении кабеля.
+
==== Automatic switching of profiles ====
* Для беспроводных соединений: {{ic|netctl-auto@''interface''.service}}. Сервис автоматически изменяет профиль при переходе из диапазона одной сети в диапазон другой.
+
  
Сначала [[pacman (Русский)#Установка определенных пакетов|установите]] необходимые пакеты:
+
''netctl'' provides two special [[systemd]] services for automatic switching of profiles:
  
* Пакет {{Pkg|wpa_actiond}} требуется для использования {{ic|netctl-auto@''interface''.service}}
+
* For wired interfaces: {{ic|netctl-ifplugd@''interface''.service}}. Using this netctl profiles change as you plug the cable in and out.
* Пакет {{Pkg|ifplugd}} требуется для использования {{ic|netctl-ifplugd@''interface''.service}}
+
* For wireless interfaces: {{ic|netctl-auto@''interface''.service}}. Using this netctl profiles change as you move from range of one network into range of other network.
  
{{Note (Русский)|netcfg использовал {{ic|net-auto-wireless.service}} и {{ic|net-auto-wired.service}} для этих целей.}}
+
{{Note|''netcfg'' used {{ic|net-auto-wireless.service}} and {{ic|net-auto-wired.service}} for this purpose.}}
  
Теперь настройте профили, которые должны будут запускаться с помощью {{ic|netctl-auto@''interface''.service}} и {{ic|netctl-ifplugd@''interface''.service}}.
+
First [[pacman|install]] required packages:
 +
* Package {{Pkg|ifplugd}} is required to use {{ic|netctl-ifplugd@''interface''.service}}.
 +
* Package {{Pkg|wpa_actiond}} is required to use {{ic|netctl-auto@''interface''.service}}.
  
Если вы хотите, чтобы какой-то из беспроводных профилей '''не''' запускался автоматически службой {{ic|netctl-auto@''interface''.service}}, то вам следует явно указать это в файле профиля, добавив в него {{ic|1=ExcludeAuto=yes}}.
+
Now configure all profiles that {{ic|netctl-auto@''interface''.service}} or {{ic|netctl-ifplugd@''interface''.service}} can start.
  
В случае нескольких беспроводных профилей, вы также можете установить приоритет запуска каждого, указав его в параметре {{ic|1=Priority=[0-9]}} секции {{ic|WPAConfigSection}} (см. пример в {{ic|/etc/netctl/examples/wireless-wpa-configsection}}. По-умолчанию, {{ic|netctl-ifplugd@''interface''.service}} первым предпочтет профиль, который использует [[Wikipedia:ru:DHCP|DHCP]]. Для того, чтобы сначала был запущен профиль, использующий статический IP, можно использовать опцию {{ic|1=AutoWired=yes}}. Подробную информацию смотрите в {{ic|netctl.profile(5)}}.
+
If you want some wireless profile '''not''' to be started automatically by {{ic|netctl-auto@''interface''.service}}, you have to explicitly add {{ic|1=ExcludeAuto=yes}} to that profile. You can use {{ic|1=Priority=}} in the ''WPAConfigSection'' (see ''/etc/netctl/examples/wireless-wpa-configsection'') to set priority of some profile when multiple profiles are available. {{ic|netctl-ifplugd@''interface''.service}} will prefer profiles, which use [[Wikipedia:DHCP|DHCP]]. To prefer a profile with a static IP, you can use {{ic|1=AutoWired=yes}}. See {{ic|netctl.profile(5)}} for details.
  
{{Warning (Русский)|С опцией {{ic|1=Security=wpa-config}} невозможно автоматическое подключение к WPA профилю средствами netctl-auto. Вместо этого используйте {{ic|1=Security=wpa-configsection}}.}}
+
{{Warning|Automatic selection of a WPA-enabled profile by ''netctl-auto'' is not possible with option {{ic|1=Security=wpa-config}}, please use {{ic|1=Security=wpa-configsection}} instead.}}
  
После того, как все профили настроены, активируйте нужные вам службы:
+
Once your profiles are set and verified to be working, simply enable these services using ''systemctl'':
  
 
  # systemctl enable netctl-auto@''interface''.service  
 
  # systemctl enable netctl-auto@''interface''.service  
  # systemctl enable netctl-ifplugd@''interface''.service
+
  # systemctl enable netctl-ifplugd@''interface''.service
  
{{Warning (Русский)|
+
{{Warning|
* Если один из профилей содержит ошибки, например пустую переменную {{ic|1=Key=}}, юнит systemd не сможет запуститься при загрузке даже если профиль с ошибкой не был активирован.
+
* If any of the profiles contain errors, such as an empty or misquoted {{ic|1=Key=}} variable, the unit will fail to load with the message {{ic|"Failed to read or parse configuration '/run/network/wpa_supplicant_wlan0.conf'}}, even when that profile is not being used.
* Этот метод несовместим с [[#Основной метод|основным методом]]. Если вы ранее активировали профиль через netctl запустите {{ic|netctl disable ''имя_профиля''}}, чтобы предотвратить запуск профиля дважды при загрузке.}}
+
* This method conflicts with the [[#Basic method|Basic method]]. If you have previously enabled a profile through ''netctl'', run {{ic|netctl disable ''profile''}} to prevent the profile from starting twice at boot.
 
+
}}
Начиная с версии netctl 1.3, стало возможным вручную управлять сетевым интерфейсом, контролируемым службой netctl-auto без необходимости остановки службы. Это реализовано с помощью одноименной утилиты netctl-auto. Чтобы просмотреть список доступных команд, наберите:
+
# netctl-auto --help
+
 
+
=== Переход с netcfg ===
+
 
+
netctl хранит профили в {{ic|/etc/netctl/}}, а не в {{ic|/etc/network.d/}}, как это делал netcfg.
+
  
Чтобы перейти с netcfg, необходимо выполнить, как минимум, следующие шаги:
+
Since netctl 1.3, it possible to manually control an interface otherwise managed by netctl-auto without having to stop the netctl-auto service. This is done using the netctl-auto command. To have a list of available actions just run:
 +
  # netctl-auto --help
  
* Отключите службы netcfg: {{ic|systemctl disable netcfg.service}}.
+
=== Migrating from netcfg ===
* Удалите netcfg и [[pacman (Русский)#Установка определенных пакетов|установите]] netctl.
+
* Переместите файлы сетевых профилей в новую директорию.
+
* Переименуйте переменные в соответствии с {{ic|netctl.profile(5)}} (в основном, необходимо привести переменные к регистру [[Wikipedia:ru:CamelCase|UpperCamelCase]]. Например {{ic|CONNECTION}} нужно переименовать в {{ic|Connection}}).
+
* Убедитесь, что в переменной {{ic|Address}} профиля со статическим IP прописана маска подсети после IP адреса (например: {{ic|1=Address=('192.168.1.23'''/24'''' '192.168.1.87'''/24'''')}})
+
* Если вы настраивали беспроводное соединение по образцу {{ic|wireless-wpa-configsection}}, обратите внимание, что это перезапишет опции {{ic|wpa_supplicant}}, определенные выше скобок. Для подключения к скрытой беспроводной сети добавьте {{ic|1=scan_ssid=1}} к опциям в {{ic|wireless-wpa-configsection}}; {{ic|1=Hidden=yes}} больше не действует.
+
* На ваше усмотрение можно убрать кавычки вокруг переменных, для которых кавычки не обязательны.
+
* Выполните {{ic|netctl enable ''имя_профиля''}} для каждого профиля в старом массиве {{ic|NETWORKS}}. Специальная опция {{ic|last}} больше не нужна, смотрите описание netctl.service в [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.special.7.txt netctl.special(7)].
+
* Вместо ''netcfg-menu'' используйте {{ic|netctl list}} и {{ic|netctl start ''имя_профиля''}}. ''wifi-menu'' остался доступным.
+
* В отличие от netcfg, по-умолчанию netctl не устанавливает логическое соединение на интерфейсе, если [[Wikipedia:ru:Сетевая_плата|сетевая плата]], не подключена к другой работающей плате. Чтобы это исправить, добавьте {{ic|1=SkipNoCarrier=yes}} в конец вашего файла {{ic|/etc/netctl/''имя_профиля''}}.
+
  
=== Хеширование пароля (256-битный Pre-Shared Key) ===
+
''netctl'' uses {{ic|/etc/netctl/}} to store its profiles, '''not''' {{ic|/etc/network.d/}} (used by ''netcfg'').
  
{{Note (Русский)|Этот метод позволяет зашифровать пароль в файле конфигурации беспроводной сети так, чтобы скрыть его от прочтения посторонними. Однако, это не защищает от использования вашего файла с зашифрованной версией пароля посторонним пользователем с правами на его чтение для подключения к сети.}}
+
In order to migrate from ''netcfg'', at least the following is needed:
 +
* Disable the netcfg service: {{ic|systemctl disable netcfg.service}}.
 +
* Uninstall ''netcfg'' and install ''netctl''.
 +
* Move network profile files to the new directory.
 +
* Rename variables therein according to {{ic|netctl.profile(5)}} (Most variable names have only {{ic|UpperCamelCase}} i.e {{ic|CONNECTION}} becomes {{ic|Connection}}).
 +
* For static IP configuration make sure the {{ic|Address}} variables have a netmask after the IP (e.g. {{ic|1=Address=('192.168.1.23'''/24'''' '192.168.1.87'''/24'''')}} in the example profile).
 +
* If you setup a wireless profile according in the {{ic|wireless-wpa-configsection}} example, note that this overrides {{ic|wpa_supplicant}} options defined above the brackets. For a connection to a hidden wireless network, add {{ic|1=scan_ssid=1}} to the options in the {{ic|wireless-wpa-configsection}}; {{ic|1=Hidden=yes}} does not work there.  
 +
* Unquote interface variables and other variables that do not strictly need quoting (this is mainly a style thing).
 +
* Run {{ic|netctl enable ''profile''}} for every profile in the old {{ic|NETWORKS}} array. ''last'' does not work this way, see {{ic|netctl.special(7)}}.
 +
* Use {{ic|netctl list}} and/or {{ic|netctl start ''profile''}} instead of ''netcfg-menu''. ''wifi-menu'' remains available.
 +
* Unlike ''netcfg'', by default ''netctl'' fails to bring up a [[wikipedia:Network interface controller|NIC]] when it is not connected to another powered up NIC. To solve this problem, add {{ic|1=SkipNoCarrier=yes}} at the end of your {{ic|/etc/netctl/''profile''}}.
  
У пользователей, не желающих, чтобы их пароль хранился в открытом виде, есть возможность использовать 256-битный хеш, вычисляемый на основе пароля и SSID сети стандартными алгоритмами. Реализовать хеширование пароля можно двумя способами:
+
=== Passphrase obfuscation (256-bit PSK) ===
  
* Для генерации нужных настроек в {{ic|/etc/netctl/}} использовать {{ic|wifi-menu -o}}.
+
{{Note|Although "encrypted", the key that you put in the profile configuration is enough to connect to a WPA-PSK network. Therefore this process is only useful for hiding the human-readable version of the passphrase. This will not prevent anyone with read access to this file from connecting to the network. You should ask yourself if there is any use in this at all, since using the same passphrase for anything else is a very poor security measure.}}
* Ручная настройка, описанная ниже.
+
  
Какой бы метод вы не выбрали, для ограничения доступа к паролю следует установить нужные права на файл профиля:
+
Users '''not''' wishing to have the passphrase to their wireless network stored in ''plain text'' have the option of storing the corresponding 256-bit pre-shared key (PSK) instead, which is calculated from the passphrase and the SSID using standard algorithms.
  
# chmod 600 /etc/netctl/''имя_профиля''
+
* Method 1: Use {{ic|wifi-menu -o}} to generate a config file in {{ic|/etc/netctl/}}
 +
* Method 2: Manual settings as follows.
  
Вычислите хеш с помощью [[WPA Supplicant (Русский)#Процесс|wpa_passphrase]]:
+
For both methods it is suggested to {{ic|chmod 600 /etc/netctl/<config_file>}} to prevent user access to the password.
  
 +
Calculate your 256-bit PSK using [[WPA_supplicant#Configuration_file|wpa_passphrase]]:
 
{{hc|$ wpa_passphrase ''your_essid'' ''passphrase''|2=
 
{{hc|$ wpa_passphrase ''your_essid'' ''passphrase''|2=
 
   network={
 
   network={
Line 142: Line 145:
 
}}
 
}}
  
{{Note (Русский)|Не закрывайте терминал, эта информация будет нужна далее.}}
+
{{Note|This information will be used in your profile, so do not close the terminal.}}
  
Во втором окне терминала скопируйте файл-образец wireless-wpa из каталога {{ic|/etc/netctl/examples}} в {{ic|/etc/netctl}}:
+
In a second terminal window, copy the example file {{ic|wireless-wpa}} from {{ic|/etc/netctl/examples}} to {{ic|/etc/netctl}}:
  
 
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/wireless-wpa
 
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/wireless-wpa
  
Теперь следует отредактировать {{ic|/etc/netctl/wireless-wpa}}, добавив в переменную {{ic|Key}} ключ, сгенерированный ранее с помощью ''wpa_passphrase''.
+
You will then need to edit {{ic|/etc/netctl/wireless-wpa}} using your favorite text editor and add the ''pre-shared key'', that was generated earlier using wpa_passphrase, to the {{ic|Key}} variable of this profile.
  
В итоге профиль wireless-wpa будет выглядеть следующим образом:
+
Once completed your network profile {{ic|wireless-wpa}} containing a 256-bit PSK should resemble:
  
 
{{hc|/etc/netctl/wireless-wpa|2=
 
{{hc|/etc/netctl/wireless-wpa|2=
Line 162: Line 165:
 
}}
 
}}
  
{{Note (Русский)|
+
{{Note|
* Убедитесь, что корректно использованы специальные правила расстановки кавычек (special quoting rules) для переменной {{ic|Key}}, которые описаны в конце [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile(5)].
+
* Make sure to use the '''special quoting rules''' for the {{ic|Key}} variable as explained at the end of [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile(5)].
* Если пароль не проходит проверку, попробуйте удалить {{ic|\"}} из переменной {{ic|Key}}.}}
+
* If the passphrase fails, try removing the {{ic|\"}} in the {{ic|Key}} variable.}}
  
== Советы и рекомендации ==
+
== Tips and tricks ==
  
=== Экспериментальный графический интерфейс ===
+
=== Using an Experimental GUI ===
  
Вы можете попробовать работать с netctl используя экспериментальный графический интерфейс, доступный {{AUR|netgui}} из [[AUR (Русский)|AUR]]. Учтите, что netgui все еще находится в разработке и вам следует также быть знакомым со структурой и содержимым конфигурационных файлов netctl чтобы иметь возможность самостоятельно устранять возможные неполадки.
+
If you want a graphical user interface to manage netctl and your connections and you are not afraid of highly experimental unofficial packages you can install {{AUR|netgui}} from [[AUR]]. Note, however, that netgui is still in beta status and you should be familiar with the general netctl syntax to debug possible issues.
  
=== Установка DHCP-клиента для всех профилей ===
+
=== Set default dhcp client for all profiles ===
  
Если вы хотите установить DHCP-клиент, используемый по-умолчанию для всех профилей сетевого интерфейса, создайте исполняемый файл {{ic|/etc/netctl/interfaces/''interface_name''}} с такой строкой:
+
If you want to set a default dhcp client for all profiles on an interface, create an ''executable'' file {{ic|/etc/netctl/interfaces/<interface>}} with the following line:
  
  DHCPClient=&apos;''your_dhcp_client''&apos;
+
  DHCPClient='dhclient'
  
Где ''your_dhcp_client'' – название вашей программы-клиента, например ''dhclient'' или ''dhcpcd''.
+
=== Replace 'netcfg current' ===
  
=== Замена 'netcfg current' ===
+
If you used {{ic|netcfg current}} in the past, you can use {{ic|# netctl-auto current}} as a replacement for connections started with {{ic|netctl-auto}} (feature since netctl-1.3).
  
Если в недавнем прошлом вы использовали {{ic|netcfg current}}, то теперь можете использовать {{ic|# netctl-auto current}} в качестве замены для профилей, начинающихся с {{ic|netctl-auto}} (доступно с версии netctl 1.3).
+
To manually parse the connections, you can also use:
 
+
Чтобы получить имена всех доступных профилей, используйте команду
+
  
 
  # netctl list | awk '/*/ {print $2}'
 
  # netctl list | awk '/*/ {print $2}'
Line 190: Line 191:
 
=== Eduroam ===
 
=== Eduroam ===
  
Некоторые университеты используют систему [[Wikipedia:ru:Eduroam|Eduroam]] для управления беспроводной сетью. Для подключения к такой сети может быть полезен следующий файл конфигурации:
+
Some universities use a system called "Eduroam" to manage their wireless networks. For this system, a WPA config-section profile with the following format is often useful:
  
{{hc|/etc/netctl/wlp8s0-eduroam|<nowiki>
+
{{hc|/etc/netctl/wlan0-eduroam|<nowiki>
 
Description='Eduroam-profile for <user>'
 
Description='Eduroam-profile for <user>'
Interface=wlp8s0
+
Interface=wlan0
 
Connection=wireless
 
Connection=wireless
 
Security=wpa-configsection
 
Security=wpa-configsection
Line 200: Line 201:
 
WPAConfigSection=(
 
WPAConfigSection=(
 
  'ssid="eduroam"'
 
  'ssid="eduroam"'
  'proto=RSN'
+
  'proto=RSN WPA'
 
  'key_mgmt=WPA-EAP'
 
  'key_mgmt=WPA-EAP'
'pairwise=CCMP'
 
 
  'auth_alg=OPEN'
 
  'auth_alg=OPEN'
 
  'eap=PEAP'
 
  'eap=PEAP'
Line 210: Line 210:
 
}}
 
}}
  
{{Tip (Русский)|Чтобы избежать хранения пароля в открытом виде, вы можете сгенерировать на его основе хеш с помощью команды {{ic|$ tr -d '[:space:]' &#124; iconv -t utf16le &#124; openssl md4}}. Введите ваш пароль, нажмите enter, затем ctrl+d. Сохраните хеш как {{ic|'password&#61;hash:''your_hash'''}}.}}
+
{{Tip|To prevent storing your password as plaintext, you can generate a password hash with {{ic|$ tr -d '[:space:]' &#124; iconv -t utf16le &#124; openssl md4}}. Type your password, enter, then ctrl+d. Store the hashed password as {{ic|'password&#61;hash:<hash>'}}.}}
  
Этот пример может быть полезен в случае использования сертификатов и TTLS:
+
For TTLS and certified universities this setup works:
  
{{hc|/etc/netctl/wlp8s0-eduroam|<nowiki>
+
{{hc|/etc/netctl/wlan0-eduroam|<nowiki>
 
Description='Eduroam university'
 
Description='Eduroam university'
Interface=wlp8s0
+
Interface=wlan0
 
Connection=wireless
 
Connection=wireless
 
Security=wpa-configsection
 
Security=wpa-configsection
Line 235: Line 235:
 
}}
 
}}
  
 +
=== Bonding ===
  
=== Объединение сетевых интерфейсов (бондинг) ===
+
From [https://www.kernel.org/doc/Documentation/networking/bonding.txt kernel documentation]:
 
+
Из [https://www.kernel.org/doc/Documentation/networking/bonding.txt документации ядра Linux]:
+
  
 
:''The Linux bonding driver provides a method for aggregating multiple network interfaces into a single logical "bonded" interface. The behavior of the bonded interfaces depends on the mode. Generally speaking, modes provide either hot standby or load balancing services. Additionally, link integrity monitoring may be performed.''
 
:''The Linux bonding driver provides a method for aggregating multiple network interfaces into a single logical "bonded" interface. The behavior of the bonded interfaces depends on the mode. Generally speaking, modes provide either hot standby or load balancing services. Additionally, link integrity monitoring may be performed.''
  
перевод:
+
==== Load balancing ====
 
+
:''Объединение сетевых интерфейсов в Linux можно осуществить с помощью драйвера бондинга, он предоставляет методы для сопряжения нескольких сетевых интерфейсов в один логический. Поведение связанных интерфейсов зависит от режима. В общем случае, объединенные интерфейсы могут работать в режиме горячего резерва (для отказоустойчивости) или в режиме балансировки нагрузки.''
+
 
+
==== Балансировка нагрузки ====
+
  
Для использования бондинга с netctl потребуется пакет {{Pkg|ifenslave}}.
+
To use bonding with netctl, additional package from official repositories is required: {{Pkg|ifenslave}}.
  
Скопируйте {{ic|/etc/netctl/examples/bonding}} в {{ic|/etc/netctl/bonding}} и отредактируйте его. Например:  
+
Copy {{ic|/etc/netctl/examples/bonding}} to {{ic|/etc/netctl/bonding}} and edit it, for example:  
  
 
{{hc|/etc/netctl/bonding|2=
 
{{hc|/etc/netctl/bonding|2=
Line 256: Line 251:
 
Interface='bond0'
 
Interface='bond0'
 
Connection=bond
 
Connection=bond
BindsToInterfaces=('enp7s0' 'wlp8s0')
+
BindsToInterfaces=('eth0' 'eth1')
 
IP=dhcp
 
IP=dhcp
 
IP6=stateless}}
 
IP6=stateless}}
  
Теперь можно отменить старые настройки и установить запуск бондинга по умолчанию. Переключитесь на новый профиль:
+
Now you can disable your old configuration and set ''bonding'' to be started automatically. Switch to the new profile, for example:
  
 
  # netctl switch-to bonding
 
  # netctl switch-to bonding
  
{{Note (Русский)|По-умолчанию для двайвера бондинга используется политика цикличности (''the round-robin policy''). Что это значит, можно узнать в [https://www.kernel.org/doc/Documentation/networking/bonding.txt документации].}}
+
{{Note|This uses the round-robin policy, which is the default for the {{ic|bonding}} driver. See [https://www.kernel.org/doc/Documentation/networking/bonding.txt official documentation] for details.}}
  
{{Tip (Русский)|Чтобы проверить статус режима бондинга, выполните: {{bc|$ cat /proc/net/bonding/bond0}}.}}
+
{{Tip|To check the status and bonding mode: {{bc|$ cat /proc/net/bonding/bond0}}}}
  
==== Подключение к беспроводной сети при отказе проводной ====
+
==== Wired to wireless failover ====
  
Этот пример демонстрирует, как можно использовать бондинг, чтобы прозрачно переключиться на беспроводную сеть при разрыве проводного соединения. Предполагается, что dhcpcd запущен для работы на всех интерфейсах компьютера.
+
This example describes how to use ''bonding'' to fallback to wireless when the wired ethernet goes down. It is assumed that ''dhcpcd'' service is running for all interfaces as by default.
  
Потребуются дополнительные пакеты из официальных репозиториев: {{Pkg|ifplugd}}, {{Pkg|ifenslave}} и {{Pkg|wpa_supplicant}}.
+
You will need additional packages from the official repositories: <s>{{Pkg|ifplugd}}</s>, {{Pkg|ifenslave}} and {{Pkg|wpa_supplicant}}.
  
Сначала следует настроить драйвер бондинга для работы с {{ic|active-backup}}:
+
First configure the {{ic|bonding}} driver to use {{ic|active-backup}}:
  
 
{{hc|/etc/modprobe.d/bonding.conf|2=
 
{{hc|/etc/modprobe.d/bonding.conf|2=
 
options bonding mode=active-backup
 
options bonding mode=active-backup
 
options bonding miimon=100
 
options bonding miimon=100
options bonding primary=enp7s0
+
options bonding primary=eth0
 
options bonding max_bonds=0
 
options bonding max_bonds=0
 
}}
 
}}
  
Опция {{ic|max_bonds}} предотвращает ошибку {{ic|Interface bond0 already exists}}.
+
The {{ic|max_bonds}} option avoids the {{ic|Interface bond0 already exists}} error. {{ic|fail_over_mac<nowiki>=</nowiki>active}} setting may be added if MAC filtering is used.  
  
Далее следует настроить профиль netctl для сопряжения двух ведомых апаратных интерфейсов с ведущим bond0:
+
Next, configure a netctl profile to enslave the two hardware interfaces:
  
 
{{hc|/etc/netctl/failover|2=
 
{{hc|/etc/netctl/failover|2=
Line 291: Line 286:
 
Interface='bond0'
 
Interface='bond0'
 
Connection=bond
 
Connection=bond
BindsToInterfaces=('enp7s0' 'wlp8s0')
+
BindsToInterfaces=('eth0' 'wlan0')
IP='no'
+
IP='dhcp'
 
SkipNoCarrier='no'
 
SkipNoCarrier='no'
 
}}
 
}}
  
Активируйте профиль [[systemd|systemd (Русский)]]:
+
Enable the profile on startup.
  
 
  # netctl enable failover
 
  # netctl enable failover
  
Настройте ''wpa_supplicant'' для подключения к беспроводной сети. Это можно сделать с помощью профиля netctl (не забудьте использовать опцию {{ic|1=IP='no'}}), настроить wpa_supplicant в режиме постоянной работы, либо работы по-требованию с помощью ''wpa_cli''. Способы того, как это сделать описаны на странице [[WPA Supplicant (Русский)]]. Чтобы запустить wpa_supplicant в режиме непрерывной работы создайте файл конфигурации {{ic|/etc/wpa_supplicant/wpa_supplicant-wlp8s0.conf}} и затем выполните:
+
Configure ''wpa_supplicant'' to associate with known networks. This can be done with a netctl profile (remember to use {{ic|1=IP='no'}}) and a ''wpa_supplicant'' service running constantly, or on-demand with ''wpa_cli''. Ways to do this are covered on the [[wpa_supplicant]] page. To run ''wpa_supplicant'' constantly create ''wpa_supplicant'' config file {{ic|/etc/wpa_supplicant/wpa_supplicant-wlan0.conf}} and then run:
# systemctl enable wpa_supplicant@wlp8s0
+
  
Задайте {{ic|1=IP='no'}} в профиле проводной сети. IP-адрес должен быть присвоен только интерфейсу {{ic|bond0}}.
+
# systemctl enable wpa_supplicant@wlan0
  
Если у вас и беспроводное и проводное подключение принадлежат одной и той же сети, скорее всего, вы сможете отключать/перезапускать проводное подключение без разрыва соединения. В большинстве случаев, даже поточная передача музыки не будет прервана.
+
Set {{ic|1=IP='no'}} in wired network profile. IP address should be assigned to ''bond0'' interface only.
  
=== Использование любого сетевого интерфейса ===
+
If you have a wired and wireless connection to the same network, you can probably now disconnect and reconnect the wired connection without losing connectivity. In most cases, even streaming music will not skip!
  
В некоторых случаях может быть желательно, чтобы профиль мог использовать любой доступный сетевой интерфейс. Например, вы администрируете несколько компьютеров различной конфигурации, и для каждого используете одинаковый образ системного диска, чтобы избежать переустановки системы на каждом конкретном компьютере (особенно это удобно, если компьютеры не имеют своих устройств ввода/вывода). Если вы используете стандартную схему именования сетевых интерфейсов, и у компьютера только единственный сетевой адаптер, вы можете смело предположить, что eth0 — правильное имя интерфейса. Однако, если вы используете новую [http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames схему именования] udev, устройствам будут присвоены имена, зависящие от их физического подключения на плате (например, enp1s0). Это значит, что профиль netctl содержащий точное название интерфейса, может работать на одном комьютере, и не работать на другом, в котором сетевое устройство названо иначе.
+
=== Using any interface ===
 
+
In some cases it may be desirable to allow a profile to use any interface on the system. A common example use case is using a common disk image across many machines with differing hardware (this is especially useful if they are headless). If you use the kernel's naming scheme, and your machine has only one ethernet interface, you can probably guess that eth0 is the right interface. If you use udev's [http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/ Predictable Network Interface Names], however, names will be assigned based on the specific hardware itself (e.g. enp1s0), rather than simply the order that the hardware was detected (e.g. eth0, eth1). This means that a netctl profile may work on one machine and not another, because they each have different interface names.
Быстрое и «грязное» решение заключается в использовании каталога {{ic|/etc/netctl/interfaces/}}. Выберите псевдоним (alias) для сетевого интерфейса ({{ic|en-any}} в этом примере), и создайте следующий файл:
+
  
 +
A quick and dirty solution is to make use of the {{ic|/etc/netctl/interfaces/}} directory. Choose a name for your interface alias ({{ic|en-any}} in this example), and write the following to a file with that name (making sure it is executable).
 
{{hc|/etc/netctl/interfaces/en-any|<nowiki>
 
{{hc|/etc/netctl/interfaces/en-any|<nowiki>
 
#!/bin/bash
 
#!/bin/bash
Line 321: Line 315:
 
echo "en-any: using interface $Interface";
 
echo "en-any: using interface $Interface";
 
</nowiki>}}
 
</nowiki>}}
 
+
Then create a profile that uses the interface. Pay special attention to the {{ic|Interfaces}} directive. The rest are only provided as examples.
Не забудьте дать файлу права на выполнение.
+
 
+
Теперь создайте профиль, который будет использовать этот интерфейс. Укажите псевдоним интерфейса в параметре {{ic|Interface}}. Пример:
+
 
+
 
{{hc|/etc/netctl/wired|<nowiki>
 
{{hc|/etc/netctl/wired|<nowiki>
 
Description='Wired'
 
Description='Wired'
Line 336: Line 326:
 
</nowiki>}}
 
</nowiki>}}
  
Теперь, когда профиль {{ic|wired}} будет запущен, любой компьютер использующий эти файлы конфигурации автоматически установит соединение, используя сетевой интерфейс, найденный первым при загрузке системы, в не зависимости от того, какое ему имя даст udev. Учтите, что это не самый надежный способ: если в компьютере несколько интерфейсов, netctl может попытаться присвоить им одинаковое имя, что приведет к неработоспособности соединения. Использование ''netctl-auto'' может стать несколько более надежным решением.
+
When the {{ic|wired}} profile is started, any machine using the two files above will automatically bring up and configure the first ethernet interface found on the system, regardless of what name udev assigned to it. Note that this is not the most robust way to go about configuring interfaces. If you use multiple interfaces, netctl may try to assign the same interface to them, and will likely cause a disruption in connectivity. If you do not mind a more complicated solution, {{ic|netctl-auto}} is likely to be more reliable.
  
== Решение проблем ==
+
== Troubleshooting ==
  
=== Job for netctl@XXX.service failed ===
+
=== Job for netctl@wlan(...).service failed ===
 
+
Some people have an issue when they connect to a network with netctl, e.g.
Иногда возникают проблемы с подключением к беспроводной сети с использованием netctl, сопровождаемые следующим сообщением:
+
{{hc|# netctl start wlan0-ssid|<nowiki>
{{hc|# netctl start wlp8s0-ssid|<nowiki>
+
Job for netctl@wlan0\x2ssid.service failed. See 'systemctl status netctl@wlan0\x2ssid.service' and 'journalctl -xn' for details.
Job for netctl@wlp8s0\x2ssid.service failed. See 'systemctl status netctl@wlp8s0\x2ssid.service' and 'journalctl -xn' for details.
+
 
</nowiki>}}
 
</nowiki>}}
 +
When then looking at journalctl -xn, either of the following are shown:
  
При этом, если сетевой интерфейс (в нашем примере wlp8s0) уже был запущен, в выводе {{ic|journalctl -xn}} наблюдается следующее:
+
If your device (wlan0 in this case) is up:
 
+
  network[2322]: The interface of network profile 'wlan0-ssid' is already up
  network[2322]: The interface of network profile 'wlp8s0-ssid' is already up
+
If it is down:
 
+
  dhcpcd[261]: wlan0: ipv4_sendrawpacket: Network is down
А если сетевой интерфейс был остановлен, то:
+
 
+
  dhcpcd[261]: wlp8s0: ipv4_sendrawpacket: Network is down
+
 
+
Один из способов это исправить — использовать другой DHCP-клиент, и позволить профилю использовать его. Пример с dhclient:
+
  
 +
One way to solve this is to use a different dhcp-client, and getting your netctl profile to use it.
 
  # pacman -S dhclient
 
  # pacman -S dhclient
  # nano /etc/netctl/wlp8s0-ssid
+
  # vim /etc/netctl/wlan0-ssid
  
{{hc|/etc/netctl/wlp8s0-ssid|<nowiki>
+
{{hc|/etc/netctl/wlan0-ssid|<nowiki>
 
...
 
...
 
DHCPClient='dhclient'
 
DHCPClient='dhclient'
 
</nowiki>}}
 
</nowiki>}}
  
Добавление опции {{ic|1=ForceConnect=yes}} также может помочь:
+
Save it and try to connect with the profile:
 
+
  # netctl start wlan0-ssid
{{hc|/etc/netctl/wlp8s0-ssid|<nowiki>
+
Now it should work!
...
+
ForceConnect=yes
+
</nowiki>}}
+
 
+
Проверка:
+
 
+
  # netctl start wlp8s0-ssid
+
 
+
Теперь все должно заработать.
+
  
 
=== dhcpcd: ipv4_addroute: File exists ===
 
=== dhcpcd: ipv4_addroute: File exists ===
  
Иногда использование ''dhcpcd'' с netctl вызывает проблемы с переподключением: netctl сообщает об успешном подключении, но вы все еще получаете ошибки тайм-аута при соединении. В этом случае, прежний маршрут по-умолчанию (default route) все еще остается в системе и не обновляется. Решение состоит в том, чтобы использовать [[#Установка DHCP-клиента для всех профилей|dhclient]] в качестве DHCP-клиента. Больше информации о проблеме вы сможете найти [https://bbs.archlinux.org/viewtopic.php?pid=1399842#p1399842 здесь (англ.)].
+
On some systems dhcpcd in combination with netctl causes timeout issues on resume, particularly when having swichted networks in the meantime. netctl will report that you are successfully connected but you still receive timeout issues. In this case, the old default route still exists and is not being renewed. A workaround to avoid this misbehaviour is to switch to [[#Set default dhcp client for all profiles|dhclient]] as the default dhcp client. More information on the issue can be found [https://bbs.archlinux.org/viewtopic.php?pid=1399842#p1399842 here].
  
=== Таймаут при DHCP-подключении ===
+
=== DHCP timeout issues ===
  
Если вы получаете сообщения о тайм-ауте при попытке подключения через DHCP, вы можете увеличить время таймаута, используя значение выше 30 секунд, установленных в netctl по-умолчанию. Создайте файл в каталоге {{ic|/etc/netctl/hooks/}} или {{ic|/etc/netctl/interfaces/}}, добавьте в него строку {{ic|1=TimeoutDHCP=40}}, где 40 — время тайм-аута. Не забудьте выдать файлу права на запуск.
+
If you are having timeout issues when requesting leases via DHCP you can set the timeout value higher than netctl's 30 seconds by default. Create a file in {{ic|/etc/netctl/hooks/}} or {{ic|/etc/netctl/interfaces/}}, add {{ic|1=TimeoutDHCP=40}} to it for a timeout of 40 seconds and make the file executable.
  
=== Тайм-аут соединения ===
+
=== Connection timeout issues ===
  
При проблемах с тайм-аутом, не связанных с DHCP (например, если у вас статический IP), если наблюдаемые ошибки похожи на следующие при запуске профиля:
+
If you are having timeout issues that are unrelated to DHCP (on a static ethernet connection for example), and are experiencing errors similar to the following when starting your profile:
 
+
{{hc|# journalctl _SYSTEMD_UNIT&#61;netctl@''profile''.service|
{{hc|# journalctl _SYSTEMD_UNIT&#61;netctl@''имя_профиля''.service|
+
 
Starting network profile &#39;''profile''&#39;...
 
Starting network profile &#39;''profile''&#39;...
No connection found on interface 'enp4s0' (timeout)
+
No connection found on interface 'eth0' (timeout)
 
Failed to bring the network up for profile &#39;''profile''&#39;
 
Failed to bring the network up for profile &#39;''profile''&#39;
 
}}
 
}}
 
+
Then you should increase carrier and up timeouts by adding {{ic|1=TimeoutUp=}} and {{ic|1=TimeoutCarrier=}} to your profile file:
Попробуйте увеличить значения тайм-аутов соединения в вашем файле профиля:
+
{{hc|/etc/netctl/''profile''|<nowiki>
{{hc|/etc/netctl/''имя_профиля''|<nowiki>
+
 
...
 
...
 
TimeoutUp=300
 
TimeoutUp=300
 
TimeoutCarrier=300</nowiki>
 
TimeoutCarrier=300</nowiki>
 
}}
 
}}
Не забудьте заново активировать ваш профиль:
+
Do not forget to reenable your profile:
  
  # netctl reenable ''имя_профиля''
+
  # netctl reenable ''profile''
  
== Смотрите также ==
+
== See also ==
  
* [https://bbs.archlinux.org/viewtopic.php?id=157670 Анонс и официальная страница обсуждения]
+
* [https://bbs.archlinux.org/viewtopic.php?id=157670 Official announcement thread]
* Апплет для Cinnamon в {{AUR|cinnamon-applet-netctl-systray-menu}}
+
* There is a cinnamon applet available in the AUR: {{AUR|cinnamon-applet-netctl-systray-menu}}

Revision as of 20:34, 17 July 2014

netctl is a CLI-based tool used to configure and manage network connections via profiles. It is a native Arch Linux project that replaces the old netcfg utility.

Installation

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Optional dependencies should be mentioned. (Discuss in Talk:Netctl#)

The netctl package is available in the official repositories. Installing netctl will replace netcfgAUR.

netctl and netcfgAUR are conflicting packages. You will be potentially connectionless after installing netctl if your profiles are misconfigured.

Note: It may be a good idea to use systemctl --type=service to ensure that no other service is running that may want to configure the network. Multiple networking services will conflict.

Required reading

It is advisable to read the following man pages before using netctl:

Configuration

netctl uses profiles to manage network connections, profile files are stored in /etc/netctl/. Example configuration files are provided for the user to assist them in configuring their network connection. These example profiles are located in /etc/netctl/examples/. The common configurations include:

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

To use an example profile, simply copy one of them from /etc/netctl/examples/ to /etc/netctl/ and configure it to your needs:

# cp /etc/netctl/examples/wireless-wpa /etc/netctl/profile
Note: You will most probably need to edit the interface name in the profile. As of v197, udev no longer assigns network interface names according to the wlanX and ethX naming scheme. Please do not assume that your wireless interface is named wlan0, or that your wired interface is named eth0, as used in examples on this page. You can use the command ip link to discover the names of your interfaces. See Network configuration#Device names for details.
Tip: For wireless settings, you can use wifi-menu -o to generate the profile file in /etc/netctl/.

Once you have created your profile, make an attempt to establish a connection using the newly created profile by running:

# netctl start profile
Note: profile is the file name, not including the full path. Providing the full path will make netctl exit with an error code.

If issuing the above command results in a failure, then use journalctl -xn and netctl status profile in order to obtain a more in depth explanation of the failure. Make the needed corrections to the failed configuration and retest.

Automatic operation

If you use only one profile (per interface) or want to switch profiles manually, the Basic method will do. Most common examples are servers, workstations, routers etc.

If you need to switch multiple profiles frequently, use Automatic switching of profiles. Most common examples are laptops.

Basic method

With this method, you can statically start only one profile per interface. First manually check that the profile can be started successfully, then it can be enabled using

# netctl enable profile

This will create and enable a systemd service that will start when the computer boots. Changes to the profile file will not propagate to the service file automatically. After such changes, it is necessary to reenable the profile:

# netctl reenable profile
Note: The connection is only established if the profile can be started succesfully at boot time (or when the service starts). That specifically means, in case of wired connection the cable must be plugged-in, in case of wireless connection the network must be in range.
Tip: To enable static IP profile on wired interface no matter if the cable is connected or not, use SkipNoCarrier=yes in your profile.

Automatic switching of profiles

netctl provides two special systemd services for automatic switching of profiles:

  • For wired interfaces: netctl-ifplugd@interface.service. Using this netctl profiles change as you plug the cable in and out.
  • For wireless interfaces: netctl-auto@interface.service. Using this netctl profiles change as you move from range of one network into range of other network.
Note: netcfg used net-auto-wireless.service and net-auto-wired.service for this purpose.

First install required packages:

  • Package ifplugd is required to use netctl-ifplugd@interface.service.
  • Package wpa_actiond is required to use netctl-auto@interface.service.

Now configure all profiles that netctl-auto@interface.service or netctl-ifplugd@interface.service can start.

If you want some wireless profile not to be started automatically by netctl-auto@interface.service, you have to explicitly add ExcludeAuto=yes to that profile. You can use Priority= in the WPAConfigSection (see /etc/netctl/examples/wireless-wpa-configsection) to set priority of some profile when multiple profiles are available. netctl-ifplugd@interface.service will prefer profiles, which use DHCP. To prefer a profile with a static IP, you can use AutoWired=yes. See netctl.profile(5) for details.

Warning: Automatic selection of a WPA-enabled profile by netctl-auto is not possible with option Security=wpa-config, please use Security=wpa-configsection instead.

Once your profiles are set and verified to be working, simply enable these services using systemctl:

# systemctl enable netctl-auto@interface.service 
# systemctl enable netctl-ifplugd@interface.service  
Warning:
  • If any of the profiles contain errors, such as an empty or misquoted Key= variable, the unit will fail to load with the message "Failed to read or parse configuration '/run/network/wpa_supplicant_wlan0.conf', even when that profile is not being used.
  • This method conflicts with the Basic method. If you have previously enabled a profile through netctl, run netctl disable profile to prevent the profile from starting twice at boot.

Since netctl 1.3, it possible to manually control an interface otherwise managed by netctl-auto without having to stop the netctl-auto service. This is done using the netctl-auto command. To have a list of available actions just run:

 # netctl-auto --help

Migrating from netcfg

netctl uses /etc/netctl/ to store its profiles, not /etc/network.d/ (used by netcfg).

In order to migrate from netcfg, at least the following is needed:

  • Disable the netcfg service: systemctl disable netcfg.service.
  • Uninstall netcfg and install netctl.
  • Move network profile files to the new directory.
  • Rename variables therein according to netctl.profile(5) (Most variable names have only UpperCamelCase i.e CONNECTION becomes Connection).
  • For static IP configuration make sure the Address variables have a netmask after the IP (e.g. Address=('192.168.1.23/24' '192.168.1.87/24') in the example profile).
  • If you setup a wireless profile according in the wireless-wpa-configsection example, note that this overrides wpa_supplicant options defined above the brackets. For a connection to a hidden wireless network, add scan_ssid=1 to the options in the wireless-wpa-configsection; Hidden=yes does not work there.
  • Unquote interface variables and other variables that do not strictly need quoting (this is mainly a style thing).
  • Run netctl enable profile for every profile in the old NETWORKS array. last does not work this way, see netctl.special(7).
  • Use netctl list and/or netctl start profile instead of netcfg-menu. wifi-menu remains available.
  • Unlike netcfg, by default netctl fails to bring up a NIC when it is not connected to another powered up NIC. To solve this problem, add SkipNoCarrier=yes at the end of your /etc/netctl/profile.

Passphrase obfuscation (256-bit PSK)

Note: Although "encrypted", the key that you put in the profile configuration is enough to connect to a WPA-PSK network. Therefore this process is only useful for hiding the human-readable version of the passphrase. This will not prevent anyone with read access to this file from connecting to the network. You should ask yourself if there is any use in this at all, since using the same passphrase for anything else is a very poor security measure.

Users not wishing to have the passphrase to their wireless network stored in plain text have the option of storing the corresponding 256-bit pre-shared key (PSK) instead, which is calculated from the passphrase and the SSID using standard algorithms.

  • Method 1: Use wifi-menu -o to generate a config file in /etc/netctl/
  • Method 2: Manual settings as follows.

For both methods it is suggested to chmod 600 /etc/netctl/<config_file> to prevent user access to the password.

Calculate your 256-bit PSK using wpa_passphrase:

$ wpa_passphrase your_essid passphrase
network={
  ssid="your_essid"
  #psk="passphrase"
  psk=64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
}
Note: This information will be used in your profile, so do not close the terminal.

In a second terminal window, copy the example file wireless-wpa from /etc/netctl/examples to /etc/netctl:

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

You will then need to edit /etc/netctl/wireless-wpa using your favorite text editor and add the pre-shared key, that was generated earlier using wpa_passphrase, to the Key variable of this profile.

Once completed your network profile wireless-wpa containing a 256-bit PSK should resemble:

/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:
  • Make sure to use the special quoting rules for the Key variable as explained at the end of netctl.profile(5).
  • If the passphrase fails, try removing the \" in the Key variable.

Tips and tricks

Using an Experimental GUI

If you want a graphical user interface to manage netctl and your connections and you are not afraid of highly experimental unofficial packages you can install netguiAUR from AUR. Note, however, that netgui is still in beta status and you should be familiar with the general netctl syntax to debug possible issues.

Set default dhcp client for all profiles

If you want to set a default dhcp client for all profiles on an interface, create an executable file /etc/netctl/interfaces/<interface> with the following line:

DHCPClient='dhclient'

Replace 'netcfg current'

If you used netcfg current in the past, you can use # netctl-auto current as a replacement for connections started with netctl-auto (feature since netctl-1.3).

To manually parse the connections, you can also use:

# netctl list | awk '/*/ {print $2}'

Eduroam

Some universities use a system called "Eduroam" to manage their wireless networks. For this system, a WPA config-section profile with the following format is often useful:

/etc/netctl/wlan0-eduroam
Description='Eduroam-profile for <user>'
Interface=wlan0
Connection=wireless
Security=wpa-configsection
IP=dhcp
WPAConfigSection=(
 'ssid="eduroam"'
 'proto=RSN WPA'
 'key_mgmt=WPA-EAP'
 'auth_alg=OPEN'
 'eap=PEAP'
 'identity="<user>"'
 'password="<password>"'
)
Tip: To prevent storing your password as plaintext, you can generate a password hash with $ tr -d '[:space:]' | iconv -t utf16le | openssl md4. Type your password, enter, then ctrl+d. Store the hashed password as 'password=hash:<hash>'.

For TTLS and certified universities this setup works:

/etc/netctl/wlan0-eduroam
Description='Eduroam university'
Interface=wlan0 
Connection=wireless
Security=wpa-configsection
IP=dhcp
ESSID=eduroam
WPAConfigSection=(
    'ssid="eduroam"'
    'proto=RSN WPA'
    'key_mgmt=WPA-EAP'
    'eap=TTLS'
    'anonymous_identity="anonymous@domain_university"'
    'identity="XXX@domain_university"'
    'password="XXX"'
    'ca_path="/etc/ssl/certs/"'
    'ca_path2="/etc/ssl/certs/"'
    'phase2="auth=PAP"'
)

Bonding

From kernel documentation:

The Linux bonding driver provides a method for aggregating multiple network interfaces into a single logical "bonded" interface. The behavior of the bonded interfaces depends on the mode. Generally speaking, modes provide either hot standby or load balancing services. Additionally, link integrity monitoring may be performed.

Load balancing

To use bonding with netctl, additional package from official repositories is required: ifenslave.

Copy /etc/netctl/examples/bonding to /etc/netctl/bonding and edit it, for example:

/etc/netctl/bonding
Description='Bond Interface'
Interface='bond0'
Connection=bond
BindsToInterfaces=('eth0' 'eth1')
IP=dhcp
IP6=stateless

Now you can disable your old configuration and set bonding to be started automatically. Switch to the new profile, for example:

# netctl switch-to bonding
Note: This uses the round-robin policy, which is the default for the bonding driver. See official documentation for details.
Tip: To check the status and bonding mode:
$ cat /proc/net/bonding/bond0

Wired to wireless failover

This example describes how to use bonding to fallback to wireless when the wired ethernet goes down. It is assumed that dhcpcd service is running for all interfaces as by default.

You will need additional packages from the official repositories: ifplugd, ifenslave and wpa_supplicant.

First configure the bonding driver to use active-backup:

/etc/modprobe.d/bonding.conf
options bonding mode=active-backup
options bonding miimon=100
options bonding primary=eth0
options bonding max_bonds=0

The max_bonds option avoids the Interface bond0 already exists error. fail_over_mac=active setting may be added if MAC filtering is used.

Next, configure a netctl profile to enslave the two hardware interfaces:

/etc/netctl/failover
Description='A wired connection with failover to wireless'
Interface='bond0'
Connection=bond
BindsToInterfaces=('eth0' 'wlan0')
IP='dhcp'
SkipNoCarrier='no'

Enable the profile on startup.

# netctl enable failover

Configure wpa_supplicant to associate with known networks. This can be done with a netctl profile (remember to use IP='no') and a wpa_supplicant service running constantly, or on-demand with wpa_cli. Ways to do this are covered on the wpa_supplicant page. To run wpa_supplicant constantly create wpa_supplicant config file /etc/wpa_supplicant/wpa_supplicant-wlan0.conf and then run:

# systemctl enable wpa_supplicant@wlan0

Set IP='no' in wired network profile. IP address should be assigned to bond0 interface only.

If you have a wired and wireless connection to the same network, you can probably now disconnect and reconnect the wired connection without losing connectivity. In most cases, even streaming music will not skip!

Using any interface

In some cases it may be desirable to allow a profile to use any interface on the system. A common example use case is using a common disk image across many machines with differing hardware (this is especially useful if they are headless). If you use the kernel's naming scheme, and your machine has only one ethernet interface, you can probably guess that eth0 is the right interface. If you use udev's Predictable Network Interface Names, however, names will be assigned based on the specific hardware itself (e.g. enp1s0), rather than simply the order that the hardware was detected (e.g. eth0, eth1). This means that a netctl profile may work on one machine and not another, because they each have different interface names.

A quick and dirty solution is to make use of the /etc/netctl/interfaces/ directory. Choose a name for your interface alias (en-any in this example), and write the following to a file with that name (making sure it is executable).

/etc/netctl/interfaces/en-any
#!/bin/bash
for interface in /sys/class/net/en*; do
        break;
done
Interface=$(basename $interface)
echo "en-any: using interface $Interface";

Then create a profile that uses the interface. Pay special attention to the Interfaces directive. The rest are only provided as examples.

/etc/netctl/wired
Description='Wired'
Interface=en-any
Connection=ethernet
IP=static
Address=('192.168.1.15/24')
Gateway='192.168.1.1'
DNS=('192.168.1.1')

When the wired profile is started, any machine using the two files above will automatically bring up and configure the first ethernet interface found on the system, regardless of what name udev assigned to it. Note that this is not the most robust way to go about configuring interfaces. If you use multiple interfaces, netctl may try to assign the same interface to them, and will likely cause a disruption in connectivity. If you do not mind a more complicated solution, netctl-auto is likely to be more reliable.

Troubleshooting

Job for netctl@wlan(...).service failed

Some people have an issue when they connect to a network with netctl, e.g.

# netctl start wlan0-ssid
Job for netctl@wlan0\x2ssid.service failed. See 'systemctl status netctl@wlan0\x2ssid.service' and 'journalctl -xn' for details.

When then looking at journalctl -xn, either of the following are shown:

If your device (wlan0 in this case) is up:

network[2322]: The interface of network profile 'wlan0-ssid' is already up

If it is down:

dhcpcd[261]: wlan0: ipv4_sendrawpacket: Network is down

One way to solve this is to use a different dhcp-client, and getting your netctl profile to use it.

# pacman -S dhclient
# vim /etc/netctl/wlan0-ssid
/etc/netctl/wlan0-ssid
...
DHCPClient='dhclient'

Save it and try to connect with the profile:

# netctl start wlan0-ssid

Now it should work!

dhcpcd: ipv4_addroute: File exists

On some systems dhcpcd in combination with netctl causes timeout issues on resume, particularly when having swichted networks in the meantime. netctl will report that you are successfully connected but you still receive timeout issues. In this case, the old default route still exists and is not being renewed. A workaround to avoid this misbehaviour is to switch to dhclient as the default dhcp client. More information on the issue can be found here.

DHCP timeout issues

If you are having timeout issues when requesting leases via DHCP you can set the timeout value higher than netctl's 30 seconds by default. Create a file in /etc/netctl/hooks/ or /etc/netctl/interfaces/, add TimeoutDHCP=40 to it for a timeout of 40 seconds and make the file executable.

Connection timeout issues

If you are having timeout issues that are unrelated to DHCP (on a static ethernet connection for example), and are experiencing errors similar to the following when starting your profile:

# journalctl _SYSTEMD_UNIT=netctl@profile.service
Starting network profile 'profile'...
No connection found on interface 'eth0' (timeout)
Failed to bring the network up for profile 'profile'

Then you should increase carrier and up timeouts by adding TimeoutUp= and TimeoutCarrier= to your profile file:

/etc/netctl/profile
...
TimeoutUp=300
TimeoutCarrier=300

Do not forget to reenable your profile:

# netctl reenable profile

See also