Я создаю хост виртуализации и хочу, чтобы мои виртуальные машины были доступны через IP-адрес v4 и v6.
У моего хоста (Xen 4.1.3 с Debian Wheezy в dom0) есть один физический интерфейс eth0:
10.0.0.2/30 dev eth0
default via 10.0.0.1
2000:1111:1111:11111::2/64 dev eth0
default via 2000:1111:1111:11111::1 (aka fe80::1)
Мой интернет-провайдер назначил мне 10.100.0.0/28
Диапазон IPv4, статически маршрутизируемый через 10.0.0.2
.
На хосте я построил интерфейс виртуального моста xenbr0:
10.100.0.1/28 dev xenbr0
На каждой гостевой ВМ я установил любой из неиспользуемых адресов из 10.100.0.0/28
, то есть:
10.100.0.2/28 dev eth0
default via 10.100.0.1
Как и ожидалось (поскольку хост действует как классический маршрутизатор), виртуальные машины могут без проблем общаться с Интернетом v4.
Вот тут-то и проявляется мой недостаток опыта работы с IPv6. Насколько я понимаю, адреса v6 маршрутизируются примерно так же, как и их аналоги v4, а это означает, что то, что я хочу достичь, невозможно только с одним диапазоном / 64 (по крайней мере, в то время как eth0 и v6 gw настроены так, как они есть).
Можно ли использовать один диапазон IPv6 / 64, чтобы виртуальные машины могли иметь статические IPv6-адреса, не обращаясь к моему интернет-провайдеру за другим диапазоном / 64, который (я думаю) должен быть статически маршрутизирован через 2000:1111:1111:11111::2
?
Я попытался «разделить» эту сеть / 64 на две сети / 65, а затем перенастроить xenbr0 следующим образом:
2000:1111:1111:11111:8000:2/65 dev xenbr0
Также перенастроен eth0 (изменился только размер сети с 64 на 65):
2000:1111:1111:11111::2/65 dev eth0
default via 2000:1111:1111:11111::1
Хост не потерял возможность подключения по IPv6. Однако гостевые виртуальные машины не могли связаться с чем-либо за пределами хоста при такой настройке:
2000:1111:1111:11111:8000::2/65 dev eth0
default via 2000:1111:1111:11111:8000::1
Есть идеи, как действовать?
Получение большего блока адресов от вашего провайдера - правильное решение. Для IPv6 вполне нормально дать клиенту /56
или /48
, что соответствует 256 или 65536 подсетям. В IPv6 всегда есть много адресов! :-)
Тем не менее, есть еще много людей, использующих сети IPv6 с менталитетом IPv4, и они стараются давать как можно меньше своим клиентам, думая, что «A / 64 содержит так много адресов, для этого будет более чем достаточно». И тогда вы сталкиваетесь с проблемами, когда вам нужно несколько подсетей ... Сетевым операторам и поставщикам услуг придется изменить свое мышление и всегда предоставлять большие блоки (большие, например /56
или /48
, вы не хотите запрашивать их для каждой дополнительной подсети) для клиентов, которые хотят их использовать.
Запуск сетей IPv6 может стать настолько простым, если люди начнут использовать огромное количество адресного пространства, которое они предоставляют. Больше не нужно планировать, запрашивать дополнительные адреса и т. Д. Просто:
/56
, а /48
должно быть по умолчанию для бизнес-клиентов./64
для каждой подсети. Это будет больше, чем вам когда-либо понадобится, и так оно и должно быть./64
, хотя вы можете настроить /127
чтобы избежать проблем с кешем ND.Все это значительно упрощает ваше планирование и операции, если вы привыкнете к огромным цифрам, которые внезапно становятся доступными :)