设置主要 IPv6 地址

设置主要 IPv6 地址

我的一台服务器 (Ubuntu 12.04) 有 /64 个 IPv6 地址可用。我像这样绑定它们:

auto eth0
    iface eth0 inet static
    address xxx.xxx.xxx.82
    netmask 255.255.255.248
    network xxx.xxx.xxx.80
    broadcast xxx.xxx.xxx.255
    gateway xxx.xxx.xxx.81

    iface eth0 inet6 static
    address xxxx::2
    netmask 64
    gateway xxxx::1

    pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/autoconf
    pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
    pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra_defrtr
    pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra_pinfo
    pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra_rtr_pref

    up /sbin/ifconfig eth0 inet6 add xxxx::3/64
    # ... snip ...
    up /sbin/ifconfig eth0 inet6 add xxxx::25/64

这有效,但xxxx::25除非另有明确说明,否则所有应用程序都会使用 来处理其传出请求。如果我添加xxxx::26我的/etc/network/interfaces,它们都会开始使用它。似乎它们只是使用最高数字。

如何指定某个地址作为默认地址?就我而言,我恰好想使用最低地址 ( xxxx::2),但如果将来有需要,我真的很想知道如何指定特定地址。

答案1

您可以通过修改默认路由来解决这个问题。Linux 中的每个路由都有指定默认源地址的选项。如果您在路由中指定 xxxx::3 地址,则默认情况下将使用该地址:

/sbin/ip -6 route del default
/sbin/ip -6 route add default via xxxx::1 src xxxx::3

如果你显示路由表,你会看到结果:

/sbin/ip -6 route
default via xxxx::1 dev eth0  src xxxx::222  metric 1024

需要注意的一点是,在执行重复地址检测之前,IPv6 地址处于暂定状态。Linux 将拒绝使用暂定地址作为默认源地址。这意味着您可能需要在sleep添加此路由之前添加一个简短的地址,以便地址有时间脱离暂定状态并变得可用。

相关内容