首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【教程】详解配置多台主机通过交换机实现互联通信

【教程】详解配置多台主机通过交换机实现互联通信

原创
作者头像
小锋学长生活大爆炸
发布2025-04-09 13:09:59
发布2025-04-09 13:09:59
64000
代码可运行
举报
文章被收录于专栏:高性能计算高性能计算
运行总次数:0
代码可运行

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 原文链接:https://xfxuezhang.blog.csdn.net/article/details/145945224

目录

场景定义

配置步骤

1. 确认网络接口名称

2. 确定主机连接同一交换机

3. 配置静态 IP 地址

4. 验证连接

主机间速率测试

无法通信的可能情况

1、局域网IP冲突

2、网卡驱动没安装

3、有VLAN隔离

- 交换机的VLAN问题

- 主机的VLAN问题


场景定义

有两台主机通过网线与交换机相连。主机操作系统是“ubuntu”,主机A连接交换机的网卡接口是“ens1f1、ens1f0”,主机B连接交换机的网卡接口是“ens2f1、ens2f0”。交换机没有额外的连接(如没有接入互联网),它仅与两台主机有网线连接。基于以上信息,如何配置使得两台主机能通过交换机进行通信?

配置步骤

1. 确认网络接口名称

在每台主机上,使用以下命令查看可用的网络接口(其实就是网卡):

代码语言:javascript
代码运行次数:0
运行
复制
ip link show | grep ens*f*

这将列出所有网络接口。例如,可能会看到类似 ens1f0ens1f1 的接口名称。(一般enoXX的是板载网卡)


可以通过以下指令来详细查看网口信息和类型:

需先安装nmcli: # Debian/Ubuntu 系统 sudo apt install network-manager network-manager-gnome # CentOS 7 系统 sudo yum install NetworkManager # CentOS/RHEL 系统 sudo yum install NetworkManager

还需要启动NetworkManager服务: sudo systemctl start NetworkManager

代码语言:javascript
代码运行次数:0
运行
复制
nmcli device status  # 查看网络设备状态

  1. DEVICE:网络接口的名称。
  2. TYPE:网络接口的类型(如以太网、桥接、隧道、环回)。
  3. STATE:网络接口的当前状态(如已连接、未管理)。
  4. CONNECTION:与该设备关联的连接配置名称。
  • eno1:以太网接口,已连接,使用 Wired connection 1
  • docker0:桥接设备,已连接,用于 Docker 容器网络。
  • eno2:以太网接口,已连接,使用 Wired connection 2
  • ens1f0:以太网接口,已连接,使用 netplan-ens1f0
  • ztk4jieaxmztklhzrkoh:隧道接口(如 VPN 或其他隧道协议),已连接。
  • ens1f1:以太网接口,已连接,使用 Wired connection 5
  • veth3001267:虚拟以太网接口,未管理(通常用于容器网络)。
  • lo:环回接口(本地回环),未管理。

注意:

  • 如果STATE显示connected,那就没问题,表示该网口已连接并且已启用。
  • 如果STATE显示unavailable,可以通过"ip link show"来查看状态。如果是网口没启用(显示DOWN),可以通过"sudo ip link set ens1f0 up"来启用。注意改ens1f0为你的。
  • 如果STATE显示unmanaged,可能该网卡可能被系统配置为不被 NetworkManager 管理,可以使用"sudo nmcli device set ens1f0 managed yes"来手动设置网卡为 managed。注意改ens1f0为你的。不过在设置前需要特别注意,检查这个网卡是不是有其他用处!

代码语言:javascript
代码运行次数:0
运行
复制
nmcli c show  # 网络连接配置

  1. NAME:连接配置的名称。
  2. UUID:连接配置的唯一标识符。
  3. TYPE:连接类型(如以太网、桥接、隧道)。
  4. DEVICE:当前使用的网络接口(如果没有绑定设备,则显示 --)。
  • Wired connection 1:以太网连接,绑定到 eno1
  • Wired connection 2:以太网连接,绑定到 eno2
  • docker0:桥接连接,绑定到 docker0
  • netplan-ens1f0:以太网连接,绑定到 ens1f0
  • ztk4jieaxmztklhzrkoh:隧道连接,绑定到对应的隧道接口。
  • Wired connection 5:以太网连接,绑定到 ens1f1
  • Wired connection 3Wired connection 4:以太网连接,但未绑定到任何设备(可能是未使用的配置)。

