在启动过程中添加辅助 IPv6 失败

在启动过程中添加辅助 IPv6 失败

我正在运行 Debian Jessie 系统,最新更新稳定,但我遇到的问题是,启动服务器时第二个 IPv6 地址未添加到接口。

这是我的/etc/网络/接口

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 95.211.38.42
        netmask 255.255.255.224
        network 95.211.38.32
        broadcast 95.211.38.63
        gateway 95.211.38.62

auto eth0:1
iface eth0:1 inet static
        address 95.211.38.106
        netmask 255.255.255.224
        network 95.211.38.96
        broadcast 95.211.38.127
        gateway 95.211.38.126


# --- IPv6 ---

iface eth0 inet6 static
        address 2001:1AF8:4100:A061:0001:0000:0000:1337
        netmask 64
        gateway 2001:1AF8:4100:A061:0000:0000:0000:0001

#       up /sbin/ifconfig eth0 inet6 add 2001:1AF8:4100:A061:0001:0000:0000:4000/64
#       down /sbin/ifconfig eth0 inet6 del 2001:1AF8:4100:A061:0001:0000:0000:4000/64
        up ip addr add 2001:1AF8:4100:A061:0001:0000:0000:4000 dev eth0
        down ip addr del 2001:1AF8:4100:A061:0001:0000:0000:4000 dev eth0

服务器启动后,IPv6 ...:4000 已关闭。但是当我手动运行“up ip ...”时,IPv6 ...:4000 又恢复正常。

我也尝试过下列的但它也不起作用

iface eth0 inet6 static
        address 2001:1AF8:4100:A061:0001:0000:0000:1337
        netmask 64
        gateway 2001:1AF8:4100:A061:0000:0000:0000:0001

iface eth0:1 inet6 static
        address 2001:1AF8:4100:A061:0001:0000:0000:4000
        netmask 64
        gateway 2001:1AF8:4100:A061:0000:0000:0000:0001

我能做些什么?

启动过程中的以下日志条目有用吗?

$ cat /var/log/syslog | grep eth0
Jan 12 11:13:01 viathinksoft vmunix: [    1.767095] tg3 0000:20:00.0 eth0: Tigon3 [partno(BCM95723) rev 5784100] (PCI Express) MAC address 78:e3:b5:fc:7f:22
Jan 12 11:13:01 viathinksoft vmunix: [    1.767098] tg3 0000:20:00.0 eth0: attached PHY is 5784 (10/100/1000Base-T Ethernet) (WireSpeed[1], EEE[0])
Jan 12 11:13:01 viathinksoft vmunix: [    1.767100] tg3 0000:20:00.0 eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[1] TSOcap[1]
Jan 12 11:13:01 viathinksoft vmunix: [    1.767102] tg3 0000:20:00.0 eth0: dma_rwctrl[76180000] dma_mask[64-bit]
Jan 12 11:13:01 viathinksoft vmunix: [   10.842932] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Jan 12 11:13:01 viathinksoft vmunix: [   13.308203] tg3 0000:20:00.0 eth0: Link is up at 1000 Mbps, full duplex
Jan 12 11:13:01 viathinksoft vmunix: [   13.308214] tg3 0000:20:00.0 eth0: Flow control is on for TX and on for RX
Jan 12 11:13:01 viathinksoft vmunix: [   13.308236] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Jan 12 11:13:01 viathinksoft vmunix: [   24.203446] device eth0 entered promiscuous mode

答案1

我认为问题在于您尝试指定两个网关。Linux 不允许添加两个同样特定的路由(相同的前缀、相同的度量),因此ifup在配置 eth0:1 inet 时会出错,并立即放弃。

RTNETLINK answers: File exists
Failed to bring up eth0.

如果95.211.38.6295.211.38.126属于同一个路由器,则只需添加其中一个作为“网关”就足够了。

(如果它们实际上是不同的路由器,情况就会变得更加复杂。据我所知,Linux 没有直接地支持多宿主系统,除非您通过和多个路由表设置策略路由ip rule,每个源子网一个规则 + 一个表。

另外,建议:

  • 不要指定broadcastnetwork,系统可以根据网络掩码计算它们。
  • 不要使用eth0:x别名,只需将额外的地址直接添加到 eth0。
  • netmasknetmask 27可以,但是说或 更简短address 95.211.38.42/27

下面的配置应该可以工作:

/etc/network/interfaces 配置文件
自动 eth0

iface eth0 inet 静态
        地址 95.211.38.42/27
        网关 95.211.38.62

iface eth0 inet 静态
        地址 95.211.38.106/27

iface eth0 inet6 静态
        地址 2001:1af8:4100:a061:1::1337/64
        网关 2001:1af8:4100:a061::1

iface eth0 inet6 静态
        地址 2001:1af8:4100:a061:1::4000/64

(这规范形式IPv6 地址是小写且压缩的。

相关内容