使用 Raspberry Pi 作为网络的 IPv6 路由器

whi*_*s75 6 networking ufw ipv6 raspberry-pi radvd

我已经成功地使用 tunnelbroker.net 为我的 Raspberry Pi 设置了 IPv6。但是,我想分享我在网络中的其他设备中获得的 /64。网络的路由器是Virgin Media Super Hub (VMDG480),不支持IPv6。

这是我用于 Raspberry Pi 的 /etc/network/interfaces:

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
Run Code Online (Sandbox Code Playgroud)

这是我从隧道经纪人那里得到的信息:

 Client IPv6 Address: 2001:470:1f08:4f8::2/64
 Routed /64: 2001:470:1f09:4f8::/64
 Routed /48: 2001:470:6c92::/48
Run Code Online (Sandbox Code Playgroud)

我尝试过使用 radvd、dibbler 和 isc-dhcp-server - 没有人能够为我的网络中的其他计算机提供 IPv6 连接。有人可以帮助阐明这种情况吗?

San*_*ann 6

它的工作方式略有不同:您不共享隧道中的 /64,而是将路由 /48 中的新 /64 用于您的网络。/48 为您提供2001:470: 6c92::/64(即2001:470:6c92:0000::/64)最多2001:470:6c92:ffff::/64. 这为您提供了 65536 个 /64,这通常足以为每个网络提供自己的 /64。

首先,您必须在内核中启用 IPv6 转发,以便您的 Raspberry Pi 充当路由器。将此行添加到/etc/sysctl.conf

net.ipv6.conf.all.forwarding=1
Run Code Online (Sandbox Code Playgroud)

它可能已经在那里,但被注释掉了。

然后你必须在你的eth0接口上配置 IPv6 。添加如下内容:

iface eth0 inet6 static
    address 2001:470:6c92:1::1
    netmask 64
Run Code Online (Sandbox Code Playgroud)

然后配置radvd(Router Advertisement Daemon),以便您的 Raspberry Pi 向本地网络通告 IPv6 可用,并且它将用作默认网关。中的基本配置/etc/radvd.conf将类似于:

interface eth0
{
    AdvSendAdvert on;
    prefix 2001:470:6c92:1::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
    };
};
Run Code Online (Sandbox Code Playgroud)

它宣传它是默认网关,并且其他系统可以自动配置自己。

警告:当您启动radvdLAN 上的所有系统时,将获得 IPv6 地址和 IPv6 默认网关。除非您在 Raspberry Pi 上配置了 IPv6 防火墙,否则所有系统都将直接连接到 IPv6 互联网。请确保他们的配置可以安全地运行,或者在启用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
Run Code Online (Sandbox Code Playgroud)

要更改此行/etc/default/ufw

DEFAULT_FORWARD_POLICY="DROP"
Run Code Online (Sandbox Code Playgroud)

并将以下几行添加到/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
Run Code Online (Sandbox Code Playgroud)