Сохранение настроек сетевого моста Linux при перезагрузке
Теория
Для автоматической настройки сетевого моста после перезагрузки требуется инструмент bridge-utils. Без него сетевой мост не сможет подключиться к маршрутизатору или Интернету, требуя постоянной перенастройки.
А точнее: укажите основной адаптер, маршруты по умолчанию и свяжите сетевой мост:
sudo ip link set br0 upsudo ip link set enp3s0 master br0sudo bridge linksudo route add 192.168.0.120 via 192.168.0.1sudo route add default gw 192.168.0.1 br0sudo route del default gw 192.168.0.1 br0sudo route del 192.168.0.120 via 192.168.0.1
В Archlinux инструмент можно установить так:
sudo pacman -S bridge-utils --noconfirm
Вот как это делается в Debian:
sudo su
echo 'deb http://ftp.de.debian.org/debian sid main' > /etc/apt/sources.list.d/ftp.de.debian.org.list
sudo apt update
sudo apt install bridge-utils –y
Команды утилиты
Для создания моста:
brctl addbr bridge_name
Добавить устройство, например eth0, в мост:
brctl addif bridge_name eth0
Отобразить активные мосты вместе с интерфейсами, к которым они подключены:
brctl show
Настроить устрйство моста:
ip link set dev bridge_name up
Установить мост в состяниее down (необходимо перед удалением) :
ip link set dev bridge_name down
Удалить мост:
brctl delbr bridge_name
Сохранение настроек из Network Manager
Если вы используете Network Manager, могут возникнуть проблемы с тем, что настройки моста не сохраняются после перезагрузки. Для решения этой проблемы мы будем вручную управлять конфигурациями каждого адаптера и подключения к сетевому менеджеру.
Для этого отредактируйте файл «/etc/NetworkManager/NetworkManager.conf» или добавьте новую конфигурацию в каталог «/etc/NetworkManager/conf.d/«.
sudo nano /etc/NetworkManager/NetworkManager.conf
или
sudo mkdir -p /etc/NetworkManager/conf.d/
sudo nano /etc/NetworkManager/conf.d/managed.conf
Далее просто пропишите секцию и её настройку.
[ifupdown]
managed=true
Этим мы указываем менеджеру использовать настройки, найденные в файле «/etc/network/interfaces«.
Кроме того, при каждом запуске соединения менеджер по умолчанию изменяет настройки в файле «/etc/resolv.conf«. Просто пропишите конфигурацию в том же месте: «/etc/NetworkManager/conf.d/dns.conf«, чтобы запретить это и управлять настройками DNS вручную.
sudo nano /etc/NetworkManager/conf.d/dns.conf
[main]
dns=none
Resolvconf.service должен быть включен или отключен в systemd:
systemctl start resolvconf.service
systemctl enable resolvconf.service
или
systemctl stop resolvconf.service
systemctl disable resolvconf.service
Теперь отредактируйте «/etc/network/interfaces» для настройки сетевых интерфейсов. Сделайте адрес маршрутизатора по умолчанию 192.168.0.1 и адрес моста, например, 192.168.0.120 с маской 24.
Для всех сетевых интерфейсов не забудьте установить необходимый loopback-интерфейс и автоматические или статические адреса; в противном случае они даже не запустятся. Добавьте интерфейс WiFi, например wlp0s3. На моем виртуальном компьютере WiFi недоступен. Скриншоты приведены как результаты тестирования нескольких ручных настроек адресов Network Manager при условии перезагрузки виртуальной системы.
sudo nano /etc/network/interfacesauto loiface lo inet loopbackallow-hotplug enp0s3auto enp0s3iface enp0s3 inet dhcpallow-hotplug br0auto br0iface br0 inet static# iface br0 inet dhcpaddress 192.168.0.120netmask 255.255.255.0broadcast 192.168.0.255gateway 192.168.0.1# dns-nameservers 192.168.0.1 8.8.8.8# pre-up ifconfig br0 hw ether xx:xx:xx:xx:xx:xx# pre-up ip link set br0 address xx:xx:xx:xx:xx:xxbridge_ports eth0bridge_stp offbridge_fd 0bridge_maxwait 0post-up route add 192.168.0.120 via 192.168.0.1post-up route add default gw 192.168.0.1 br0post-down route del default gw 192.168.0.1 br0post-down route del 192.168.0.120 via 192.168.0.1
Cтрока, изменяющая MAC-адрес, является необязательной. Кроме того, он настраивается с помощью утилит ifconfig и default ip. Хотя это не обязательно, я все же советую вам указать широковещательный адрес. Шлюз должен быть упомянут. DNS-сервер не обязателен. Необходимо использовать команды маршрутизации.
Объяснение команд в конфигурационном файле.
- address address — адрес.
- netmask netmask — маска сети.
- broadcast — широковещательный_адрес.
- network network_address — адрес сети
- metric metric — Метрика(целое число).
- gateway address — Шлюз по умолчанию.
- pointopoint адрес — Адрес удалённой точки.
- media type — Тип носителя, зависящий от драйвера.
- hwaddress class address — Аппаратный адрес. Класс — это одно из следующих значений: ether, ax25, ARCnet или netrom. Адрес зависит от выбранного класса.
- mtu size — Размер MTU.
Описание команд — Pre-up, Post-up, Pre-Down, Post-Down:
• pre-up — Запустить команду до поднятия интерфейса.
• post-up — Запустить команду после поднятия интерфейса.
• pre-down — Запустить команду перед отключением интерфейса.
• post-down — Запустить команду после отключения интерфейса.
Сохранение настроек Connman.
Будет немного сложнее сохранить настройки при перезагрузке, если вы используете сетевой менеджер Connman.
Для установки в Debian используйте следующие команды:
sudo suecho "deb http://ftp.de.debian.org/debian sid main" >> /etc/apt/sources.list.d/ftp.de.debian.org.listapt updatesudo apt install connman connman-gtk connman-ui -y
Для установки в Archlinux:
sudo pacman –S connman --noconfirm
После этого измените агент и запустите службу. На каждом компьютере с Linux команды будут одинаковыми:
sudo connmanctlagent onquitsudo systemctl enable connman
Я выполнил настройки с помощью графического инструмента «connman-gtk«, чтобы узнать, какие настройки часто вступают в силу после перезагрузки. Вот примерно где находятся эти настройки: «/var/lib/connman/ethernet…cable/settings». Маршрут будет отличаться на каждом ПК в зависимости от интерфейса. «connman-gtk» находится в aur на Archlinux.
