Difference between revisions of "Netctl (Русский)"

From ArchWiki
Jump to: navigation, search
m (Установка)
(в->ф)
(31 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
{{Lowercase title}}
 
{{Lowercase title}}
 +
[[Category:Русский]]
 
[[Category:Networking (Русский)]]
 
[[Category:Networking (Русский)]]
[[fr:Netctl]]
+
[[cs:Netctl]]
[[en:Netctl]]
+
 
[[es:Netctl]]
 
[[es:Netctl]]
 +
[[fr:Netctl]]
 +
[[ja:Netctl]]
 +
[[ru:Netctl]]
 
[[zh-CN:Netctl]]
 
[[zh-CN:Netctl]]
 
{{Article summary start}}
 
{{Article summary start}}
Line 14: Line 17:
 
==Установка==
 
==Установка==
 
Пакет {{Pkg|netctl}} доступен в [[Official Repositories_(Русский)|официальном репозитории]]. Установка netctl заменит {{pkg|netcfg}}.
 
Пакет {{Pkg|netctl}} доступен в [[Official Repositories_(Русский)|официальном репозитории]]. Установка netctl заменит {{pkg|netcfg}}.
 +
 +
{{Pkg|netctl}} и {{Pkg|netcfg}} - конфликтующие пакеты. Есть вероятность потери соединения после установки {{Pkg|netctl}}, если ваши профили некорректно настроены.
 +
 +
{{Note|Чтобы убедиться, что ''не'' запущены другие сервисы по настройке сети, стоит выполнить {{ic|1=systemctl --type=service}}. Различные сетевые сервисы будут конфликтовать}}
  
 
==Обязательно к прочтению==
 
==Обязательно к прочтению==
Для netctl доступны качественные man-страницы. Пользователям следует прочитать следующие man-страницы, прежде чем начать использовать netctl:
+
Перед началом использования netctl желательно прочитать следующие страницы:
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.1.txt 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.profile.5.txt netctl.profile]
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.special.7.txt netctl.special]
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.special.7.txt netctl.special]
 
{{Pkg|netctl}} и {{Pkg|netcfg}} - конфликтующие пакеты. Есть вероятность потери соединения после установки {{Pkg|netctl}}, ЕСЛИ ваши профили некорректно настроены.
 
  
 
==Настройка==
 
==Настройка==
  
{{ic|netctl}} можно использовать для анализа и контроля за состоянием сервисов Systemd для менеджера сетевого профиля. Пользователи могут обратиться к примерам файлов конфигурации сетевых подключений. Примеры профилей расположены в {{ic|/etc/netctl/examples/}}. В общую конфигурацию включены:
+
Для управления сетевыми соединениями {{ic|netctl}} использует профили, которые расположены в {{ic|/etc/netctl/}}. Примеры профилей расположены в {{ic|/etc/netctl/examples/}}. В общую конфигурацию включены:
  
 
*ethernet-dhcp
 
*ethernet-dhcp
Line 33: Line 38:
  
 
Чтобы использовать пример конфигурации просто скопируйте один из них из {{ic|/etc/netctl/examples/}} в {{ic|/etc/netctl/}} и отредактируйте необходимым образом:
 
Чтобы использовать пример конфигурации просто скопируйте один из них из {{ic|/etc/netctl/examples/}} в {{ic|/etc/netctl/}} и отредактируйте необходимым образом:
 +
 
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/
 
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/
  
Как только вы создали профиль, сделайте попытку установить соединение используя вновь созданный профиль, выполнив:
+
{{Tip|Для создания профиля беспроводного соединения в {{ic|/etc/netctl/}} можно выполнить {{ic|wifi-menu -o}}.}}
# netctl start <profile>
+
  
Если результат выполнения команды говорит о неудаче, выполните {{ic|journalctl -xn}} и {{ic|netctl status <profile>}} для более глубокого анализа причин неудачи. Выполните необходимую корректировку конфигурации и повторите попытку.
+
Как только вы создали профиль, попробуйте установить соединение:
  
