Вопрос или проблема
Я настроил Arch Linux внутри Oracle Virtual Box. Чтобы иметь возможность получить доступ к виртуальной машине из локальной сети, я добавил мостовой адаптер и настроил гостевую систему в соответствии с инструкциями из Arch Linux Wiki: Сетевой мост | С iproute2.
Я использовал следующие команды для успешной настройки сети:
ip link add name lan_bridge type bridge
ip link set lan_bridge up
ip link enp0s8 up
ip link set enp0s8 master lan_bridge
systemctl start dhcpcd@lan_bridge
После этих шагов я могу войти в гостевую систему через SSH. Однако попытка сделать изменения постоянными с помощью:
systemctl enable dhcpcd@lan_bridge
не срабатывает. Я хотел бы, чтобы systemd автоматически создавал такую же настройку при запуске. Конечно, я мог бы просто вставить эти команды в shell-скрипт и запустить его при старте, но я думаю, что должен быть более правильный способ сделать это. Буду признателен за помощь.
Самый простой способ – использовать netctl
в Arch. Прежде всего, вам нужно:
cp /etc/netctl/examples/bridge /etc/netctl
Установите желаемые интерфейсы в строке, которая говорит:
BindsToInterfaces=(eth0 eth1 tap0)
Наконец, вы хотите включить [email protected] вот так:
systemctl enable [email protected]
Примечание: имя после @ должно совпадать с именем вашего файла в /etc/netctl
Ответ или решение
Чтобы сделать настройку моста с использованием iproute2 постоянной в Arch Linux, необходимо выполнить несколько шагов для обеспечения автоматической конфигурации во время загрузки системы. В отличие от написания скрипта на оболочке, более надёжным и профессиональным решением является использование netctl
. Вот подробная инструкция по настройке мостовой сети в вашем окружении.
Шаг 1: Установка netctl
Если netctl
еще не установлен, вы можете установить его с помощью команды:
sudo pacman -S netctl
Шаг 2: Копирование примера конфигурации моста
Сначала нужно скопировать пример конфигурации моста, предоставленный netctl
, в директорию, где хранятся настройки:
sudo cp /etc/netctl/examples/bridge /etc/netctl/lan_bridge
Шаг 3: Настройка файла конфигурации
Теперь откройте только что созданный файл /etc/netctl/lan_bridge
для редактирования:
sudo nano /etc/netctl/lan_bridge
В этом файле вам нужно указать интерфейсы, которые будут являться «рабочими» для моста. Найдите строку BindsToInterfaces=(eth0 eth1 tap0)
и измените её, добавив имя вашего интерфейса, который станет слейвом моста (в вашем случае это, вероятно, enp0s8
, а также, если вы хотите, enp0s3
для других интерфейсов):
BindsToInterfaces=(enp0s8)
Также необходимо убедиться, что все другие параметры, такие как Description
, установлены в соответствии с вашими требованиями.
Шаг 4: Настройка DHCP
Если вы используете DHCP для моста, то необходимо указать DHCP
в файле:
IP=dhcp
Шаг 5: Включение и запуск службы
Теперь достаточно включить и запустить конфигурацию моста, чтобы команда автоматически выполнялась при загрузке системы:
sudo systemctl enable netctl@lan_bridge.service
sudo systemctl start netctl@lan_bridge.service
Важно помнить, что имя после @
должно совпадать с названием вашего файла в /etc/netctl
.
Шаг 6: Перезагрузка и проверка
Для проверки, что всё работает корректно, перезагрузите систему:
sudo reboot
После перезагрузки выполните команду:
ip a
Убедитесь, что ваш мост lan_bridge
создан и интерфейс правильно настроен.
Заключение
Такой подход к настройке сетевого моста не только делает его постоянным, но и позволяет управлять им более удобно и надёжно. Использование netctl
подразумевает хорошо структурированную и ясную настройку, что способствует легкому редактированию и поддержке вашей конфигурации в будущем.