我正在运行 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.62
和95.211.38.126
属于同一个路由器,则只需添加其中一个作为“网关”就足够了。
(如果它们实际上是不同的路由器,情况就会变得更加复杂。据我所知,Linux 没有直接地支持多宿主系统,除非您通过和多个路由表设置策略路由ip rule
,每个源子网一个规则 + 一个表。
另外,建议:
- 不要指定
broadcast
或network
,系统可以根据网络掩码计算它们。 - 不要使用
eth0:x
别名,只需将额外的地址直接添加到 eth0。 netmask
netmask 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 地址是小写且压缩的。