首先介绍一下环境:

1. Host(宿主计算机)的操作系统是Scientific Linux,内核版本2.6.18,主机名SPVM02,IP地址135.100.101.102,部署的是VMware Workstation 8。

2. Guest(虚拟机)这边安装的操作系统是Windows 7。

3. Guest使用vmnet8这块网卡,通过NAT协议实现上网。

需要实现的功能是Host网络中的其他计算机使用Microsoft Remote Desktop远程登录Guest桌面。所以探索如何通过配置VMware Workstation来实现NAT网络端口转发是本文的核心内容。

以下两个方法均可以实现我们需要的功能,其中第二种方法比较直接,需要解决问题的朋友可以直接往下翻。

先说第一种方法,通过修改VMware网络配置实现DHCP为Guest分配固定IP和让外网计算机访问Guest指定端口的功能。

这个配置在Windows版的VMware Workstation中可以通过图形界面完成,然而在Linux中我们目前只能通过修改配置文件的方式来实现。步骤如下:

1. 首先用“ps -ef”来找到DHCP和NAT服务的配置文件:

[root@SPVM02 ~]# ps -ef | grep dhcpd

root     11080     1  0 09:58 ?        00:00:00 /usr/bin/vmnet-dhcpd -s 6 -cf /etc/vmware/vmnet8/dhcpd/dhcpd.conf -lf /etc/vmware/vmnet8/dhcpd/dhcpd.leases -pf /var/run/vmnet-dhcpd-vmnet8.pid vmnet8

[root@SPVM02 ~]# ps -ef | grep natd

root     11054     1  0 09:58 ?        00:00:00 /usr/bin/vmnet-natd -s 6 -m /etc/vmware/vmnet8/nat.mac -c /etc/vmware/vmnet8/nat/nat.conf

我们还可以通过“cat /proc/11080/cmdline”的方法找到,这里不多说了。

总之,我们找到了这两个服务的配置文件:“/etc/vmware/vmnet8/dhcpd/dhcpd.conf”和“/etc/vmware/vmnet8/nat/nat.conf”。

2. 修改DHCP配置文件,实现VMware为虚拟机分配固定IP的功能:

[root@SPVM02 ~]# vi /etc/vmware/vmnet8/dhcpd/dhcpd.conf
......
####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######

host spvmwin7a {
        hardware ethernet 00:0C:29:F1:5D:46;
        fixed-address 192.168.187.200;
}

我们在配置文件的最后添加上述文本。

其中"spvmwin7a"是个主机名,其实随便填就好了,只要别跟配置文件里的其他host重名就成;

Guest网卡的MAC地址“00:0C:29:F1:5D:46”可以通过在Guest命令行中使用Windows命令“ipconfig /all”获得;

固定IP地址“192.168.187.200”即为所要分配给这台Guest网卡的IP地址。

3. 修改NAT配置文件,实现Host到Guest的端口转发:

[root@SPVM02 ~]# vi /etc/vmware/vmnet8/nat/nat.conf
......
[incomingtcp]

# Use these with care - anyone can enter into your VM through these...
# The format and example are as follows:
#<external port number> = <VM's IP address>:<VM's port number>
#8080 = 172.16.3.128:80

9000 = 192.168.187.200:3389

我们在配置文件的[incomingtcp]这个section里添加上面这行文本。

它表示将发往Host 9000端口的TCP请求,转发到192.168.187.200(Guest)的3389端口。

注:3389为Microsoft Remote Desktop服务的默认监听端口。

4. 重启VMware的DHCP和NAT服务:

我们需要重启vmnet-dhcpd和vmnet-natd进程,刚才的改动才能生效。

坑爹的地方来了,我翻遍了互联网和官方的文档,也没找到重启这两个进程的官方做法。

网上到是有文章说执行“/usr/lib/vmware/net-services.sh restart”来重启网络相关进程,但可能是因为VMware版本不太一样,我找了半天也没找到类似的脚本。

跟朋友商量后,还是用了kill命令然后手动运行的这两个进程,效果是没有问题的。
直到后来,我才试出了对应的命令:

[root@SPVM02 ~]# /usr/bin/vmware-networks --stop
Stopped Bridged networking on vmnet0
Stopped DHCP service on vmnet8
Stopped NAT service on vmnet8
Disabled hostonly virtual adapter on vmnet8
Stopped all configured services on all networks

[root@SPVM02 ~]# /usr/bin/vmware-networks --start
Started Bridge networking on vmnet0
Started NAT service on vmnet8
Enabled hostonly virtual adapter on vmnet8
Started DHCP service on vmnet8
Started Network detection service
Started all configured services on all networks

[root@SPVM02 ~]# /usr/bin/vmware-networks --status
Bridge networking on vmnet0 is running
DHCP service on vmnet8 is running
NAT service on vmnet8 is running
Hostonly virtual adapter on vmnet8 is enabled
Network detection service is not running
All the services configured on all the networks are running

5. 验证配置:

首先我们来到Guest的命令行,使用“ipconfig /renew”来刷新网络连接,IP地址从“192.168.187.128”变成了“192.168.187.200”,说明我们对DHCP的更改生效了。

然后我们打开Windows的“远程访问”功能,赘述一下方法:右键“计算机”选择“属性”,点击左边“远程设置”,在弹出的对话框中“远程桌面”的地方选择允许远程计算机连接。

再在Host所在网络中,找一台Windows的主机,“开始”>"运行"中输入"mstsc"尝试连接一下“135.100.101.102:9000”,如果提示输入凭证以登陆Windows,就说明端口转发的设置生效了。

再说第二种方法,其实在Linux中端口转发是一件非常容易的事情。

我们可以简单地建立一个端口映射关系来解决这个问题,使用的时候只需要在Host执行一个命令即可搞定:

