NAT模式下主机连接虚拟机

这篇具有很好参考价值的文章主要介绍了NAT模式下主机连接虚拟机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.前言

大多数人应该不会遇到我这样的问题,就是VMware虚拟机卸载过之后重装,死活装不上虚拟网络适配器,导致没法启用桥接模式,结果就是虚拟机可以正常上网也可以ping通主机,但主机死活ping不通虚拟机,xshell也一直连接不上。微信和虚拟机之间传文件还得靠网页版的微信传输助手,那叫一个难受。。。

本文介绍一下在NAT模式下主机连接虚拟机的方式,以Centos7为例。

1.NAT模式vs.桥接模式

桥接模式和NAT模式是在计算机网络中用于连接设备的两种不同方式。

桥接模式指的是将不同的网络连接起来形成一个单一的网络。这种连接方式通过将数据包从一个物理网络传递到另一个物理网络来实现,通常使用网络交换机或路由器作为中介设备。在桥接模式下,所有连接到同一网络的设备都可以直接相互通信,就好像它们连接在同一个物理网络上一样

而NAT(Network Address Translation)模式则是将一个私有网络连接到公共网络(如Internet)的一种方式。在NAT模式下,通过使用路由器或防火墙等设备,将私有网络中的IP地址转换成公共网络中的IP地址,以便与外部网络进行通信。这种方式使得私有网络内的设备可以更安全地访问公共网络,并且只需要使用较少的IP地址。

因此,桥接模式和NAT模式的主要区别在于它们连接设备的不同方式。桥接模式将多个网络连接起来,使它们看起来像是一个单一的网络,而NAT模式则是将一个私有网络连接到公共网络,并将其IP地址转换为公共网络中的IP地址。

如果在虚拟机中使用的是“NAT”或“仅主机”网络配置,则可能无法通过ping命令从主机上ping通虚拟机。

原因是,当使用“NAT”或“仅主机”网络时,虚拟机位于宿主机的私有网络中,并且由虚拟化软件(如VMware或VirtualBox)充当代理来转发网络流量。因此,要从主机上ping通虚拟机,需要进行额外的配置。

对于VMware Workstation和VirtualBox等虚拟化软件,可以将虚拟机的网络适配器类型更改为“桥接”,这将使虚拟机直接连接到宿主机所在的物理网络中。然后,虚拟机将被视为独立设备,可以从主机上ping通虚拟机。

如果无法更改虚拟机的网络适配器类型,请考虑创建端口转发规则来将主机上的特定端口转发到虚拟机的某个端口上。例如,如果想从主机上ping通虚拟机,则可以在虚拟机中启用SSH服务,并将主机端口映射到虚拟机的SSH端口上。然后,可以使用ssh命令从主机上连接到虚拟机并执行ping测试。

2.NAT模式下主机连接虚拟机

在NAT模式下,虚拟机的网络默认被隔离在一个私有子网中,并无法直接从主机访问。要连接到该虚拟机,只能通过ssh协议连接,虚拟机中需要安装并启用ssh server,并需要进行端口转发或设置端口映射。

2.1启用ssh服务

以下是在CentOS系统上启用SSH服务的步骤:

  1. 打开虚拟机并登录到其中。根据使用的操作系统不同,可能需要以管理员权限运行命令。

  2. 检查OpenSSH服务器软件包是否已安装。默认情况下,CentOS应该已经安装了OpenSSH服务器。可以输入以下命令来检查其是否已安装:

rpm -qa | grep openssh-server

如果未安装,则可以使用以下命令安装:

sudo yum install openssh-server
  1. 启动SSH服务。在CentOS中,使用以下命令启动SSH服务器:
sudo systemctl start sshd
  1. 使用以下命令查看ssh服务是否启用,如果显示active (running),表示ssh服务已经启用:
sudo systemctl status sshd
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2023-03-30 23:01:11 EDT; 1min 46s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1091 (sshd)
    Tasks: 1
   CGroup: /system.slice/sshd.service
           └─1091 /usr/sbin/sshd -D
  1. 确保SSH服务已设置为在启动时自动启动:
sudo systemctl enable sshd
  1. 确保防火墙允许SSH流量通过。如果的虚拟机上启用了防火墙,则需要确保已允许SSH流量通过。例如,在CentOS 7中,可以使用以下命令打开SSH端口(默认为22):
sudo firewall-cmd --zone=public --add-port=22/tcp --permanent

然后重新加载防火墙规则:

sudo firewall-cmd --reload
  1. 现在已经成功启用了SSH服务。桥接模式下,从主机上,可以使用SSH客户端连接到虚拟机并执行ping测试等操作。可以使用以下命令连接到虚拟机:
ssh username@vm-ip-address

其中“username”是虚拟机中的用户名,“vm-ip-address”是虚拟机分配的IP地址。

2.2虚拟机的IP地址

可输入ip addr showifconfig以下命令来查看虚拟机分配的IP地址:

