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

From ArchWiki
Jump to: navigation, search
(Шифрование пароля (256-битный Pre-Shared Key))
m
(16 intermediate revisions by the same 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 117: Line 120:
 
{{Note|1=Не смотря на "зашифрованность", ключа, который вы добавите в конфигурацию профиля, будет вполне достаточно для подключения к сети WPA-PSK. Этот метод скроет человеко-читаемый пароль, но он не предотвратит от подключения к сети кого-либо с правом на чтение этого файла.}}
 
{{Note|1=Не смотря на "зашифрованность", ключа, который вы добавите в конфигурацию профиля, будет вполне достаточно для подключения к сети WPA-PSK. Этот метод скроет человеко-читаемый пароль, но он не предотвратит от подключения к сети кого-либо с правом на чтение этого файла.}}
  
У пользователей, '''не''' желающих, чтобы их пароль хранился в ''простом тексте'', есть возможность использовать 256-bit Encrypted PSK, вычисляемый на основе пароля и SSID сети стандартными алгоритмами. Реализовать шифрование можно двумя способами:
+
У пользователей, '''не''' желающих, чтобы их пароль хранился в простом тексте, есть возможность использовать 256-bit Encrypted PSK, вычисляемый на основе пароля и SSID сети стандартными алгоритмами. Реализовать шифрование можно двумя способами:
  
 
* Для генерации нужных настроек в {{ic|/etc/netctl/}} использовать {{ic|wifi-menu -o}}.
 
* Для генерации нужных настроек в {{ic|/etc/netctl/}} использовать {{ic|wifi-menu -o}}.
 
* Ручная настройка, описанная ниже.
 
* Ручная настройка, описанная ниже.
  
Если это еще не сделано, [[pacman|установите]] {{pkg|wpa_actiond}} из [[Official Repositories]].
+
Какой бы метод вы не выбрали, для доступа пользователя к паролю следует установить нужные права на файл профиля:
  
Далее, сгенерируйте ваш 256-bit Encrypted PSK используя [[WPA_supplicant#Configuration_file|wpa_passphrase]]:
+
# chmod 600 /etc/netctl/<config_file>
{{hc|Usage: wpa_passphrase [ssid] [passphrase]|
+
 
2=$ wpa_passphrase archlinux freenode|
+
Вычислите ваш ключ с помощью [[WPA_Supplicant_(Русский)#.D0.9F.D1.80.D0.BE.D1.86.D0.B5.D1.81.D1.81|wpa_passphrase]]:
 +
 
 +
{{hc|$ wpa_passphrase ''your_essid'' ''passphrase''|2=
 
   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|
Официальная страница обсуждения: 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:37, 22 August 2013

Summary help replacing me
Руководство по настройке сети с помощью netctl и скриптов сетевых профилей.
Resources
Bridge with netctl

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

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

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