将 IPv6 地址添加到现有 IPv4 接口不起作用

Rog*_*ist 2 networking debian ipv6 ipv4

可能是一个简单的答案,但我似乎找不到它。我正在运行一个多宿主 Debian Stable(最新)并且在接口 eth1 上我需要 IPv4 和 IPv6 地址。我的 /etc/network/interfaces 看起来像这样:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1
        up ip -6 address add 2001:470:28:5b2::1/64 dev $IFACE
Run Code Online (Sandbox Code Playgroud)

问题是接口只被分配了 IPv4 地址,而不是 IPv6 地址。我错过了什么?

运行ifup -av 时

g00nz@debie:~$ sudo ifup -av
[sudo] password for g00nz:
run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
Configuring interface eth1=eth1 (inet)
run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
ip addr add 192.168.1.2/255.255.255.0 broadcast 192.168.1.255     dev eth1 label eth1
RTNETLINK answers: File exists
Failed to bring up eth1.
run-parts --exit-on-error --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/avahi-daemon
run-parts: executing /etc/network/if-up.d/mountnfs
run-parts: executing /etc/network/if-up.d/openssh-server
run-parts: executing /etc/network/if-up.d/upstart
run-parts: executing /etc/network/if-up.d/wpasupplicant
Run Code Online (Sandbox Code Playgroud)

似乎已经配置了 eth1,我无法添加 IPv6 地址,但是当我从 bashprompt 执行它时,它可以工作:

sudo ip -6 addr add 2001:470:28:5b2::1/64 dev eth1
Run Code Online (Sandbox Code Playgroud)

并检查ifconfig eth1

g00nz@debie:~$ sudo ip -6 addr add 2001:470:28:5b2::1/64 dev eth1
g00nz@debie:~$ sudo ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:24:9b:08:4b:aa
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2001:470:28:5b2::1/64 Scope:Global
          inet6 addr: fe80::224:9bff:fe08:4baa/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4254 errors:0 dropped:2080 overruns:0 frame:0
          TX packets:305 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:469773 (458.7 KiB)  TX bytes:45395 (44.3 KiB)
Run Code Online (Sandbox Code Playgroud)

任何人?:(

/罗杰


好的,试试这个,现在在我的 /etc/network/interfaces 中得到这个:

auto eth1
iface eth1 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1

iface eth1 inet6 static
        address 2001:470:28:5b2::1
        netmask 64
Run Code Online (Sandbox Code Playgroud)

但是,当我使用ip a检查时,我有:

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:24:9b:08:4b:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::224:9bff:fe08:4baa/64 scope link
       valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)

我不坚持:(

ifup 仍然出错:

g00nz@debie:~$ sudo ifup -av
[sudo] password for g00nz:
run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
Configuring interface eth1=eth1 (inet)
run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant
ip addr add 192.168.1.2/255.255.255.0 broadcast 192.168.1.255     dev eth1     label eth1
RTNETLINK answers: File exists
Failed to bring up eth1.
run-parts --exit-on-error --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/avahi-daemon
run-parts: executing /etc/network/if-up.d/mountnfs
run-parts: executing /etc/network/if-up.d/openssh-server
run-parts: executing /etc/network/if-up.d/upstart
run-parts: executing /etc/network/if-up.d/wpasupplicant
g00nz@debie:~$
Run Code Online (Sandbox Code Playgroud)

小智 11

ifup可能无法运行,因为该接口已经具有 IPv4 地址并且无法添加两次。它甚至不会到达 IPv6 线路。如果可以,您应该关闭接口以便删除所有地址,然后重新打开它。

配置 IPv6 应该以不同的方式完成:

auto eth1
iface eth1 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1

iface eth1 inet6 static
    address 2001:470:28:5b2::1
    netmask 64
Run Code Online (Sandbox Code Playgroud)

如果需要,您还可以添加网关。

PS:好像很多人不知道,不过你也可以用netmask 24for IPv4。你不必拼写出来netmask 255.255.255.0

  • 您也可以在地址中指定网络掩码作为后缀:`address 192.168.1.2/24` (3认同)