ifconfig
ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ea:62:03 brd ff:ff:ff:ff:ff:ff
    inet 192.168.195.128/24 brd 192.168.195.255 scope global noprefixroute dynamic ens33
       valid_lft 1455sec preferred_lft 1455sec
    inet6 fe80::80d1:5471:8afb:fff3/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:2e:36:8b brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

在该虚拟机中,有两个网络接口:

  1. ens33 - 这是一个物理网络接口,它连接到您所连接的物理网络。inet 192.168.195.128/24 是该接口分配的IP地址,也是您可以在宿主机或其他计算机上ping通的IP地址。因此,在这种情况下,vm-ip-address就是192.168.195.128。

  2. virbr0 - 这是一个虚拟网络接口,它用于虚拟化软件(如KVM、libvirt等)创建的虚拟机之间通信。inet 192.168.122.1/24 是该接口分配的IP地址,但不会直接从宿主机或其他计算机上ping通,因为它们不在同一物理网络中。

2.3端口转发

在NAT模式下,虚拟机的网络默认被隔离在一个私有子网中,并无法直接从主机访问。要连接到该虚拟机,需要进行端口转发或设置端口映射:

  1. 端口转发
    在虚拟机配置中启用端口转发功能,将虚拟机的SSH端口(默认是22)映射到主机的某个端口上(如2222)。这样,在主机上使用ssh客户端时,将目标IP地址设置为虚拟机所在的IP地址,端口号设置为映射的主机端口即可。例如:

    ssh username@192.168.0.10 -p 2222
    
  2. 设置端口映射
    如果使用的是VMware Workstation等虚拟化软件,可以在虚拟网络编辑器中创建并设置虚拟网络适配器。将虚拟机桥接到该适配器上,并设置虚拟网络适配器的IP地址为与主机相同的网段。这样,主机和虚拟机就处于同一局域网中,可以直接通过SSH连接到虚拟机。

我的虚拟机由于虚拟网络适配器的缺失,无法使用桥接模式。NAT模式下进行端口转发时,需要在虚拟机所在的宿主机上进行配置。具体操作步骤如下:

  1. 在虚拟机所在的宿主机上启动虚拟化软件(如VMware Workstation等),并打开该虚拟机的设置界面。
  2. 找到“网络适配器”选项,并选择“NAT设置”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-avEkekGB-1680272720991)(assets/image-20230331204250478.png)]

  1. 找到“端口转发”设置,添加一个规则,将虚拟机的SSH端口(默认为22)映射到宿主机的某个端口(如2222)上。完成设置后保存并关闭虚拟机设置窗口。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vldgwK8E-1680272720991)(assets/image-20230331204525459.png)]

完成以上设置后,就可以从宿主机连接到该虚拟机了,命令如下:

ssh username@127.0.0.1 -p 2222

其中,username为虚拟机中的用户名,IP地址为本地回环地址127.0.0.1,端口号为映射的宿主机端口2222。

如果之前一切顺利,到这一步就可以在NAT模式下,使用xshell成功连接到虚拟机了。

3.ssh隧道

SSH隧道是一种通过SSH连接在两个网络之间创建加密通道的方法,可以用来跨越不信任的公共网络进行数据传输。它通常被用来加密非安全协议(如Telnet、FTP、VNC等)的连接,并提供更高级别的安全性。

SSH隧道有三种类型:

  1. 本地端口转发(Local port forwarding)

本地端口转发可以将一台机器的某个端口绑定到另外一台机器的指定端口上。这种方式常用于将远程服务器上需要登录才能访问的服务通过SSH隧道映射到本机。命令格式如下:

ssh -L [local_port]:[remote_host]:[remote_port] [user]@[ssh_server]

其中,local_port是本地要监听的端口,remote_host是远程主机名或IP地址,remote_port是远程主机要映射的端口号。例如,将远程MySQL数据库通过SSH映射到本地3306端口:

ssh -L 3306:localhost:3306 user@remote_server
  1. 远程端口转发(Remote port forwarding)

远程端口转发可以将一台机器上某个端口绑定到另外一台机器上指定端口。这种方式常用于内网穿透和代理服务器。命令格式如下:

ssh -R [remote_port]:[local_host]:[local_port] [user]@[ssh_server]

其中,remote_port是远程主机要监听的端口,local_host是本地主机的IP地址或主机名,local_port是本地要映射的端口。例如,将本地Web服务器通过SSH隧道映射到远程服务器的8080端口:

ssh -R 8080:localhost:80 user@remote_server
  1. 动态端口转发(Dynamic port forwarding)

动态端口转发可以将一台机器上任意一个端口绑定到另外一台机器上,通常用于代理服务器和内网穿透。这种方式与HTTP代理非常相似,但比HTTP代理更安全,并且可以访问被防火墙屏蔽的网站。命令格式如下:

ssh -D [local_port] [user]@[ssh_server]

其中,local_port是本地要监听的端口号。例如:

ssh -D 1080 user@remote_server

这条命令会启动一个socks5代理服务器,可以在浏览器及其他应用中使用该代理来访问Web资源。

以上就是SSH隧道的三种类型及其命令格式。使用时需要根据实际情况选择不同类型的隧道,并设置相应的参数。文章来源地址https://www.toymoban.com/news/detail-495180.html

