物理机如何通过ESXi虚拟机共享网络?

物理机作为ESXI宿主,其物理网卡连接外部网络,虚拟机通过ESXI虚拟交换机绑定该物理网卡,其网络流量经宿主物理网卡进行NAT转换后访问互联网。

物理机通过ESXi虚拟机上网:原理与详细配置指南

场景与需求
您是否遇到过这样的困境:一台物理服务器(称为“物理机A”)因安全策略、网络限制或特殊配置无法直接访问互联网,但其运行的ESXi主机上的某台虚拟机(称为“虚拟机B”)却拥有畅通的网络连接?让物理机A借助虚拟机B的网络通道上网,就成为了一种实用的解决方案,本文将深入解析其工作原理,并提供一份详细的配置步骤。

物理机如何通过ESXi虚拟机共享网络?

核心原理:虚拟交换机与NAT
实现物理机通过ESXi虚拟机上网,本质是利用ESXi强大的网络虚拟化能力,核心在于两个关键组件:

  1. 虚拟交换机 (vSwitch): ESXi内置的网络交换设备,连接物理网卡、虚拟机虚拟网卡(vNIC)以及VMkernel端口,它是数据流转发的核心枢纽。
  2. 网络地址转换 (NAT): 在虚拟机B内部配置NAT服务(如Linux的iptables/nftables或Windows的“Internet连接共享”ICS),NAT负责将物理机A发出的网络请求,伪装成源自虚拟机B的IP地址,并将外部返回的响应数据正确转发回物理机A。

工作流程

  1. 物理机A将上网请求数据包发送到其配置的网关(即虚拟机B的内部IP)。
  2. 数据包通过ESXi的虚拟交换机,从物理机A的物理网卡传递到虚拟机B的虚拟网卡。
  3. 虚拟机B内部的NAT服务收到数据包:
    • 修改源IP地址:将源IP(物理机A的内部IP)改为虚拟机B自身的公网/可上网IP。
    • 记录连接映射:在NAT表中保存这条连接的原始信息(物理机A的IP和端口)。
  4. 修改后的数据包从虚拟机B发出,经由ESXi虚拟交换机和物理主机B的物理网卡,最终到达互联网。
  5. 互联网服务器返回响应数据包给虚拟机B的公网IP。
  6. 虚拟机B的NAT服务根据之前记录的映射表:
    • 修改目标IP地址:将目标IP(虚拟机B的公网IP)改回物理机A的内部IP。
    • 将数据包转发回虚拟交换机。
  7. 数据包通过虚拟交换机送达物理机A的物理网卡,完成通信。

详细配置步骤 (以Linux虚拟机B为例)

第一部分:ESXi主机配置

物理机如何通过ESXi虚拟机共享网络?

  1. 创建端口组 (Port Group):
    • 登录vSphere Client (Web Client)。
    • 导航到您的ESXi主机 -> “配置” -> “网络” -> “虚拟交换机”。
    • 选择一个现有的标准交换机(vSwitch),或新建一个。
    • 在选定的vSwitch上,点击“添加端口组”。
    • 为端口组命名(Transit-Network)。
    • 关键安全设置:
      • 混杂模式 (Promiscuous Mode): 必须设置为 接受,允许端口组上的虚拟机(即虚拟机B)接收目的地非其自身MAC地址的流量(即物理机A的流量)。
      • MAC地址更改 (MAC Address Changes): 设置为 接受 (通常默认即可)。
      • 伪传输 (Forged Transmits): 设置为 接受 (通常默认即可)。
    • 完成创建。
  2. 配置虚拟机B的网络:
    • 编辑虚拟机B的设置。
    • 为虚拟机B 添加第二块虚拟网卡 (vNIC)
    • 将此新vNIC连接到刚创建的 Transit-Network 端口组,这块网卡将用于与物理机A通信。
    • 确保虚拟机B原有的、连接着可上网网络的vNIC(通常连接 VM Network)仍然存在,这块网卡用于访问互联网。
    • 保存设置,启动虚拟机B。

