У меня есть диапазон доступных IPv6-адресов (родных), и я хочу их использовать. Я настроил ядро на поддержку ipv6 и установил необходимые инструменты (iproute2 и т. Д.).
У меня проблема с пониманием того, как на самом деле добавить диапазон, чтобы сервер мог его использовать. Нужно ли настраивать каждую отдельно или можно добавить весь диапазон?
Кроме того, после того, как я перекомпилирую программы для поддержки ipv6 (Gentoo), существует ли ожидаемая стратегия, на которой IP они будут использовать для исходящих соединений (при условии, что на другом конце включен ipv6)? Случайно, первое, совсем другое?
Ответ, опубликованный @NathanC, не совсем точен.
Есть два способа заставить Linux обрабатывать IP-адреса как локально назначенные:
Традиционный способ, при котором вы добавляете каждый адрес с его подсетью - это самый простой способ сделать что-то, если это адрес onlink. ip addr add 2001:db8::1/64
- добавляет один IP.
Добавьте маршрут, который рассматривает подсеть как «локальную». ip rou add local 2001:db8::/64 dev lo
Предостережение к 2. заключается в том, что вы не можете привязать программы к определенным IP-адресам в пределах локального маршрута, и вместо этого они должны прослушивать неуказанный адрес (::
) для приема трафика по локальному маршруту и требует использования Linux 2.6.37 или новее.
2. Чтобы заставить работать, подсеть должна быть направлена к машине, вы можете сделать proxy_nd, чтобы она работала, но это ужасная идея, если будет использоваться много адресов. На самом деле это вообще ужасная идея, но, иногда нет никакого способа обойти это, если ваш провайдер не предоставит вам маршрутизируемую подсеть.
Вы должны добавить каждый IP-адрес, который хотите использовать, вручную. Когда приложения взаимодействуют через IPv6, по умолчанию они используют последний адрес назначается, если он не привязан к определенному порту (который зависит от приложения).