1

Я пытаюсь создать подсеть с двумя маршрутизаторами IPv6, назовите их R1 и R2. Первоначально в моей подсети был только R1, который подключался к Интернету через туннель Hurricane Electric. R1 работал (и продолжает работать) с Radvd, и все хосты в подсети работают нормально (и все еще работают, поэтому я не буду публиковать Radvd.conf в R1 здесь). Недавно я добавил R2 в подсеть и поставил другую (новую) подсеть за ней. У меня есть radvd, работающий на R2, со следующим файлом radvd.conf:

interface eth2 {
  AdvSendAdvert on;
  MinRtrAdvInterval 3;
  MaxRtrAdvInterval 10;
  prefix 2001:xxxx:xxxx:xxxx::/64 {
    AdvOnLink on;
    AdvAutonomous on;
  };
};
interface eth0 {
  AdvSendAdvert on;
  MinRtrAdvInterval 3;
  MaxRtrAdvInterval 10;
  prefix 2001:xxxx:xxxx:xxxx::/64 {
    AdvAutonomous off;
    AdvOnLink off;
  };
  route 2001:470:291c:0002::/64 {};
};

Где eth0 подключен к исходной подсети, а eth2 подключен к новой подсети.

Вот проблема: RA от R2 переопределяют маршрут по умолчанию на всех хостах в исходной подсети (так что у них больше нет правильного маршрута по умолчанию, как объявлено R1). Маршрут по умолчанию для R2 по-прежнему правильно указывает на R1, поэтому все в подсети "работает", так как внешние узлы IPv6 доступны, но весь внешний трафик теперь неправильно маршрутизируется через R2.

Итак, мой вопрос: как я могу предотвратить, чтобы RA из R2 установили маршрут по умолчанию для хостов в моей исходной подсети (той, к которой подключены и R1, и R2)? Мне нужны RA от R1, чтобы обеспечить этот маршрут по умолчанию!

Спасибо заранее.

2 ответа2

1

Наиболее очевидным решением было бы вообще не отправлять рекламу маршрутизатора на eth0:

interface eth0 {
    AdvSendAdvert off;
}

Если есть другие причины, по которым вы хотите отправлять рекламные объявления маршрутизатора, тогда явно сообщите получателям, что маршрутизатор не является шлюзом по умолчанию:

interface eth0 {
    AdvSendAdvert on;
    AdvDefaultLifetime 0;
}

Из руководства по radvd.conf :

Срок жизни 0 означает, что маршрутизатор не является маршрутизатором по умолчанию и не должен появляться в списке маршрутизаторов по умолчанию.

0

Оба Ethernet имеют одинаковый «префикс 2001:xxxx:xxxx:xxxx::/64»?

  • Если так, это выглядит очень неправильно.
  • Если нет, то лучше было бы указать 2001:db8:yyyy:yyyy ", чтобы он выглядел по-другому
    • 2001:db8 хорош для примеров. Некоторые другие действительные адреса могут использовать 2001

Поскольку моя память служит мне, я считаю, что я больше работал с BSD rtadvd, чем с Linux Radvd - те же концепции, что-то вроде другой реализации.

Тем не менее, я предлагаю этот совет: вы можете запустить radvd для прослушивания только одного интерфейса и указать файл конфигурации? Кроме того, вы можете сделать это во второй раз, прослушивая только другой интерфейс и указав другой файл конфигурации? Если это так, это может снизить ваши шансы на то, что некоторые варианты поведения могут просочиться в другой интерфейс.

Вы действительно хотите, чтобы AdvSendAdvert был включен для обеих подсетей (на маршрутизаторе 2)?

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .