Префикс Radvd проходит через RA
С radvd
работает на моем маршрутизаторе, мой клиентский компьютер, как все говорят в сети "автоматически", получает IPv6-адрес. Есть ли способ использовать тот же префикс, который опубликован radvd
в своем RA и заставить тот же клиент Ubuntu действовать как маршрутизатор (запустив radvd
) с этим префиксом на каком-то другом интерфейсе? Если да, пожалуйста, объясните, как это сделать.
1 ответ
Нет, ты не можешь. Это не проблема отсутствия функций, а ограничение спецификации протокола IPv6.
Вот почему:
"Автоматически", к которому вы обращаетесь, - это государственная конфигурация (SLAAC), . В спецификации SLAAC говорится, что он работает с 64-битной маской сети (это означает, что первые 64 бита (16 шестнадцатеричных символов) адреса должны быть одинаковыми, чтобы адрес рассматривался в одном и том же блоке и использовался в этом сегменте сети).
По определению, маршрутизатор - это машина, которая находится как минимум в двух разных сегментах сети. Фактически, маршрутизатор получил свое имя от факта, что он маршрутизирует трафик между этими двумя сегментами.
("Сегмент", на который я здесь ссылаюсь, представляет собой набор коммутаторов, напрямую подключенных друг к другу (без промежуточных маршрутизаторов), к компьютеру и другим "тупиковым" устройствам, подключенным к этим коммутаторам.)
Когда сетевой компьютер (ПК, сервер и т. Д.) Хочет отправить трафик на адрес, он должен решить, является ли адрес, который он хочет получить, доступным напрямую (в том же сегменте) или нет (не в том же сегменте, и поэтому должен пройти через роутер, чтобы добраться до нужного сегмента). Для этого компьютер просматривает настроенную маску сети. Маска сети просто сообщает компьютеру, что если адрес, который он хочет получить, имеет те же первые X бит, что и его собственный адрес, то адрес находится в том же сегменте, и компьютер должен связаться с этим адресом напрямую (используя обнаружение соседей ICMPv6). протокол). Если первые биты X не являются общими, то адрес является частью другого блока адресов и находится в другом сегменте, что требует отправки трафика через маршрутизатор, чтобы добраться до нужного сегмента.
С SLAAC, который происходит на одном интерфейсе вашего компьютера с Ubuntu, сетевая маска определяется как 64-битная согласно спецификации протокола. Невозможно получить меньшую часть этого блока сетевой маски / 64 и использовать его в другом интерфейсе и сегменте с SLAAC по двум причинам. Во-первых, SLAAC требует 64-битную маску сети. Если бы вы вырезали меньший блок из 64-битного блока сетевой маски, меньший блок по своей природе не был бы 64-битным блоком сетевой маски, потому что большая сетевая маска означает меньший блок. (Например, 65-битный блок сетевой маски в два раза меньше 64-битного блока сетевой маски). Во-вторых, все другие машины в сети, которые в настоящее время имеют 64-битный блок сетевой маски, объявленный SLAAC, ожидают, что весь блок будет напрямую доступен в этом сегменте, и не ожидают, что ему придется пройти через маршрутизатор, чтобы достичь части этого блок.
Теперь, есть способ обойти это, но не на вашей машине Ubuntu, выступающей в качестве маршрутизатора. Вы можете настроить порты на машине с Ubuntu для работы в качестве коммутатора, прозрачно передавая трафик между портами, не изменяя его. При этом ваша машина получит новый интерфейс, который будет действовать так, как если бы он был подключен к третьему порту этого виртуального коммутатора. Это позволит вам получить любую конфигурацию, в которой вы нуждаетесь (включая SLAAC), на свой компьютер с Ubuntu и предоставить ему доступ к сети, при этом позволяя трафику проходить нетронутым между двумя физическими интерфейсами на вашей машине. Это делает так, чтобы ваша машина и две сети на ее физическом интерфейсе стали одним и тем же сегментом (потому что ваша машина выполняет работу коммутатора).
Для этого вам нужно будет установить мост. Вы хотите установить bridge-utils
пакет. Затем вы захотите удалить все адреса / конфигурацию из вашего текущего физического интерфейса. Тогда вам захочется сделать:
brctl addbr br0
brctl addif br0 intefacename1
brctl addif br0 intefacename2
ifconfig br0 up
ifconfig intefacename1 up
ifconfig intefacename2 up
и затем добавьте любую конфигурацию, которая вам нужна на физическом интерфейсе, к новому интерфейсу br0. Возможно, вы захотите взглянуть на https://wiki.debian.org/BridgeNetworkConnections и https://wiki.debian.org/NetworkConfiguration для получения более подробной информации (особенно о том, как применить конфигурацию при перезагрузке в /etc/ сеть / интерфейсы).