Вопрос или проблема
На виртуальной машине Debian 12 я настроил 2 сетевых интерфейса, а именно eth0
и eth1
. Оба интерфейса имеют доступ к Интернету и настроены для автоконфигурации SLAAC.
Поскольку в обеих сетях есть маршрутизатор, моя таблица маршрутов на этой виртуальной машине выглядит следующим образом:
2a01:xxxx:xxxx:xxxx::/64 dev eth1 proto kernel metric 256 expires 86388sec pref medium
fd45:xxxx:xxxx:xxxx::/64 dev eth0 proto kernel metric 256 expires 2591988sec pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth1 proto kernel metric 256 pref medium
default via fe80::xxxx:xxxx:xxxx:xxxx dev eth1 proto ra metric 1024 expires 1788sec hoplimit 64 pref medium
default via fe80::be24:xxxx:xxxx:xxxx dev eth0 proto ra metric 1024 expires 1788sec pref medium
В первые несколько дней всё было хорошо, и я мог получить доступ к внутреннему контенту в fd45::
через eth0
. Однако это внезапно сломалось, и весь исходящий трафик направляется через eth1
, как описано в traceroute
.
Я хочу заставить исходящие соединения использовать eth0
. Я могу временно удалить маршрут по умолчанию на eth1
, используя ip -6 route del default dev eth1
, но он вернется через несколько минут. Есть ли способ, как я могу это сделать?
Мой /etc/network/interfaces
выглядит следующим образом:
auto lo
iface lo inet loopback
auto eth0
auto eth1
iface eth1 inet6 auto
iface eth0 inet dhcp
iface eth0 inet6 auto
Ответ или решение
Чтобы предотвратить установку маршрута по умолчанию при использовании SLAAC (Stateless Address Autoconfiguration) в вашей конфигурации Debian 12 с двумя сетевыми интерфейсами, необходимо внести некоторые изменения в конфигурацию сети. Проблема, с которой вы столкнулись, связана с тем, что оба интерфейса (eth0 и eth1) получают маршруты по умолчанию, что приводит к конфликту и нежелательному маршрутизации трафика через интерфейс eth1. Рассмотрим, как можно решить эту проблему.
1. Измените конфигурацию сети
Для начала вам необходимо изменить файл /etc/network/interfaces
, чтобы контролировать поведение SLAAC для каждого интерфейса и предотвратить получение маршрута по умолчанию на eth1.
Пример конфигурации:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface eth0 inet6 auto
auto eth1
iface eth1 inet6 auto
post-up ip -6 route add default via fe80::be24:xxxx:xxxx:xxxx dev eth0
post-up ip -6 route flush cache
Объяснение изменений:
- post-up ip -6 route add default: Эта строка добавляет маршрут по умолчанию через интерфейс eth0 сразу после активации интерфейса.
- post-up ip -6 route flush cache: Это помогает сбросить кэш маршрутов, чтобы гарантировать, что обновленный маршрут по умолчанию будет использован.
2. Использование системных настроек
Также можно использовать системные настройки sysctl
, чтобы контролировать поведение маршрутизации и отключить автоматическую настройку маршрута по умолчанию:
Обновите файл /etc/sysctl.conf
Добавьте следующую строку:
net.ipv6.conf.all.accept_ra=2
Объяснение настройки:
- accept_ra=2: Этой настройкой вы запрещаете всем интерфейсам принимать маршруты по умолчанию, которые посылаются при помощи Router Advertisements (RA). Это значит, что вы получите только маршруты, которые вручную настроили.
3. Отключение маршрутов в интерфейсах
Если вышеуказанные методы не работают должным образом, вы также можете попробовать временно отключить SLAAC на цикле через интерфейс eth1, что предотвратит получение маршрута по умолчанию.
Пример:
iface eth1 inet6 auto
sysctl -w net.ipv6.conf.eth1.accept_ra=0
Эта команда отключает возможность eth1 принимать маршруты, что не позволит ему устанавливать маршрут по умолчанию.
4. Перезагрузка и проверка конфигурации
После внесения изменений перезагрузите сетевые службы:
sudo systemctl restart networking
После загрузки проверьте вашу таблицу маршрутов с помощью команды:
ip -6 route
Убедитесь, что маршрут по умолчанию установлен только для eth0.
Заключение
Эти шаги должны помочь вам устранить проблему с маршрутами по умолчанию, получаемыми через SLAAC. Управление маршрутами в IPv6 может оказаться сложной задачей, но путем корректной настройки сетевых интерфейсов и применения системных настроек можно добиться необходимого результата. Если у вас остались вопросы, не стесняйтесь обращаться за дополнительной помощью.