Я получил от поставщика сервера собственную подсеть IPv6 / 64, но не могу заставить ее играть так, как я хочу.
Я использую виртуальные машины и хочу, чтобы у них были свои публичные IP-адреса.
Представим, что я получил следующую информацию:
IP-адреса: 1: 1: 1: 1 :: / 64, шлюз: 1: 1: 1: 0 :: 1
Теперь я хочу, чтобы у хост-машины был ip 1: 1: 1: 1 :: 1, а остальное маршрутизировалось с eth0 на внутренний br0, где все виртуальные машины соединены мостом.
Можно выполнить ping6 ipv6.google.com с корневого компьютера, так что пока вроде работает.
Я включил маршрутизацию, и кажется, что пакеты правильно пересылаются с внутренней машины (с br0) через eth0 - но не более того ... нет ответа.
Обратите внимание, что eth0 не является частью br0.
Любые идеи?
Если ваш провайдер действительно маршруты ваша подсеть к вашему хосту, вам нужно будет настроить свой хост так, чтобы он проксировал обнаружение окрестностей ICMPv6 (ND) для IP-адресов ваших гостей.
Предполагая, что вам назначили 2001:0DB8:A::/64
, ваш хост 2001:0DB8:A::1
на eth0
, а ваша гостевая виртуальная машина использует 2001:0DB8:A::2
(на виртуальном мосту br0
). Чтобы сообщить вашему хосту, что нужно проксировать запросы ND, введите следующую команду:
ip -6 neigh add proxy 2001:0DB8:A::2 dev eth0
Также убедитесь, что для IPv6 включены перенаправление и прокси ND:
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.proxy_ndp=1
В гостевой системе вы либо используете локальный адрес ссылки хоста на br0
как шлюз по умолчанию. Или вы добавляете дополнительный IP на br0
интерфейс на хосте и использовать его в качестве шлюза по умолчанию для гостей.
Если вы получили собственный / 64 от провайдера туннеля или интернет-провайдера, вы можете без проблем перенаправить его в Интернет IPv6. Для этого вам также не понадобится прокси-сервер NDP. Большинство виртуальных машин, включая VirtualBox и VMware Workstation / Player, позволяют хосту создавать частную сеть без мостов и маршрутизации через NAT к локальной сети хоста. Предполагая, что вы используете VirtualBox в Linux, вы можете создать новую сеть только для хоста в разделе «Настройки» -> «Сеть». Вероятно, он получит имя вроде vboxnet1
. Вы можете игнорировать любые настройки IPv4 и оставить DHCP отключенным. Затем выберите выберите сеть только для хоста и vboxnet1
под сетевым адаптером вашей виртуальной машины. Вы можете создать новый сетевой адаптер, если хотите сохранить существующий адаптер для IPv4. Теперь вы сможете использовать свой хост-компьютер как обычный старый маршрутизатор IPv6. Вам нужно будет настроить radvd для рекламы префикса на vboxnet1
и включите пересылку IPv6 в /etc/sysctl.conf
. Это net.ipv6.conf.all.forward=1
. Вы также захотите назначить статический IPv6-адрес для vboxnet1
из той же сети / 64. Однако важно, чтобы вы не назначали адрес из этой сети / 64 другому адаптеру на хосте, иначе он не будет знать, как правильно маршрутизировать.