第二部分:虚拟机B内部配置 (Linux – 使用iptables)

  1. 识别网络接口:
    • 登录虚拟机B。
    • 运行 ip aifconfig (较旧系统),找到两块网卡:
      • eth0 (假设):连接原有可上网网络 (VM Network),拥有公网/可路由IP。
      • eth1 (假设):新添加的网卡,连接 Transit-Network,它应该有一个私有IP(168.10.1),记下此接口名和IP。
  2. 配置 eth1 的IP (静态):
    • 编辑网络配置文件(如 /etc/network/interfaces/etc/sysconfig/network-scripts/ifcfg-eth1),为 eth1 设置静态IP(如 168.10.1/24)并禁用DHCP。
    • 重启网络服务或重启 eth1 (sudo ifdown eth1 && sudo ifup eth1sudo systemctl restart networking / NetworkManager)。
  3. 启用IP转发:
    • 编辑 /etc/sysctl.conf 文件,添加或修改行:
      net.ipv4.ip_forward = 1
    • 使配置立即生效:sudo sysctl -p
  4. 配置iptables NAT规则:
    • 设置SNAT (源地址转换 – 用于上网):
      sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
      • -o eth0: 指定出口网卡(连接互联网的网卡)。
      • MASQUERADE: 自动使用 eth0 的IP作为源IP进行SNAT,适用于动态获取IP的情况。eth0 是固定IP,也可以用 -j SNAT --to-source [eth0的IP]
    • 设置FORWARD规则 (允许流量转发):
      sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT  # 允许从内网(eth1)到外网(eth0)的转发
      sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT  # 允许已建立连接的相关/返回流量
  5. (可选) 持久化iptables规则:
    • 安装持久化工具(如 iptables-persistent):sudo apt-get install iptables-persistent (Debian/Ubuntu) 或 sudo yum install iptables-services (RHEL/CentOS)。
    • 保存规则:sudo netfilter-persistent savesudo service iptables save (取决于系统)。

第三部分:物理机A配置

  1. 物理连接:
    • 使用网线将物理机A的物理网卡连接到ESXi主机上承载 Transit-Network 端口组的那个物理网卡(或连接到同一物理交换机上该ESXi物理网卡所连的端口)。
  2. 网络配置:
    • 在物理机A的操作系统中,为其物理网卡配置一个与虚拟机B的 eth1 同网段的静态IP地址168.10.2)。
    • 配置默认网关为虚拟机B的 eth1 的IP地址(即 168.10.1)。
    • 配置DNS服务器,可以设置为公共DNS(如 8.8.8, 8.4.4),或者如果虚拟机B能解析内网DNS,也可以设置为虚拟机B的IP (168.10.1),但这需要在虚拟机B上配置DNS转发。

验证与测试

  1. 在物理机A上:
    • ping 192.168.10.1 (虚拟机B的eth1) 应该成功。
    • ping 8.8.8.8ping www.baidu.com 应该成功。
    • traceroute 8.8.8.8tracert 8.8.8.8 (Windows) 应显示第一跳是 168.10.1 (虚拟机B)。
  2. 在虚拟机B上:
    • 运行 sudo iptables -t nat -vL POSTROUTING -nsudo iptables -vL FORWARD -n,可以看到数据包计数在增加,表明NAT和转发正在工作。
    • 使用 tcpdump 监听 eth1 (sudo tcpdump -i eth1) 可以看到物理机A发出的流量;监听 eth0 (sudo tcpdump -i eth0) 可以看到源IP已被替换为虚拟机B的IP的流量。

重要安全警告与注意事项