ssh -Nf -L 135.100.101.102:3390:192.168.187.200:3389 localhost

至于命令的含义,这里就不再赘述了,感兴趣的朋友请自行参阅“man ssh”。

下面说一些调试过程中可能会用上的技巧:

如果连不上Guest的远程桌面,首先在外网ping一下Host,在Host中ping一下Guest,然后再检查一下Windows防火墙。

在Guest检查服务是否正常,“开始”>"运行"中输入"mstsc"尝试连接一下自己“192.168.187.200:3389”,如果说是“正在运行一个会话”那么就说明服务是正常的,换个端口试下就知道连不通是怎么提示的了。

参考文献:

1. 《LINUX下的VMWARE的端口映射》 http://blog.chinaunix.net/uid-12290680-id-26867.html

2. <Using VMware Workstation - VMware Workstation 8> http://www.vmware.com/pdf/ws80-using.pdf

3. <BSD General Commands Manual - SSH(1)>

Linux版VMware为Windows虚拟机分配固定IP及启用远程桌面连接相关推荐

  1. 【Windows】解决家庭版系统无法开启远程桌面连接的问题

    项目场景 Windows 自带的远程桌面连接工具是局域网远程连接的最佳解决方案.只要在同一局域网段下,都能使用远程连接. 问题描述 Windows 家庭版系统不支持开启远程桌面,即家庭版系统的电脑只能 ...

  2. 给一个执行在windows 7和NAT下的VMWARE虚拟机分配固定IP

    虚拟机上装了个oracleserver,每次vmware重新启动或者resume时总要分配新的IP地址,这样就得改动windows下的client配置,所以须要想办法把IP地址固定住. DHCP服务在 ...

  3. linux虚拟机不能远程桌面连接不上去,Windows无法远程桌面的解决方案

    问题 博主的笔记本电脑是win10家庭版,版本什么的有就更新,没有就不管,随缘~ 近日第一次使用它连接远程服务器,于是就打开了远程桌面连接,输入服务器地址,账户,密码.结果弹窗报错: 出现身份验证错误 ...

  4. vmware虚拟机实现两台电脑远程桌面连接

    虚拟机的两台win7电脑远程桌面连接 首先在虚拟机上安装好两台win7版本的虚拟机,并运行,这里选择的是win7旗舰版和专业版,注意win7的家庭版等一些低版本不支持远程连接. 选择旗舰版的电脑(pc ...

  5. 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题

    本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...

  6. linux远程桌面连接_如何从Linux连接到远程桌面

    linux远程桌面连接 根据Wikipedia的说法, 远程桌面是"一种软件或操作系统功能,它允许个人计算机的桌面环境在一个系统(通常为PC,但该概念同样适用于服务器)上远程运行,同时显示在 ...

  7. 通过Windows远程桌面连接将远程文件传输至本地

    想要将远程Windows计算机中的文件拷贝至本地Windows计算机目录中,可以通过远程桌面连接来实施. 1. 在"远程桌面连接>本地资源"中,点击"详细信息&qu ...

  8. linux版vmware使用命令行启动vmware中的虚拟机

    大部门安装linux的机器都是服务器没有显示器,也不支持gui,而linux版vmware启动虚拟机或启动vmware的时候都需要使用gui接口,若没有的话就启动失败,下面一行命令无gui启动虚拟机, ...

  9. Linux系统上安装Windows虚拟机【VMware】

    Linux系统上安装Windows虚拟机(VMware) 一.进入VMware官网 二.安装成功就是下载对应的操作系统的镜像文件ISO.(最好下Windows 10,有些11可能不适配) 一.进入VM ...

最新文章

  1. 清华通信本硕巨佬秋招经验总结,收割互联网大厂后端 SP/SSP offer,太强了!
  2. 众里寻他千百度-- 轻量级持久化框架
  3. Cloud Insight 客户案例-晨芯时代科技有限公司
  4. elasticsearch 二、elasticsearch-head安装
  5. ubuntu16安装最新protocbuf 和 protoc-gen-go
  6. C#中@的用法总结(转)
  7. (转载)李开复:我在硅谷看到的最前沿科技趋势
  8. orcadcapture安装_OrCad Capture
  9. 解决xshell flashfxp等工具连接不上本机上的虚拟机
  10. 西工大机考《 ERP原理及应用》大作业网考
  11. SSM车辆维修管理系统毕业设计总结篇
  12. 团队作业四-WBS练习
  13. 为什么移动端跨平台开发不靠谱?
  14. 论文解读|2020TPAMI|Deep High-Resolution Representation Learning for Visual Recognition
  15. platform device和platform driver
  16. Windows nginx 操作和配置
  17. SpringBoot + Vue前后端分离开发:全局异常处理及统一结果封装
  18. 如何去除IE分级审查密码
  19. 推荐一个Windows10下的搜索软件:Everything
  20. MFC/WTL 设置背景图和控件透明的方法

热门文章

  1. python可以处理数据么_python处理数据(二)
  2. 独家对话黄仁勋:关于生成式AI、算力能耗的一些追问
  3. 外呼系统公司排名,哪家系统好用?
  4. bootstrap-daterangepicker
  5. json java 转义_java解析json,带转义字符的json
  6. Mac IDEA彻底删除项目详解
  7. Centos7国内环境下安装kubeadm、kubelet、kubectl并建立k8s集群、安装gitlab,测试spring boot 项目的CICD
  8. vue项目中使用阿里巴巴iconfont字体图标
  9. Netflix 总用户达到 2.325 亿;马斯克打脸创建 X.AI 公司;印度首开苹果门店;谷歌老板对 AI 很担心?特斯拉营收增加,但净利润下降…《经济学人 | 第 17 期》
  10. CentOS 安装卸载rpm软件