在 CentOS 7 中配置子接口可以用于实现虚拟化网络或者分割一个物理网络接口成多个逻辑接口,以实现不同的网络分割或 VLAN 支持。以下是在 CentOS 7 中配置子接口的一般步骤:
打开终端:首先,通过 SSH 或直接登录到 CentOS 7 服务器的终端。
编辑网络配置文件:使用文本编辑器(如 vim 或 nano)编辑网络配置文件,通常位于 /etc/sysconfig/network-scripts/
目录下。你需要找到你要创建子接口的物理接口的配置文件,通常以类似 ifcfg-enp0sX
的文件名存在,其中 enp0sX
是你的物理接口名称。
sudo vim /etc/sysconfig/network-scripts/ifcfg-enp0sX
ifcfg-enp0sX:Y
的格式,其中 Y
是子接口的标识符。sudo cp /etc/sysconfig/network-scripts/ifcfg-enp0sX /etc/sysconfig/network-scripts/ifcfg-enp0sX:Y
编辑子接口配置文件:使用文本编辑器编辑新创建的子接口配置文件。确保进行以下配置更改:
DEVICE
为子接口的名称,例如 DEVICE=enp0sX:Y
。示例子接口配置文件:
DEVICE=enp0sX:Y
BOOTPROTO=static
IPADDR=子接口的IP地址
NETMASK=子网掩码
ONBOOT=yes
sudo systemctl restart network
ifconfig
或 ip a
命令来验证新的子接口是否已经创建并且正在运行。你应该能够看到子接口的信息。ifconfig enp0sX:Y
现在,你已经成功配置了子接口。你可以将其用于不同的网络分割或 VLAN 支持,根据你的需求进行进一步配置。请确保在实际配置中替换实际的接口名称、IP 地址和子网掩码等信息。
在子接口的配置文件中,你可以添加 VLAN 信息。这需要你编辑子接口的配置文件以包括 VLAN 标签信息。以下是如何在子接口配置文件中添加 VLAN 信息的步骤:
打开终端并登录到 CentOS 7 服务器。
编辑子接口的配置文件,通常位于 /etc/sysconfig/network-scripts/
目录下,文件名格式为 ifcfg-enp0sX:Y
(根据你的子接口名称)。
sudo vim /etc/sysconfig/network-scripts/ifcfg-enp0sX:Y
VLAN
标签信息。你可以使用 VLAN
参数来指定 VLAN ID。示例 VLAN 子接口配置文件 (ifcfg-enp0sX:Y
),假设 VLAN ID 为 100:
DEVICE=enp0sX:Y
BOOTPROTO=static
IPADDR=子接口的IP地址
NETMASK=子网掩码
GATEWAY=网关IP地址
ONBOOT=yes
VLAN=yes
VLAN_ID=100
在上述配置中,VLAN_ID
参数指定了 VLAN 的 ID,而 VLAN
参数设置为 yes
以启用 VLAN。
保存并关闭配置文件。
重启网络服务以应用更改:
sudo systemctl restart network
现在,你已经成功在子接口配置文件中添加了 VLAN 信息。这将使子接口成为一个 VLAN 子接口,允许你在 CentOS 7 中实现 VLAN 分隔。请确保在实际配置中替换实际的接口名称、IP 地址、子网掩码、网关和 VLAN ID 等信息。
enp0sX:Y 可以写成 enp0sX.Y 这种方式吗?
在 CentOS 7 中,子接口的命名通常使用冒号 :
来分隔物理接口和子接口的标识符,例如 enp0sX:Y
。这是一种常见的命名约定,它用于表示物理接口 enp0sX
的第 Y
个子接口。这种命名方式在大多数 Linux 系统中都是标准的。
如果你希望使用点 .
来分隔物理接口和子接口的标识符,例如 enp0sX.Y
,你可以尝试,但请注意这可能不被所有网络配置工具和脚本支持。使用冒号 :
通常是更广泛接受的标准方式,因为它与 VLAN 标签的命名方式一致。
总之,虽然 enp0sX:Y
是标准的子接口命名方式,但你可以尝试使用 enp0sX.Y
,只需确保在配置文件中保持一致性,并在实际使用中进行测试和验证,以确保其正常工作。
#示例1
sudo ip link add link enp0sX name enp0sX.Y type vlan id Y
#示例2
sudo vim /etc/sysconfig/network-scripts/ifcfg-enp0sX.Y
DEVICE=enp0sX.Y
BOOTPROTO=static
IPADDR=子接口的IP地址
NETMASK=子网掩码
GATEWAY=网关IP地址
ONBOOT=yes
注意
在CentOS7中NetworkManager对网络的管理不是很友好,建议禁用NetworkManager服务通过network服务进行网络管理
[root@-compute-zyq ~]# ip a | grep bond
2: eno1: mtu 9000 qdisc mq master bond1 state UP group default qlen 1000
3: eno2: mtu 9000 qdisc mq master bond2 state UP group default qlen 1000
4: eno3: mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
5: eno4: mtu 1500 qdisc mq master bond0 state UP group default qlen 1000
6: ens4f0: mtu 9000 qdisc mq master bond1 state UP group default qlen 1000
7: ens4f1: mtu 9000 qdisc mq master bond2 state UP group default qlen 1000
8: bond0: mtu 1500 qdisc noqueue state UP group default qlen 1000
9: bond1: mtu 9000 qdisc noqueue state UP group default qlen 1000
10: bond2: mtu 9000 qdisc noqueue state UP group default qlen 1000
11: bond0.150@bond0: mtu 1500 qdisc noqueue state UP group default qlen 1000
inet 10.33.16.152/21 brd 10.33.23.255 scope global bond0.150
13: bond1.301@bond1: mtu 9000 qdisc noqueue state UP group default qlen 1000
inet 10.33.96.152/20 brd 10.33.111.255 scope global bond1.301
15: bond2.300@bond2: mtu 9000 qdisc noqueue state UP group default qlen 1000
inet 10.33.32.152/21 brd 10.33.39.255 scope global bond2.300
[root@-compute-zyq ~]# cd /etc/sysconfig/network-scripts/
[root@-compute-zyq network-scripts]# ls
ifcfg-bond0 ifcfg-bond1 ifcfg-bond2.200 ifdown ifdown-ipv6 ifdown-routes ifup ifup-ippp ifup-plusb ifup-Team network-functions
ifcfg-bond0.150 ifcfg-bond1.301 ifcfg-bond2.300 ifdown-bnep ifdown-isdn ifdown-sit ifup-aliases ifup-ipv6 ifup-post ifup-TeamPort network-functions-ipv6
ifcfg-bond0.199 ifcfg-bond1-slave-eno1 ifcfg-bond2-slave-eno2 ifdown-eth ifdown-ovs ifdown-Team ifup-bnep ifup-isdn ifup-ppp ifup-tunnel route-bond0.150
ifcfg-bond0-slave-eno3 ifcfg-bond1-slave-ens4f0 ifcfg-bond2-slave-ens4f1 ifdown-ib ifdown-post ifdown-TeamPort ifup-eth ifup-ovs ifup-routes ifup-wireless route-bond1.301
ifcfg-bond0-slave-eno4 ifcfg-bond2 ifcfg-lo ifdown-ippp ifdown-ppp ifdown-tunnel ifup-ib ifup-plip ifup-sit init.ipv6-global route-bond2.300
[root@-compute-zyq network-scripts]# cat route-bond0.150
10.33.42.0/23 via 10.33.23.254
[root@-compute-zyq network-scripts]# cat route-bond1.301
100.126.0.0/21 via 10.33.111.254 dev bond1.301
100.127.244.0/22 via 10.33.111.254 dev bond1.301
[root@-compute-zyq network-scripts]# cat route-bond2.300
10.33.39.12/32 via 10.33.32.1 dev bond2.300
[root@-compute-zyq network-scripts]#
在CentOS 7中,当你使用ip a
命令查看到类似bond1.143@bond1:
这样的命名格式的接口时,该接口表示一个 VLAN(Virtual Local Area Network)子接口。让我解释一下:
bond1
表示物理网络适配器的绑定接口。在这种情况下,似乎你有一个名为bond1
的网络适配器绑定,它可以由多个物理网络适配器组成,用于提供冗余和负载平衡。
.143
表示 VLAN 标签。VLAN是一种虚拟网络技术,用于将单个物理网络分割成多个逻辑网络,每个网络可以具有不同的配置和安全策略。在这里,.143
表示该子接口与VLAN 143相关联。
@bond1
表示这个 VLAN 子接口附加到bond1
物理接口上。
所以,bond1.143@bond1:
表示一个名为bond1
的物理网络适配器绑定上的VLAN 143 子接口。这种配置通常用于划分网络流量和提供网络隔离,以满足不同的网络需求。