通过以上检测,就可以看出:

  1. 物理以太网接口
    1. eno1eno2ens1f0ens1f1 是物理以太网接口,分别绑定到不同的连接配置。
  2. 虚拟网络设备
    1. docker0 是 Docker 的桥接设备,用于容器网络。
    2. ztk4jieaxmztklhzrkoh 是隧道接口(如 VPN)。
    3. veth3001267 是虚拟以太网接口(通常用于容器)。
  3. 环回接口
    • lo 是本地回环接口,未管理。
  4. 未使用的连接配置
    • Wired connection 3Wired connection 4 是未绑定设备的以太网连接配置。

这表明系统中有多个物理和虚拟网络接口,配置了多种网络连接(包括以太网、桥接、隧道等)。

更进一步地,要查看特定连接配置的详细信息,可以用:

代码语言:javascript
代码运行次数:0
运行
复制
nmcli connection show 'Wired connection 4'

要查看特定网卡的详细信息,可以用:

代码语言:javascript
代码运行次数:0
运行
复制
nmcli device show ens1f0

更多说明:

  • nmcli的常用命令:

步骤 命令 说明 查看网络连接 nmcli connection show 显示当前所有网络连接 配置静态IP地址 nmcli connection modify "Wired connection 1" ipv4.addresses "192.168.1.100/24" ipv4.gateway "192.168.1.1" ipv4.dns "8.8.8.8 8.8.4.4" ipv4.method manual 设置IP地址、网关和DNS 激活网络连接 nmcli connection up "Wired connection 1" 激活网络连接 检查连接状态 nmcli device status 查看设备连接状态 查看IP配置 nmcli device show eth0 显示设备的IP配置信息 测试网络连通性 ping -c 4 192.168.1.1 测试与网关的连通性 查看路由表 ip route 显示当前路由表 检查DNS解析 nslookup google.com 测试DNS解析是否正常 修改默认网关 nmcli connection modify "Wired connection 1" ipv4.gateway "192.168.1.1" 如果默认网关配置错误,可以通过该命令修改

如果想看网卡的型号或者支持的速率,可以用:

代码语言:javascript
代码运行次数:0
运行
复制
sudo apt install ethtool

sudo ethtool ens1f0

关键输出字段

  • Supported ports:TP (双绞线,Twisted Pair)、Backplane (背板连接,如光纤或DAC线缆)。
  • Supported link modes:支持的速率和双工模式。baseT (仅限 1G/10G 铜缆模式)、baseKR/baseSR/baseLR 等 (高速协议)
  • Speed:网卡当前速率(如 1000Mb/s)。
  • Duplex:双工模式(FullHalf)。
  • Link detected:物理链路是否激活。

如果需要调整网卡速率,可以执行: # 强制设置为 40Gbps(需确保链路支持) sudo ethtool -s ens1f0 speed 40000 duplex full autoneg off # 验证设置:检查 Speed 是否更新为目标值,并确认 Link detected: yes(链路正常) sudo ethtool ens1f0 | grep -E "Speed|Link detected" # 恢复自动协商 sudo ethtool -s ens1f0 autoneg on

通过 ethtool 的命令在重启后会失效。若需永久生效,需将配置写入系统文件: # 在 `/etc/network/interfaces` 中添加: post-up ethtool -s ens1f0 autoneg off speed 40000 duplex full

以上步骤是为了更好的了解现有的连接配置和网卡信息。

2. 确定主机连接同一交换机

要确定两台未配置IP地址且无法访问交换机的服务器是否连接至同一台交换机,可以利用LLDP/CDP协议。LLDP(Link Layer Discovery Protocol)是一种网络发现协议,如果交换机支持 LLDP,并且服务器网卡的驱动支持 LLDP,可以使用 lldpd 来发现交换机信息。

安装LLDP工具

  • 在两台服务器上安装lldpad
