我的系统上安装了 Oracle Solaris 11.3。我已将网络配置文件更改为DefaultFixed
.之后,我通过以下命令将 IP 分配给 NIC 接口:
# ipadm create-addr -T dhcp net0/v4
# ipadm create-addr -T static -a 172.21.67.40 net1/v4
到目前为止一切都很好:
root@DellPowerEdge:~# ipadm
NAME CLASS/TYPE STATE UNDER ADDR
lo0 loopback ok -- --
lo0/v4 static ok -- 127.0.0.1/8
lo0/v6 static ok -- ::1/128
net0 ip ok -- --
net0/v4 dhcp ok -- 172.21.67.37/24
net1 ip ok -- --
net1/v4 static ok -- 172.21.67.40/16
我尝试了以下命令:
# ipadm create-addr -T dhcp net0/addr
# ipadm create-addr -T dhcp net1/addr
现在,它向我显示一个接口的两个不同的 IP,如下所示:
root@DellPowerEdge:~# ipadm
NAME CLASS/TYPE STATE UNDER ADDR
lo0 loopback ok -- --
lo0/v4 static ok -- 127.0.0.1/8
lo0/v6 static ok -- ::1/128
net0 ip ok -- --
net0/addr dhcp ok -- 172.21.67.97/24
net0/v4 dhcp ok -- 172.21.67.37/24
net1 ip ok -- --
net1/addr dhcp ok -- 172.21.67.47/24
net1/v4 static ok -- 172.21.67.40/16
所有这些IP都是可以访问的。
如何将不同的 IP 分配给单个 NIC 接口?这是预期的行为吗?net0/v4
和有什么区别net0/addr
答案1
net0
是一个接口,net0/addr
&net0/v4
是地址对象。您可能有多个addrobj
与同一第 2 层(数据链路)网络接口关联。
从Oracle Solaris 管理:网络接口和网络虚拟化:
地址
指定系统中使用的唯一 IP 地址或地址集的标识符。地址可以是 IPv4 或 IPv6 类型。
标识符使用以下格式: 接口/用户指定的字符串。
这界面指分配地址的IP接口。接口变量必须反映配置 IP 接口的数据链路的名称。
用户指定的字符串指以字母开头且最大长度为 32 个字符的字母数字字符的字符串。随后,当您使用任何管理系统中地址的 ipadm 子命令(例如 ipadm show-addr 或 ipadm delete-addr)时,您可以引用 addrobj 而不是数字 IP 地址。
答案2
这是一条评论,但被标记为太长,因此将其放入答案槽中。
虽然我不建议在同一个网卡上使用同一个子网,因为它不会给你买任何东西。即使在同一链路上使用 VNIC 也不会带来更多好处,除非您想要控制或监视 IP/链路。
不确定它是否有帮助,但您可能还需要考虑设置严格多宿主来帮助路由:对于作为其他域网关的系统(例如防火墙或 VPN 节点),请使用此过程打开严格多宿主。 hostmodel 属性通过 控制多宿主系统上 IP 数据包的发送和接收行为ipadm
。
验证当前值并记下可能的值:
ipadm show-prop -p hostmodel ip