Как автоматически настроить маршрут IPv6

Как автоматически настроить маршрут IPv6

Я настроил простой маршрутизатор, который должен обеспечивать подключение IPv6 к машинам, которые находятся в локальной сети за ним. У маршрутизатора есть 2 сетевых интерфейса (eth0, eth1), у машин есть 1 (eth0).

На eth0 роутера есть доступ только к локальной сети, на eth1 есть доступ к интернету. Я настроил все параметры ядра, все работает нормально.

IP маршрутизатора - это fd00::1, я установил dhcpd на маршрутизаторе и настроил диапазон fd00::100 - fd00::fffe.

Когда я запускаю какую-либо машину в этой сети, она получает IP-адрес от DHCPD, например fd00::fffa, но не может получить доступ к Интернету по понятным причинам - отсутствует маршрут.

Когда я добавляю маршрут вручную, sudo route -6 add 2000::/3 gw fd00::1устройство начинает иметь доступ к интернету, пока я его не перезагружу.

Я могу добавить этот маршрут вручную в сценарий инициализации каждой машины, но я бы предпочел, чтобы он был настроен автоматически, чтобы при запуске машины в этой сети она получала доступ к Интернету IPv6 без необходимости в чем-либо еще.

Следуя некоторым предложениям, я также установил radvd на маршрутизатор и вставил эту опцию:

route 2000::/3 {};

Скорее всего, это неправильно, но я не смог найти никакой документации или примеров. Это не работает. Использование radvd вместо dhcpd для назначения адресов IPv6 вообще не работает, если я отключаю dhcpd, машины автоматически настраивают какие-то случайные адреса IPv6 и даже не видят друг друга, и не могут пинговать маршрутизатор.

Как настроить локальную сеть на автоматическую настройку IPv6 для всех машин в ней?

Примечание: мне это не нужно, я хочу, чтобы на каждой машине был публичный IPv6, NAT вполне подойдет.

решение1

Я сразу замечаю две проблемы в вашей конфигурации. Адреса RFC 4193 не маршрутизируются глобально. Это означает, что эти адреса не смогут общаться с внешним миром.

Конечно, вы можете использовать NAT, но известно, что NAT вызывает множество проблем. NAT — это обходной путь, призванный временно устранить нехватку IP-адресов. IPv6 решает эту проблему. Все остальные проблемы, которые люди пытались решить с помощью NAT, имеют лучшее решение, которое не включает NAT.

Кроме того, ваш префикс явно не был сгенерирован в соответствии со спецификацией RFC 4193. Соответствующая цитата:

Локально назначенные глобальные идентификаторы ДОЛЖНЫ быть сгенерированы с помощью псевдослучайного алгоритма.

Мешают ли эти две проблемы в конфигурации сети клиентам общаться с внешним миром, вы узнаете только путем тестирования. Существует программное обеспечение, которое пытается обнаружить неоптимальную конфигурацию IPv6 и полностью избежать использования IPv6, если таковая обнаружена. Вполне вероятно, что некоторое клиентское программное обеспечение откажется использовать соединение IPv6 в вашей настройке.

Тем не менее, не невозможно заставить клиентов общаться извне, используя адреса RFC 4193. Вот radvd.confфайл, который я использовал в прошлом. С этой конфигурацией некоторые клиенты пытались общаться извне, используя назначенные им адреса RFC 4193.

interface wlan0 { 
        AdvSendAdvert on;
        MinRtrAdvInterval 3; 
        MaxRtrAdvInterval 10;
        prefix fdbd:5df9:dca3::/64 { 
                AdvOnLink on;
                AdvAutonomous on; 
                AdvRouterAddr on; 
        };
};

Однако эта конфигурация работает не со всеми клиентами. Я снова протестировал ее с клиентом под управлением Android. Телефон получил настроенный адрес IPv6, но не пытался использовать IPv6 для внешней связи.

Затем я изменил префикс на 2001:db8:dca3::/64, и в этот момент телефон начал отправлять пакеты IPv6 на шлюз. Так что Android — это один из примеров платформы, которая отказывается использовать адреса RFC 4193 таким образом.

Связанный контент