代码语言:javascript
代码运行次数:0
运行
复制
apt install lldpd  # Debian/Ubuntu
yum install lldpd  # CentOS/RHEL

  • 启动服务并启用LLDP(注意ens1f0可能不一样):
代码语言:javascript
代码运行次数:0
运行
复制
sudo systemctl start lldpad

查询交换机信息

  • 在两台主机上,使用 lldpctl 查看交换机信息
代码语言:javascript
代码运行次数:0
运行
复制
sudo lldpctl

lldpctl 输出解释: 接口信息 Interface: ens1f1, via: LLDP, RID: 1, Time: 0 day, 00:00:01

  • Interface: ens1f1 → 主机上的物理网卡 ens1f1
  • via: LLDP → 该信息是通过 LLDP 协议获取的。
  • RID: 1 → 这个是 LLDP 记录的唯一标识符(Record ID),一般用于内部索引。
  • Time: 0 day, 00:00:01 → 这是 LLDP 信息的存活时间,表示此信息在 1 秒前收到(通常 LLDP 信息会定期更新)。

交换机(Chassis)信息 Chassis: ChassisID: mac 1c:34:da:a8:b5:40 SysName: switch-a48bbc SysDescr: MSN2100,Onyx,SWv3.9.0300 Capability: Bridge, on Capability: Router, off

  • ChassisID: mac 1c:34:da:a8:b5:40 → 这是交换机的 MAC 地址,1c:34:da:a8:b5:40
  • SysName: switch-a48bbc → 交换机的主机名(名称),在网络管理中通常用于识别设备。
  • SysDescr: MSN2100, Onyx, SWv3.9.0300 → 交换机的型号和操作系统版本:
    • MSN2100 → 交换机型号(Mellanox SN2100)。
    • Onyx → Mellanox Onyx 操作系统。
    • SWv3.9.0300 → 交换机的固件/软件版本 3.9.0300。
  • Capability: Bridge, on → 交换机具备 二层交换(Bridge)功能,并且已启用。
  • Capability: Router, off → 交换机具备 三层路由(Router)功能,但未启用。

端口(Port)信息 Port: PortID: ifname Eth1/1 PortDescr: TTL: 120

  • PortID: ifname Eth1/1 → 主机 ens1f1 连接到了交换机的 Eth1/1 端口
  • PortDescr: → 端口描述,交换机端口的备注信息(这里没有填写)。
  • TTL: 120 → LLDP 信息的生存时间(Time To Live),单位为秒,意味着如果 120 秒内没有更新,这条 LLDP 记录将被删除。

对比方法:

  • SysName(交换机名称)是否相同?
  • ChassisID(MAC 地址)是否相同?
  • 交换机端口 PortID 是否不同?
    • 如果是不同的 EthX/X 端口,则说明两台服务器连接到了同一台交换机的不同端口。
    • 如果 PortID 完全相同,那可能是一个 LAG/LACP 端口组,或者是错误配置。

找到主机上ChassisID相同的网口,表示他们连接的是同一个交换机。注意,如果不是连接的同一个交换机,那么后续的配置即使完成了,主机之间也是无法通信的。

3. 配置静态 IP 地址

先查看那些网段被占用了:

代码语言:javascript
代码运行次数:0
运行
复制
ifconfig

先安装nmtui,后面要用到: # Debian/Ubuntu 系统 sudo apt install network-manager network-manager-gnome # CentOS 7 系统 sudo yum install NetworkManager-tui # CentOS/RHEL 系统 sudo yum install nm-connection-editor

假设选择在每台主机上使用 ens1f0 接口进行通信,按照以下步骤配置静态 IP 地址:

主机 A:

打开终端,输入以下命令:

代码语言:javascript
代码运行次数:0
运行
复制
sudo nmtui

按以下步骤执行:

修正说明:修改后,上图中要“手动Deactivate、再Activate一下”,不然可能不会生效。

如果要用nmcli进行设置,参考命令: nmcli connection modify "Wired connection 4" ipv4.addresses "192.168.3.10/24" ipv4.method manual

激活该配置: nmcli connection up "Wired connection 4"

然后就可以看到设置完成了:

主机 B:

与主机A的操作一样,只是在设置ip时候,注意不要用一样的。比如主机A是192.168.3.10/24,那么主机B可以设置为192.168.3.11/24。