物理机如何通过ESXi虚拟机共享网络?

  • 安全风险: 此配置将虚拟机B变成了物理机A的网关。虚拟机B的安全性至关重要
    • 确保虚拟机B本身及时更新补丁,安装并配置好防火墙(仅允许必要的转发规则)。
    • 虚拟机B上的NAT服务(如iptables)配置不当可能导致安全漏洞。
    • 物理机A理论上可以访问虚拟机B所在的 Transit-Network 上的任何其他设备(如果存在),反之亦然,请将此网络视为隔离区 (DMZ) 对待。
  • 性能影响: 所有物理机A的上网流量都需经虚拟机B处理转发,这会消耗虚拟机B的CPU、内存和网络带宽资源,并引入额外延迟,确保虚拟机B有足够资源。
  • 混杂模式: ESXi端口组上开启混杂模式是必要条件,但这也降低了该端口组的网络隔离性,仅应在确实需要此功能的端口组上启用。
  • 防火墙: 检查虚拟机B内部防火墙(如firewalld, ufw)以及ESXi主机防火墙,确保它们没有阻止转发流量或NAT所需的连接。
  • 替代方案: 如果物理机A是另一台ESXi主机,或者网络环境允许,更优的方案可能是:
    • 配置物理机A直接连接到可上网的网络。
    • 在物理机A所在的网络和可上网网络之间配置路由器或防火墙规则。
    • 使用专用的虚拟防火墙/路由器设备(如pfSense, OPNsense, VyOS)部署在ESXi上,代替在普通虚拟机中配置NAT,通常更安全、功能更强大、性能更好。
  • IPv6: 本文主要针对IPv4,如需支持IPv6,需要在虚拟机B上额外配置IPv6转发和NDP代理或NPTv6/NAT66。

通过合理配置ESXi虚拟交换机的端口组(开启混杂模式)并在目标虚拟机内设置NAT服务,可以实现物理机通过ESXi虚拟机访问互联网,这种方案适用于特定网络受限场景,但务必充分理解其安全风险性能影响,配置过程涉及ESXi网络设置、虚拟机操作系统网络配置及防火墙/NAT规则设定,在实施前,请评估是否有更优、更安全的网络架构方案可供选择。

引用说明
本文配置方法参考了VMware官方文档关于虚拟交换机安全策略(Security Policies for Standard Switches)及Linux内核网络参数(IP Forwarding)的相关说明,并结合了常见的Linux iptables NAT配置实践,具体命令语法可能因操作系统发行版及版本略有差异。

重要提示: 生产环境中实施此类方案前,请务必进行严格的测试,并制定相应的安全加固措施和应急预案。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/18125.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月10日 12:07
下一篇 2025年6月10日 12:14

相关推荐

  • Kali安装,虚拟机VS物理机怎么选?

    虚拟机安装更安全便捷,适合学习和测试,能隔离环境且快速恢复,物理机性能更强,适合专业渗透测试或需要直接操作硬件的场景,根据需求选择:日常用虚拟机,专业深度用物理机。

    2025年6月13日
    000
  • 虚拟机连不上Win7主机?速解!

    vmxp虚拟机无法访问Win7物理机,通常由网络模式配置错误、防火墙阻止或VMware服务未启动导致,请检查虚拟机网络设置(建议桥接或Host-only模式)、关闭双方防火墙、确保VMware NAT/DHCP服务运行,必要时重置虚拟网络配置。

    2025年6月11日
    000
  • VMware虚拟化物理机怎样装Windows?

    使用VMware Converter工具将物理机迁移为虚拟机(P2V),然后在创建的虚拟机中启动,按照常规步骤安装Windows操作系统即可完成。

    2025年6月3日
    200
  • 如何查看服务器虚拟机

    要查看物理机上的虚拟机,通常需要使用该物理机运行的虚拟化平台的管理工具。,* **Hyper-V:** 使用 Hyper-V 管理器。,* **VMware ESXi:** 使用 vSphere Client 或 ESXi 主机管理界面。,* **VirtualBox:** 使用 VirtualBox 管理器界面。,* **KVM (Linux):** 使用 virsh list –all 命令或 virt-manager 图形工具。,这些工具会列出当前物理主机上创建和运行的所有虚拟机及其状态。

    2025年6月13日
    100
  • 3D软件一放物理摄像机就崩溃?原因究竟出在哪里?

    3D软件中放置物理摄像机后程序停止运行,通常由软件兼容性、硬件性能不足或驱动问题导致,可能原因包括显存不足、显卡驱动未更新、物理摄像机参数设置冲突或场景复杂度超出硬件负载,建议检查更新软件版本、升级显卡驱动、优化场景资源或增加内存配置,同时排查插件冲突问题。

    2025年5月29日
    500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN