Difference between revisions of "Netctl (Русский)"
(→Советы) |
m |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{Lowercase title}} | {{Lowercase title}} | ||
+ | [[Category:Русский]] | ||
[[Category:Networking (Русский)]] | [[Category:Networking (Русский)]] | ||
+ | [[cs:Netctl]] | ||
+ | [[es:Netctl]] | ||
[[fr:Netctl]] | [[fr:Netctl]] | ||
− | [[ | + | [[ja:Netctl]] |
− | [[ | + | [[ru:Netctl]] |
[[zh-CN:Netctl]] | [[zh-CN:Netctl]] | ||
{{Article summary start}} | {{Article summary start}} | ||
Line 161: | Line 164: | ||
==Советы и рекомендации== | ==Советы и рекомендации== | ||
+ | |||
+ | ===Аналог 'netcfg-current'=== | ||
+ | |||
+ | По состоянию на апрель 2013 в {{ic|netctl}} нет альтернативы {{ic|netcfg current}}. Если вы использовали эту возможность для чего-то, вроде статус-бара тайлового оконного менеджера, теперь вы можете использовать следующее: | ||
+ | |||
+ | # netctl list | awk '/*/ {print $2}' | ||
+ | |||
+ | или, если для подключения использовался {{ic|netctl-auto}}: | ||
+ | |||
+ | # 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:37, 22 August 2013
zh-CN:Netctl 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, если ваши профили некорректно настроены.
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/
/etc/netctl/
можно выполнить wifi-menu -o
.Как только вы создали профиль, попробуйте установить соединение:
# netctl start profile
Если результат выполнения команды говорит о неудаче, выполните journalctl -xn
и netctl status profile
для выяснения причин. Выполните необходимую корректировку конфигурации и повторите попытку.
Автоматизация
Если используется только один профиль на один интерфес или вы хотите переключать профили вручную, то подойдет Основной метод - пользователям серверов, рабочих станций, роутеров и прочего.
Если требуется часто переключаться между многими профилями, используйте Автоматическое переключение профилей - будет полезно пользователям ноутбуков.
Основной метод
Этим методом можно запустить только один профиль на интерфейс. Сначала проверьте, может ли профиль быть запущен:
# netctl enable profile
Эта команда создаст и активирует systemd-сервис, который будет автоматически запускать профиль при загрузке.
SkipNoCarrier=yes
в файл профиляАвтоматическое переключение профилей
Для автоматического переключения профилей netcl предоставляет два специальных systemd-сервиса:
- Для проводных соединений:
netctl-ifplugd@interface.service
. Профиль измненятся при отключении и подключении кабеля. - Для беспроводных соединений:
netctl-auto@interface.service
. Порфиль изменятся при переходе из диапазона одной сети в диапазон другой.
Сначала установите необходимые пакеты:
- Пакет wpa_actiond требуется сервисом
netctl-auto@interface.service
- Пакет ifplugd требуется сервисом
netctl-ifplugd@interface.service
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)
.
Security=wpa-config
невозможно автоматическое подключение к WPA профилю средствами netctl-auto. Вместо этого используйте Security=wpa-configsection
После того, как все профили настроены, активируйте сервисы с помощью systemctl:
# systemctl enable netctl-auto@interface.service # systemctl enable netctl-ifplugd@interface.service
- Юнит не запустится при загрузке системы, если один из профилей содержит ошибки, например пустую переменную
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-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 }
Во втором окне терминала скопируйте файл-образец 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
- Убедитесь, что корректно использованы специальные правила расстановки кавычек (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'
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)
- 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
bonding
используется политика цикличности (the round-robin policy). Что это значит можно посмотреть в документации$ 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
Если у вас проводное и беспроводное соединение в одной сети, вы, вероятно, можете сейчас отключиться от проводной сети и снова подключиться к ней без потери соединения.