我想使用 USB 电缆将一台 PC 与另一台运行 Linux 的设备连接起来(通过 USB 以太网,两个节点直接通过电缆连接)。
以下内容适用于 IPv4。
#PC :
sudo ifconfig ens32u2u2c2 192.168.1.100 netmask 255.255.255.0
#Device :
ifconfig usb0 192.168.1.101 netmask 255.255.255.0
由于这是可行的(两个节点可以互相 ping 通),我认为 IPv6 会很简单,但以下操作不起作用:
#PC :
sudo ifconfig ens32u2u2c2 inet6 add 0e::12
# result : inet6 e::12 prefixlen 128 scopeid 0x0<global>
#Device :
ifconfig usb0 e::13/128
# result : inet6 addr: e::13/128 Scope:Global
ifconfig usb0
虽然在使用和检查时两个地址似乎都已设置ifconfig ens32u2u2c2
,但我无法从 PC ping 该设备,也无法从设备 ping 该 PC,但这在 IPv4 中可以工作。
知道为什么吗?
答案1
您的配置没有为设备提供任何相互的路由。
在 IPv4 中,您要添加具有 /24 子网(掩码 255.255.255.0)的地址。这会告诉设备,此 /24 中的所有其他地址(整个 0…255)都可在此接口上直接访问。
在 IPv6 中,您要添加具有 /128 子网的地址(在 IPv4 上相当于使用 /32 或 255.255.255.255)。这指定一个子网,该子网只有一个主机(本身),因此它不会生成告诉它如何到达另一台主机的路由。
你需要:
a)使用较短的子网掩码配置地址,例如
/64
对于以太网来说是传统的,或者/126
对于/127
包含两个主机的链接来说是很常见的。ip addr add e::12/64 dev ens32u2u2c2
(这将自动生成 e::/64 路线。)
或者 b)手动添加通向另一台主机的路由:
ip route add e::13 dev ens32u2u2c2