4. 验证连接

先清空arp表:

代码语言:javascript
代码运行次数:0
运行
复制
sudo ip -s -s neigh flush all

在完成上述配置后,您可以通过 ping 命令测试两台主机之间的连接:

  • 在主机 A 上,输入: ping 192.168.3.11
  • 在主机 B 上,输入: ping 192.168.3.10

如果配置正确,您将看到来自对方主机的响应,表示两台主机已经通过交换机成功建立通信。

注意,如果你的交换机不支持或者关闭了router,那需要通过arp方式:

代码语言:javascript
代码运行次数:0
运行
复制
sudo apt install arping

sudo arping 192.168.3.11

主机间速率测试

这里测试一下这两台主机之间的通信速率。

1、首先在两台主机上安装 iperf

代码语言:javascript
代码运行次数:0
运行
复制
# Debian/Ubuntu 系统
sudo apt install iperf

# CentOS/RHEL 系统
sudo yum install iperf

2、在主机A上启动一个 iperf 服务器,监听端口 5001

代码语言:javascript
代码运行次数:0
运行
复制
iperf -s -p 5001

3、在主机B上运行 iperf 客户端

代码语言:javascript
代码运行次数:0
运行
复制
iperf -c 192.168.3.11 -p 5001 -t 10

  • -c:指定服务器的 IP 地址。
  • -p:指定服务器的端口号。
  • -t:指定测试时间(单位:秒)。

在主机 B 上,iperf 会显示测试结果,包括带宽、延迟等信息。

无法通信的可能情况

1、局域网IP冲突

可能你设置的静态ip与其他服务的ip冲突了。通过以下指令来查看arp表:

代码语言:javascript
代码运行次数:0
运行
复制
arp -a

可以看到192.168.3.x的网段已经被用了。因此在配置静态IP时候,可以选择其他网段,如192.168.4.x。

2、网卡驱动没安装

如果以下命令输出显示了网卡的驱动程序信息,则说明驱动已安装。

代码语言:javascript
代码运行次数:0
运行
复制
ethtool -i ens2f0np0

3、有VLAN隔离

如果交换机设置的不是vlan模式,那么就不用看这块了。

- 交换机的VLAN问题

有些交换机默认设置了VLAN,要知道不同的VLAN之间是会隔离访问的,所以需要进入到交换机配置界面进行配置。

如果不需要用到vlan,直接改为access模式即可。

- 主机的VLAN问题

a. 确认系统支持 802.1q VLAN 功能

使用以下命令检查系统是否支持 802.1q VLAN 功能:

代码语言:javascript
代码运行次数:0
运行
复制
modinfo 8021q

如果命令输出显示 802.1q 模块已加载,则说明系统支持 VLAN 功能。

如果不存在,尝试加载模块:

代码语言:javascript
代码运行次数:0
运行
复制
sudo modprobe 8021q

b. 网卡不支持 VLAN 功能

某些网卡可能不支持 VLAN 标签,或者需要特定的驱动程序支持。需要检查是否支持。如果网卡不支持VLAN功能,那么建议将交换机配置为Access模式

c. 主机没有配置 VLAN 接口

注意,交换机的VLAN ID是否需要与主机的VLAN ID相同。

  1. 创建 VLAN 接口:(注意改网卡名称) sudo ip link add link ens2f0np0 name vlan1 type vlan id 1 # 删除vlan: # sudo ip link delete vlan0
  2. 启用 VLAN 接口: sudo ip link set vlan1 up
  3. 配置 IP 地址:(注意改局域网IP) sudo ip addr add 192.168.1.10/24 dev vlan1
  4. 配置默认网关(如果需要): sudo ip route add default via 192.168.1.1 dev vlan1

扩展学习资料:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景定义
  • 配置步骤
    • 1. 确认网络接口名称
    • 2. 确定主机连接同一交换机
    • 3. 配置静态 IP 地址
    • 4. 验证连接
  • 主机间速率测试
  • 无法通信的可能情况
    • 1、局域网IP冲突
    • 2、网卡驱动没安装
    • 3、有VLAN隔离
      • - 交换机的VLAN问题
      • - 主机的VLAN问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档