===Автоматические операции===
+
  # netctl start ''profile''
====Один профиль====
+
Если используется только один профиль, вы можете сделать его подключение автоматическим. После успешного запуска профиля выполните:
+
  # netctl enable <profile>
+
Эта команда создаст и активирует сервис [[systemd]], который будет автоматически запускать профиль при загрузке компьютера.
+
  
{{Note|Соединение с dhcp-сервером устанавливается только если интерфейс подсоединен и запущен во время загрузки (или когда запускается сервис). Чтобы настроить автоматическое подключение, установленное на проводном соединении, смотрите [[#Несколько профилей]].}}
+
{{Note|Здесь ''profile'' - это имя файла профиля, и указание полного пути к файлу приведет к ошибке}}
  
====Несколько профилей====
+
Если результат выполнения команды говорит о неудаче, выполните {{ic|journalctl -xn}} и {{ic|netctl status ''profile''}} для выяснения причин. Выполните необходимую корректировку конфигурации и повторите попытку.
В то время как {{ic|netcfg}} использовал {{ic|net-auto-wireless.service}} и {{ic|net-auto-wired.service}}, {{ic|netctl}} использует {{ic|netctl-auto@<interface>.service}} для беспроводных соединений и {{ic|netctl-ifplugd@<interface>.service}} для проводных соединений. Для того, чтобы {{ic|netctl-auto@<interface>.service}} работал с беспроводными соединениями необходимо установить пакет {{pkg|wpa_actiond}}. Для того, чтобы {{ic|netctl-ifplugd@<interface>.service}} работал с проводными соединениями необходимо установить пакет {{pkg|ifplugd}}. Настройте {{ic|/etc/ifplugd/ifplugd.conf}} соответствующим образом.
+
  
После того как ваши профили установлены и, судя по всему, работают, просто активируйте соответствующие сервисы, выполнив:
+
===Автоматизация===
# systemctl enable netctl-auto@<interface>.service
+
# systemctl enable netctl-ifplugd@<interface>.service
+
{{Note|Если какой-либо из профилей содержит ошибку, например пустую переменную {{ic|Key&#61;}}, соответствующий юнит не активируется при загрузке.}}
+
  
Если у вас уже есть профиль, активированный через {{ic|netctl}}, выполните
+
Если используется только один профиль на один интерфес или вы хотите переключать профили вручную, то подойдет [[#Основной метод|Основной метод]] - пользователям серверов, рабочих станций, роутеров и прочего.
# netctl disable <profile>
+
чтобы предотвратить двойное включение профиля при загрузке и возможные неполадки с wpa_supplicant.
+
  
{{Note|Если необходимо изменить уже существующий профиль, выполните {{ic|netctl reenable <profile>}}, чтобы применить изменения.}}
+
Если требуется часто переключаться между многими профилями, используйте [[#Автоматическое переключение профилей|Автоматическое переключение профилей]] - будет полезно пользователям ноутбуков.
 +
 
 +
====Основной метод====
 +
Этим методом можно запустить только один профиль на интерфейс. Сначала проверьте, может ли профиль быть запущен:
 +
 
 +
# netctl enable ''profile''
 +
 
 +
Эта команда создаст и активирует [[systemd]]-сервис, который будет автоматически запускать профиль при загрузке.
 +
 
 +
{{Note|Соединение будет установлено только в том случае, если профиль запускается во время загрузки системы (или запуска сервиса). Это значит, что во время загрузки сетевой кабель должен быть подключен, а беспроводная сеть доступна}}
 +
 
 +
{{Tip|Чтобы запустить профиль со статическим IP на проводном интерфейсе независимо от того, подключен кабель или нет, добавьте {{ic|1=SkipNoCarrier=yes}} в файл профиля}}
 +
 
 +
====Автоматическое переключение профилей====
 +
 
 +
Для автоматического переключения профилей ''netcl'' предоставляет два специальных systemd-сервиса:
 +
 
 +
* Для проводных соединений: {{ic|netctl-ifplugd@''interface''.service}}. Профиль измненятся при отключении и подключении кабеля.
 +
* Для беспроводных соединений: {{ic|netctl-auto@''interface''.service}}. Порфиль изменятся при переходе из диапазона одной сети в диапазон другой.
 +
 
 +
Сначала [[pacman_(Русский)|установите]] необходимые пакеты:
 +
 
 +
* Пакет {{Pkg|wpa_actiond}} требуется сервисом {{ic|netctl-auto@''interface''.service}}
 +
* Пакет {{Pkg|ifplugd}} требуется сервисом {{ic|netctl-ifplugd@''interface''.service}}
 +
 
 +
{{Note|''netcfg'' использовал {{ic|net-auto-wireless.service}} и {{|net-auto-wired.service}} для этих целей.}}
 +
 
 +
Теперь отредактируйте все профили, которые {{ic|netctl-auto@''interface''.service}} и {{ic|netctl-ifplugd@''interface''.service}} должны будут запускать.
 +
 
 +
Если вы хотите, чтобы какой-то из беспрводных профилей '''не''' запускался автоматически сервисом {{ic|netctl-auto@''interface''.service}}, то это можно явно указать в файле профиля, добавив в него {{ic|1=ExcludeAuto=yes}}.
 +
 
 +
Приоритет запуска профиля можно установить с помощью {{ic|1=Priority=}}. {{ic|netctl-ifplugd@''interface''.service}} первым предпочтет профиль, который использует [http://ru.wikipedia.org/wiki/DHCP DHCP]. Для того, чтобы сначала был запущен профиль, использующий статический IP, можно использовать {{ic|1=AutoWired=yes}}. Подробную информацию смотрите в {{ic|netctl.profile(5)}}.
 +
 
 +
{{Warning|С опцией {{ic|1=Security=wpa-config}} невозможно автоматическое подключение к WPA профилю средствами ''netctl-auto''. Вместо этого используйте {{ic|1=Security=wpa-configsection}}}}
 +
 
 +
После того, как все профили настроены, активируйте сервисы с помощью ''systemctl'':
 +
 
 +
# systemctl enable netctl-auto@''interface''.service
 +
# systemctl enable netctl-ifplugd@''interface''.service
 +
 
 +
{{Warning|
 +
* Юнит не запустится при загрузке системы, если один из профилей содержит ошибки, например пустую переменную {{ic|1=Key=}}.
 +
* Этот метод несовместим с [[#Основной метод|Основным методом]]. Если вы ранее активировали профиль через ''netctl'', запустите {{ic|netctl disable ''profile''}}, чтобы предотвратить запуск профиля дважды при загрузке.}}
  
 
===Переход с Netcfg===
 
===Переход с Netcfg===
{{Warning|{{ic|netctl}} конфликтует с {{ic|netcfg}}, поэтому отключите существующие {{ic|netcfg@<profile>}} сервисы перед установкой {{ic|netctl}}.}}
 
  
Профили {{ic|netctl}} находятся в {{ic|/etc/netctl}}, а ''не'' в каталоге {{ic|/etc/network.d}}, который использовал {{ic|netcfg}}.
+
''netctl'' хранит профили в {{ic|/etc/netctl/}}, а '''не''' в {{ic|/etc/network.d/}}, как это делал 'netcfg''.
  
 
Чтобы перейти с netcfg, необходимо выполнить по крайней мере следующие шаги:
 
Чтобы перейти с netcfg, необходимо выполнить по крайней мере следующие шаги:
*Переместите файлы профилей сетевых подключений в новую директорию.
+
 
*Переименуйте переменные в них в соответствии с netctl.profile(5) (Большинство имен переменных всего лишь изменят стиль на UpperCamelCase, например CONNECTION= становится Connection=)
+
* Отключите сервисы ''ntcfg'': {{ic|systemctl disable netcfg.service}}.
*Для соединений со статическим IP удостоверьтесь в том, что переменная Address= имеет маску подсети после IP (например Address=('192.168.1.23<b>/24</b>' '192.168.1.87<b>/24</b>') в примере профиля)
+
* Удалите ''netcfg'' и установите ''netctl''.
*Если вы установили беспроводное соединение в соответствии с примером {{ic|wireless-wpa-configsection}}, учтите, что значения в секции {{ic|1=WPAConfigSection=}} переопределят соответствующие опции {{ic|wpa_supplicant}} в {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}. Для подключения к скрытой беспроводной сети добавьте {{ic|scan_ssid<nowiki>=1</nowiki>}} к параметрам в {{ic|wireless-wpa-configsection}}; {{ic|Hidden<nowiki>=</nowiki>yes}} не работает здесь.
+
* Переместите файлы сетевых профилей в новую директорию.
*Удалите кавычки у значений переменных, для которых они не обязательны (в основном это дело вкуса).
+
* Переименуйте переменныей в соответствии с {{ic|netctl.profile(5)}} (в основном надо привести переменные к {{ic|UpperCamelCase}}, например {{ic|CONNECTION}} переименовать в {{ic|Connection}})
*Выполните {{ic|netctl enable <profile>}} для каждого профиля в старом массиве NETWORK. Он не работает в этом случае, смотрите netctl.special(7).
+
* Убедитесь, что в переменной {{ic|Address}} профиля со статическим IP прописана маска подсети после IP адреса (из образца файла профиля: {{ic|1=Address=('192.168.1.23'''/24'''' '192.168.1.87'''/24'''')}})
*Используйте {{ic|netctl list}} / {{ic|netctl start <profile>}} вместо netcfg-menu. wifi-menu остается доступным.
+
* Если вы настраиваете беспроводное соединение по образцу {{ic|wireless-wpa-configsection}}, обратите внимание, что это перезапишет опции {{ic|wpa_supplicant}}, определенные выше в скобках. Для подключения к скрытой беспроводной сети добавьте {{ic|1=scan_ssid=1}} к опциям в {{ic|wireless-wpa-configsection}}; {{ic|1=Hidden=yes}} здесь не действует.
 +
* На ваше усмотрение можно удалить кавычки у переменных, для которых кавычки не обязательны.
 +
* Выполните {{ic|netctl enable ''profile''}} для каждого профиля в старом массиве {{ic|NETWORKS}}. Если не сработало, смотрите {{ic|netctl.special(7)}}.
 +
* Вместо ''netcfg-menu'' используйте {{ic|netctl list}} и/или {{ic|netctl start ''profile''}}. ''wifi-menu'' остался доступным.
 +
* В отличие от ''netcfg'' по умолчанию ''netctl'' не поднимает [http://ru.wikipedia.org/wiki/Сетевая_плата сетевую плату], не подключеную к другой работающей сетевой плате. Чтобы обойти этот недостаток, добавьте {{ic|1=SkipNoCarrier=yes}} в конец вашего {{ic|/etc/netctl/''profile''}}. Тогда, даже если, например, кабель ethernet не подключен, сервис будет запущен.
  
 
===Шифрование пароля (256-битный Pre-Shared Key)===
 
===Шифрование пароля (256-битный Pre-Shared Key)===
  
У пользователей, ''не'' желающих, чтобы их пароль хранился в ''простом тексте'', есть возможность использовать 256-bit Encrypted PSK.
+
{{Note|1=Не смотря на "зашифрованность", ключа, который вы добавите в конфигурацию профиля, будет вполне достаточно для подключения к сети WPA-PSK. Этот метод скроет человеко-читаемый пароль, но он не предотвратит от подключения к сети кого-либо с правом на чтение этого файла.}}
 +
 
 +
У пользователей, '''не''' желающих, чтобы их пароль хранился в простом тексте, есть возможность использовать 256-bit Encrypted PSK, вычисляемый на основе пароля и SSID сети стандартными алгоритмами. Реализовать шифрование можно двумя способами:
 +
 
 +
* Для генерации нужных настроек в {{ic|/etc/netctl/}} использовать {{ic|wifi-menu -o}}.
 +
* Ручная настройка, описанная ниже.
 +
 
 +
Какой бы метод вы не выбрали, для доступа пользователя к паролю следует установить нужные права на файл профиля:
 +
 
 +
# chmod 600 /etc/netctl/<config_file>
  
Если это еще не сделано, [[pacman|установите]] {{pkg|wpa_actiond}} из [[Official Repositories]].
+
Вычислите ваш ключ с помощью [[WPA_Supplicant_(Русский)#.D0.9F.D1.80.D0.BE.D1.86.D0.B5.D1.81.D1.81|wpa_passphrase]]:
  
Далее, сгенерируйте ваш 256-bit Encrypted PSK используя [[WPA_supplicant#Configuration_file|wpa_passphrase]]:
+
{{hc|$ wpa_passphrase ''your_essid'' ''passphrase''|2=
{{hc|Usage: wpa_passphrase [ssid] [passphrase]|
+
2=$ wpa_passphrase archlinux freenode|
+
 
   network={
 
   network={
   ssid="archlinux"
+
   ssid="''your_essid''"
   #psk="freenode"
+
   #psk="''passphrase''"
 
   psk=64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
 
   psk=64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
 
}
 
}
{{Note|This information will be used in your profile so do not close the terminal}}
 
 
}}
 
}}
  
Во втором окне терминала скопируйте файл примера {{ic|wireless-wpa}} из {{ic|/etc/netctl/examples}} в {{ic|/etc/netctl}}.
+
{{Note|Не закрывайте терминал, эта информация будет нужна далее}}
 +
 
 +
Во втором окне терминала скопируйте файл-образец {{ic|wireless-wpa}} из каталога {{ic|/etc/netctl/examples}} в {{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}}, используя ваш любимый текстовый редактор, и добавить ''Encrypted Pre-shared Key'', который был сгенерирован ранее с использованием wpa_passphrase, в переменную {{ic|'''Key'''}} этого профиля.
+
Теперь следует отредактировать {{ic|/etc/netctl/wireless-wpa}}, добавив в переменную {{ic|Key}} ключ, сгенерированный ранее с помощью wpa_passphrase.
 +
 
 +
В итоге профиль {{ic|wireless-wpa}} будет выглядеть примерно так:
  
Профиль {{ic|wireless-wpa}}, включающий 256-bit Encrypted PSK будет выглядеть примерно так:
 
 
{{hc|/etc/netctl/wireless-wpa|2=
 
{{hc|/etc/netctl/wireless-wpa|2=
Description='A simple WPA encrypted wireless connection using 256-bit Encrypted PSK'
+
Description='A simple WPA encrypted wireless connection using 256-bit PSK'
 
Interface=wlp2s2
 
Interface=wlp2s2
 
Connection=wireless
 
Connection=wireless
 
Security=wpa
 
Security=wpa
 
IP=dhcp
 
IP=dhcp
ESSID=archlinux
+
ESSID=''your_essid''
 
Key=\"64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
 
Key=\"64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
 
}}
 
}}
{{Note|1=Убедитесь, что использованы '''special non-quoted rules''' для {{ic|1=Key=}}, которые описаны в конце [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile(5)].}}
 
{{Note|1=Ключа, который вы помещаете в конфигурацию профиля, будет вполне достаточно для подключения к сети WPA-PSK, что означает, что этот метод хорош лишь для того, чтобы скрыть человеко-читаемый пароль, но он не предотвратит от подключения к сети кого-либо с правом на чтение этого файла.}}
 
  
==Поддержка==
+
{{Note|
Официальная страница обсуждения: https://bbs.archlinux.org/viewtopic.php?id=157670
+
* Убедитесь, что корректно использованы специальные правила расстановки кавычек ('''special quoting rules''') для переменной {{ic|Key}}, которые описаны в конце [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile(5)].
 +
* Если пароль не проходит проверку, попробуйте удалить {{ic|\"}} из переменной {{ic|Key}}.}}
 +
 
 +
==Советы и рекомендации==
 +
 
 +
===Аналог 'netcfg-current'===
  
==Советы==
 
 
По состоянию на апрель 2013 в {{ic|netctl}} нет альтернативы {{ic|netcfg current}}. Если вы использовали эту возможность для чего-то, вроде статус-бара тайлового оконного менеджера, теперь вы можете использовать следующее:
 
По состоянию на апрель 2013 в {{ic|netctl}} нет альтернативы {{ic|netcfg current}}. Если вы использовали эту возможность для чего-то, вроде статус-бара тайлового оконного менеджера, теперь вы можете использовать следующее:
  # netctl list | sed -n 's/^\* //p'
+
 
 +
  # netctl list | awk '/*/ {print $2}'
 +
 
 
или, если для подключения использовался {{ic|netctl-auto}}:
 
или, если для подключения использовался {{ic|netctl-auto}}:
  # wpa_cli -i <interface> status | sed -n 's/^id_str=//p'
+
 
 +
  # wpa_cli -i ''interface'' status | sed -n 's/^id_str=//p'
 +
 
 +
{{Note|C версии netctl-1.3 (сейчас в <nowiki>[testing]</nowiki>), в {{ic|netctl-auto}} можно использовать команду {{ic|current}}{{bc|# netctl-auto current}}}}
 +
 
 +
===Eduroam===
 +
 
 +
Некоторые университеты используют систему [http://ru.wikipedia.org/wiki/Eduroam Eduroam] для управления беспроводной сетью. Для подключения к такой сети может быть полезен следующий файл конфигурации:
 +
 
 +
{{hc|/etc/netctl/wlan0-eduroam|<nowiki>
 +
Description='Eduroam-profile for <user>'
 +
Interface=wlan0
 +
Connection=wireless
 +
Security=wpa-configsection
 +
IP=dhcp
 +
WPAConfigSection=(
 +
'ssid="eduroam"'
 +
'proto=RSN'
 +
'key_mgmt=WPA-EAP'
 +
'pairwise=CCMP'
 +
'auth_alg=OPEN'
 +
'eap=PEAP'
 +
'identity="<user>"'
 +
'password="<password>"'
 +
)</nowiki>
 +
}}
 +
 
 +
=== Объединение сетевых интерфейсов (bonding) ===
 +
 
 +
Из [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.''
 +
 
 +
:''Объединение сетевых интерфейсов в Linux можно осуществить с помощью драйвера bonding, он предоставляет методы для агрегирования нескольких сетевых интерфейсов в один логический. Поведение связанных интерфейсов зависит от режима. В общем случае, объединенные интерфейсы могут работать в режиме горячего резерва (отказоустойчивости) или в режиме балансировки нагрузки.''
 +
 
 +
==== Балансировка нагрузки ====
 +
 
 +
Для использования bonding с netctl требуются дополнительные пакеты: {{Pkg|ifenslave}}
 +
 
 +
Скопируйте {{ic|/etc/netctl/examples/bonding}} в {{ic|/etc/netctl/bonding}} и отредактируйте его. Например:
 +
 
 +
{{hc|/etc/netctl/bonding|2=
 +
Description='Bond Interface'
 +
Interface='bond0'
 +
Connection=bond
 +
BindsToInterfaces=('eth0' 'eth1')
 +
IP=dhcp
 +
IP6=stateless}}
 +
 
 +
Теперь можно отменить старые настройки и установить запуск ''bonding'' по умолчанию. Переключитесь на новый профиль, например:
 +
 
 +
# netctl switch-to bonding
 +
 
 +
{{Note|По умолчанию для двайвера {{ic|bonding}} используется политика цикличности (''the round-robin policy''). Что это значит можно посмотреть в [https://www.kernel.org/doc/Documentation/networking/bonding.txt документации]}}
 +
 
 +
{{Tip|Чтобы проверить статус режима ''bonding'', выполните: {{bc|$ cat /proc/net/bonding/bond0}}}}
 +
 
 +
==== Подключение к беспроводной сети при отказе проводной ====
 +
 
 +
Этот пример демонстрирует, как можно использовать ''bonding'', чтобы откатиться на беспроводную сеть при падении проводного соединения. Соединение на каждом интерфейсе обнаружено и ''dhcpcd'' срабатывает, когда производится подключение одного или обоих интерфейсов.
 +
 
 +
Потребуются дополнительные пакеты из официального репозитория: {{Pkg|ifplugd}}, {{Pkg|ifenslave}} и {{Pkg|wpa_supplicant}}.
 +
 
 +
Сначала следует настроить драйвер {{ic|bonding}} для работы с {{ic|active-backup}}:
 +
 
 +
{{hc|/etc/modprobe.d/bonding.conf|2=
 +
options bonding mode=active-backup
 +
options bonding miimon=100
 +
options bonding primary=eth0
 +
options bonding max_bonds=0
 +
}}
 +
 
 +
Опция {{ic|max_bonds}} предотвращает ошибку {{ic|Interface bond0 already exists}}.
 +
 
 +
Далее следует настроить профиль netctl для так называемого ''порабощения'' двух апаратных интерфейсов:
 +
 
 +
{{hc|/etc/netctl/failover|2=
 +
Description='A wired connection with failover to wireless'
 +
Interface='bond0'
 +
Connection=bond
 +
BindsToInterfaces=('eth0' 'wlan0')
 +
IP='no'
 +
SkipNoCarrier='no'
 +
}}
 +
 
 +
Активация профиля при загрузке:
 +
 
 +
# netctl enable failover
 +
 
 +
Настройте ''wpa_supplicant'' для ассоциации с известными сетями. Это можно сделать с помощью профиля netctl (не забывайте про {{ic|1=IP='no'}}) и постоянного работающего сервиса ''wpa_supplicant'', а также по запросу с использованием ''wpa_cli''. Способы описаны на странице [[WPA_Supplicant_(Русский)]]
 +
 
 +
Создайте действие ''ifplugd'' для автоматического DHCP присвоения связанному интерфейсу:
 +
 
 +
{{hc|/etc/ifplugd/bond_dhcp.action|2=
 +
#!/bin/sh
 +
 
 +
case "$2" in
 +
  up)
 +
    systemctl start "dhcpcd@$1.service" && exit 0
 +
    ;;
 +
  down)
 +
    systemctl stop "dhcpcd@$1.service" && exit 0
 +
    ;;
 +
  *)
 +
    echo "Wrong arguments" > /dev/stderr
 +
    ;;
 +
esac
 +
exit 1
 +
}}
 +
 
 +
и сделайте его исполняемым
 +
 
 +
# chmod +x /etc/ifplugd/bond_dhcp.action
 +
 
 +
Потом создайте сервис systemd, который будет запускать ''ifplugd'' для {{ic|bond0}}:
 +
 
 +
{{hc|/etc/systemd/system/net-auto-bonded@.service|2=
 +
[Unit]
 +
Description=Provides automatic dhcp resolution for bonded failover connection
 +
Requires=netctl@failover.service
 +
After=netctl@failover.service
 +
 
 +
[Service]
 +
ExecStart=/usr/bin/ifplugd -i %i -r /etc/ifplugd/bond_dhcp.action -fIns
 +
 
 +
[Install]
 +
WantedBy=multi-user.target
 +
}}
 +
 
 +
Активируйте сервис и перезагрузите систему:
 +
 
 +
# systemctl enable net-auto-bonded@bond0.service
 +
# reboot
 +
 
 +
Если у вас проводное и беспроводное соединение в одной сети, вы, вероятно, можете сейчас отключиться от проводной сети и снова подключиться к ней без потери соединения.
 +
 
 +
== Смотрите также ==
 +
 
 +
* [https://bbs.archlinux.org/viewtopic.php?id=157670 Анонс и официальная страница обсуждения]

Revision as of 00:21, 6 December 2013

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.

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

Аналог 'netcfg-current'

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

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

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

# wpa_cli -i interface status | sed -n 's/^id_str=//p'
Note: C версии netctl-1.3 (сейчас в [testing]), в netctl-auto можно использовать команду current
# netctl-auto current

Eduroam

Некоторые университеты используют систему Eduroam для управления беспроводной сетью. Для подключения к такой сети может быть полезен следующий файл конфигурации:

/etc/netctl/wlan0-eduroam
Description='Eduroam-profile for <user>'
Interface=wlan0
Connection=wireless
Security=wpa-configsection
IP=dhcp
WPAConfigSection=(
 'ssid="eduroam"'
 'proto=RSN'
 'key_mgmt=WPA-EAP'
 'pairwise=CCMP'
 'auth_alg=OPEN'
 'eap=PEAP'
 'identity="<user>"'
 'password="<password>"'
)

Объединение сетевых интерфейсов (bonding)

Из документации ядра 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.
Объединение сетевых интерфейсов в Linux можно осуществить с помощью драйвера bonding, он предоставляет методы для агрегирования нескольких сетевых интерфейсов в один логический. Поведение связанных интерфейсов зависит от режима. В общем случае, объединенные интерфейсы могут работать в режиме горячего резерва (отказоустойчивости) или в режиме балансировки нагрузки.

Балансировка нагрузки

Для использования bonding с netctl требуются дополнительные пакеты: ifenslave

Скопируйте /etc/netctl/examples/bonding в /etc/netctl/bonding и отредактируйте его. Например:

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

Теперь можно отменить старые настройки и установить запуск bonding по умолчанию. Переключитесь на новый профиль, например:

# netctl switch-to bonding
Note: По умолчанию для двайвера bonding используется политика цикличности (the round-robin policy). Что это значит можно посмотреть в документации
Tip: Чтобы проверить статус режима bonding, выполните:
$ cat /proc/net/bonding/bond0

Подключение к беспроводной сети при отказе проводной

Этот пример демонстрирует, как можно использовать bonding, чтобы откатиться на беспроводную сеть при падении проводного соединения. Соединение на каждом интерфейсе обнаружено и dhcpcd срабатывает, когда производится подключение одного или обоих интерфейсов.

Потребуются дополнительные пакеты из официального репозитория: ifplugd, ifenslave и wpa_supplicant.

Сначала следует настроить драйвер bonding для работы с 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

Опция max_bonds предотвращает ошибку Interface bond0 already exists.

Далее следует настроить профиль netctl для так называемого порабощения двух апаратных интерфейсов:

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

Активация профиля при загрузке:

# netctl enable failover

Настройте wpa_supplicant для ассоциации с известными сетями. Это можно сделать с помощью профиля netctl (не забывайте про IP='no') и постоянного работающего сервиса wpa_supplicant, а также по запросу с использованием wpa_cli. Способы описаны на странице WPA_Supplicant_(Русский)

Создайте действие ifplugd для автоматического DHCP присвоения связанному интерфейсу:

/etc/ifplugd/bond_dhcp.action
#!/bin/sh

case "$2" in
  up)
    systemctl start "dhcpcd@$1.service" && exit 0
    ;;
  down)
    systemctl stop "dhcpcd@$1.service" && exit 0
    ;;
  *)
    echo "Wrong arguments" > /dev/stderr
    ;;
esac
exit 1

и сделайте его исполняемым

# chmod +x /etc/ifplugd/bond_dhcp.action

Потом создайте сервис systemd, который будет запускать ifplugd для bond0:

/etc/systemd/system/net-auto-bonded@.service
[Unit]
Description=Provides automatic dhcp resolution for bonded failover connection
Requires=netctl@failover.service
After=netctl@failover.service

[Service]
ExecStart=/usr/bin/ifplugd -i %i -r /etc/ifplugd/bond_dhcp.action -fIns

[Install]
WantedBy=multi-user.target

Активируйте сервис и перезагрузите систему:

# systemctl enable net-auto-bonded@bond0.service
# reboot

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

Смотрите также