Сохранение настроек сетевого моста Linux при перезагрузке
Теория
Для автоматической настройки сетевого моста после перезагрузки требуется инструмент bridge-utils. Без него сетевой мост не сможет подключиться к маршрутизатору или Интернету, требуя постоянной перенастройки.
А точнее: укажите основной адаптер, маршруты по умолчанию и свяжите сетевой мост:
sudo ip link set br0 up
sudo ip link set enp3s0 master br0
sudo bridge link
sudo route add 192.168.0.120 via 192.168.0.1
sudo route add default gw 192.168.0.1 br0
sudo route del default gw 192.168.0.1 br0
sudo 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/interfaces
auto lo
iface lo inet loopback
allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet dhcp
allow-hotplug br0
auto br0
iface br0 inet static
# iface br0 inet dhcp
address 192.168.0.120
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 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:xx
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
post-up route add 192.168.0.120 via 192.168.0.1
post-up route add default gw 192.168.0.1 br0
post-down route del default gw 192.168.0.1 br0
post-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 su
echo "deb http://ftp.de.debian.org/debian sid main" >> /etc/apt/sources.list.d/ftp.de.debian.org.list
apt update
sudo apt install connman connman-gtk connman-ui -y
Для установки в Archlinux:
sudo pacman –S connman --noconfirm
После этого измените агент и запустите службу. На каждом компьютере с Linux команды будут одинаковыми:
sudo connmanctl
agent on
quit
sudo systemctl enable connman
Я выполнил настройки с помощью графического инструмента «connman-gtk«, чтобы узнать, какие настройки часто вступают в силу после перезагрузки. Вот примерно где находятся эти настройки: «/var/lib/connman/ethernet…cable/settings». Маршрут будет отличаться на каждом ПК в зависимости от интерфейса. «connman-gtk» находится в aur на Archlinux.