到了这里,关于NAT模式下主机连接虚拟机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ssh访问远程宿主机的VMWare中NAT模式下的虚拟机

    1.1设置虚拟机的网络为NAT模式 1.2设置虚拟网络端口映射(NAT) 点击主菜单的编辑-虚拟网络编辑器: 启动如下对话框,选中NAT模式的菜单项,并点击NAT设置: 点击添加,为我们的虚拟机添加一个端口映射。 虚拟机端口必须是22。主机端口可以为任意不被占用的端口。访问主机

    2024年02月10日
    浏览(55)
  • 虚拟机三种网络连接方式(桥接、NAT、仅主机、vlan)、Fusioncompute中的网络配置(OVS、DVS)

    我们通过VMware workstation 安装虚拟机的时候,需要配置我们的虚拟网卡。 需要在网络适配器那里进行配置,网络连接这里一般有三种模式,桥接模式,NAT模式和仅主机模式,如下图所示,那么这三种模式有什么区别呢? 1、桥接模式: 如下图所示,就很好的讲解了桥接的原理。

    2024年02月07日
    浏览(42)
  • VMware虚拟机NAT模式,配置静态IP无法连接外网

    问题描述:VMware用的NAT模式,配置静态IP后,ping网关通,ping设置的IP也通,就是无法访问外网。 1、点击编辑,虚拟网络编辑器 2、点击右下角更改设置 3、点击NAT模式,点击中间靠右NAT设置,查看下网关。记录下网关地址192.168.203.2点击确定,再将左下方使用本地DHCP服务IP地址

    2023年04月13日
    浏览(92)
  • 如何通过 NAT 模式连接VMware虚拟机以及存在和不存在ens33文件的解决方案

    NAT 模式 NAT 模式就是让虚拟机借助 NAT (网络地址转换)功能,通过 宿主机 来访问外部网络。 本文在保证虚拟机的网络可以查到ip的情况下,让宿主机通过远程连接工具连接到虚拟机。 该配置的目的是:检查Linux虚拟机的网络连接模式,确保它是 NAT模式 。 在VMware界面,点击

    2024年02月06日
    浏览(47)
  • Linux三种网络模式 | 仅主机、桥接、NAT

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 仅主机模式:虚拟机只能访问物理机,不能上网 桥接模式:虚拟机和物理机连接同一网络,虚拟机和物理机是并列的关系,地位是相当的 NAT模式:虚拟机可以访问物理机,同时也能通过物理机访问外网 这种模式下,物

    2024年02月03日
    浏览(43)
  • VMWare虚拟机中的几种网络配置区别(桥接、仅主机、NAT)

    当在VM虚拟机上安装系统时,会提示进行虚拟机网络配置的选择操作,如下图:   那么,这几种网络连接方式的区别是什么呢? 当电脑安装好VMWare虚拟后,在本机的网络配置中,会多出来两个虚拟网卡, VMnet1 和 Vmnet8, 这两个网卡就是用于虚拟机的网络配置使用。  打开VM虚

    2024年02月09日
    浏览(43)
  • 物理主机使用Wifi时虚拟机CentOS的网络配置-使用NAT方法

    打开虚拟机设置 选用NAT模式 打开WLAN的属性菜单,设置连接共享 配置VMNet 8网卡 打开网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33 ,将ONBOOT 修改为yes,也就是启动网卡(这里要使用管理员权限打开 不然文件为只读) vim ctrl+o退出编辑模式 shift+;进入命令模式 使用wq!保存并

    2024年02月06日
    浏览(45)
  • VMWare Workstation 17 Pro 网络设置 桥接模式 网络地址转换(NAT)模式 仅主机模式

    博文目录 桥接模式: 主机与虚拟机对等, 虚拟机注册到主机所在的局域网, 会占用该网络的IP 该局域网内的所有机器, 包括主机和其他机器和所有虚拟机, 均可互相访问 虚拟机可以访问互联网 网络地址转发(NAT)模式: 可以认为是在主机下建立了一个虚拟局域网, 虚拟机注册到该网

    2024年02月12日
    浏览(46)
  • vmware网卡(网络适配器)桥接、NAT、仅主机3种模式解析

    Windows系统安装好vmware后,在网络连接中会生成 VMnet1 和 VMnet8 两个虚拟网卡。 VMnet1作用于仅主机模式,VMnet8作用于NAT模式。           虚拟机网卡选用桥接模式,虚拟机和安装虚拟机的物理机(主机或母机)IP地址在同一个网段,虚拟机和母机可以相互访问。如果局域网物理

    2024年02月09日
    浏览(49)
  • 虚拟机网络模式-NAT模式配置

    1、打开VMware,点击编辑——》虚拟网络编辑器 2、配置NAT子网。 注意:不能配置和物理主机为同一网段的IP段 点击NAT设置。设置虚拟子网的网关 注意:正常是使用.1做为网关,如果出现网络不行,可以改成.2做网关 4、点击DHCP设置,为了配置IP地址分配范围   5、虚拟机网络设

    2024年02月16日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包