Использование Raspberry Pi в качестве маршрутизатора IPv6 для сети
Мне удалось настроить IPv6 для моего Raspberry Pi с tunnelbroker.net. Тем не менее, я хотел бы поделиться /64, что я получил среди других устройств в моей сети. Маршрутизатор сети является Virgin Media Super Hub (VMDG480) и не поддерживает IPv6.
Вот мой /etc/network/interfaces для Raspberry Pi:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.3
gateway 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:470:1f09:4f8::2
netmask 64
endpoint 216.66.80.26
local 192.168.0.3
ttl 255
gateway 2001:470:1f08:4f8::1
Вот информация, которую я получил от tunnelbroker:
Client IPv6 Address: 2001:470:1f08:4f8::2/64
Routed /64: 2001:470:1f09:4f8::/64
Routed /48: 2001:470:6c92::/48
Я пытался использовать radvd, dibbler и isc-dhcp-server - ни один из них не смог предоставить другим компьютерам в моей сети возможность подключения IPv6. Может ли кто-нибудь помочь пролить свет на ситуацию?
2 ответа
Он работает немного по-другому: вы не разделяете /64 из туннеля, вы используете новые /64 из маршрутизируемого /48 для своих сетей. /48 дает вам 2001:470: 6c92::/64
(который 2001:470:6c92:0000::/64
) вплоть до 2001:470:6c92:ffff::/64
, Это дает вам 65536 /64s, чего обычно достаточно, чтобы дать каждой сети свою /64.
Сначала вам нужно будет включить пересылку IPv6 в вашем ядре, чтобы Raspberry Pi выступал в роли маршрутизатора. Добавить эту строку в /etc/sysctl.conf
:
net.ipv6.conf.all.forwarding=1
Это, вероятно, уже там, но закомментировано.
Тогда вам придется настроить IPv6 на вашем eth0
интерфейс. Добавить что-то вроде:
iface eth0 inet6 static
address 2001:470:6c92:1::1
netmask 64
Затем вы настраиваете radvd
(Router Advertising Daemon), чтобы Raspberry Pi объявлял в локальной сети, что IPv6 доступен, и будет функционировать как шлюз по умолчанию. Базовая конфигурация в /etc/radvd.conf
будет что-то вроде:
interface eth0
{
AdvSendAdvert on;
prefix 2001:470:6c92:1::/64
{
AdvOnLink on;
AdvAutonomous on;
};
};
Он объявляет, что это шлюз по умолчанию и что другие системы могут автоматически настраивать себя.
Предупреждение: момент, когда вы начинаете radvd
все системы в вашей локальной сети получат адреса IPv6 и шлюз по умолчанию IPv6. Если вы не настроили брандмауэр IPv6 на Raspberry Pi, все системы будут напрямую подключены к Интернету IPv6. Пожалуйста, убедитесь, что их конфигурации безопасны для работы, или настройте брандмауэр IPv6 на Raspberry Pi перед включением radvd
,
Если вы хотите, чтобы только Raspberry Pi для подключения к IPv6 использовали только определенные системы , не запускайте radvd
, Вместо этого просто настройте IPv6 вручную в этих системах. Используйте адрес от 2001:470:6c8b:1::/64
Адрес со всеми нулями - это подсеть-маршрутизатор, любой адрес приведения по соглашению, хотя я почти никогда не видел, чтобы это использовалось на практике. Адрес 2001:470:6c92:1::1
был использован для Raspberry Pi, так что вы можете использовать что-нибудь из 2001:470:6c92:1::2
знак равно 2001:0470:6c92:0001:0000:0000:0000:0002
) чтобы 2001:470:6c92:1:ffff:ffff:ffff:ffff
, конфигурировать 2001:470:6c92:1::1
в качестве шлюза по умолчанию, и вы должны быть в сети:)
На https://wiki.ubuntu.com/IPv6#Configure_your_Ubuntu_box_as_a_IPv6_router есть также несколько советов, которые могут быть применимы к вашей конфигурации. Посмотрите на раздел "UFW и маршрутизация". Это в основном говорит вам добавить следующие строки в /etc/ufw/sysctl.conf
:
net/ipv6/conf/default/forwarding=1
net/ipv6/conf/all/forwarding=1
Чтобы изменить эту строку в /etc/default/ufw
:
DEFAULT_FORWARD_POLICY="DROP"
И добавить следующие строки в /etc/ufw/before6.rules
:
-A ufw6-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw6-before-forward -i eth0 -o he-ipv6 -m conntrack --ctstate NEW -j ACCEPT
Я должен был добавить ipv6
в /etc/modules
во-первых, чтобы включить ipv6. Возможно, это помогает и другим.