最近折腾虚拟机,由于是在linux下进行的,而相关资料比较少,所以遇到了一些问题。

一个就是配置vmware workstation的NAT设置。因为一般来说,NAT可以共享主机的ip,从而能以主机身份访问互联网,不需要单独为虚拟机配置IP了,另外,vmware workstation中的NAT设置里是可以进行端口转发的,所以添加了端口映射后,是很容易通过宿主机的某个端口访问到虚拟机的资源。我觉得是非常实用便捷的。所以配置虚拟机首选NAT方式。我是在linux宿主机上配置一台linux虚拟机。

相关路径

一个是宿主机上vmware workstation的NAT配置文件路径,一般来说位于:

1
/etc/vmware/vmnet8/nat/nat.conf

另外一个是linux中的网络地址配置文件路径,一般位于:

1
/etc/network/interfaces

配置虚拟机IP

这里,首先要配置虚拟机的IP地址。当然,配置之前要知道NAT的网关和子网掩码,这个vmware自带了一个工具:vmware-netcfg,位于vmware的安装文件夹下。默认应该在/usr/lib/vmware/bin/vmware-netcfg。使用超级用户权限打开:

1
sudo /usr/lib/vmware/bin/vmware-netcfg


可以看到默认NAT配置的虚拟网卡为vmnet8,这里有它的网关等信息,由于我希望使用静态的ip配置,所以我取消了DHCP的自动分配。当然,这些都是可以改动的。

知道了这些信息以后,就可以配置虚拟机中的ip地址了,对应文件位于

1
/etc/network/interfaces

默认的前两行是回环地址的配置,一般不用更改,对于下面的配置静态的ip,指定网关,子网掩码,以及dns的名字服务器。例如我的配置为

1
2
3
4
5
6
7
8
9
10
11
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.198.10
netmask 255.255.255.0
gateway 192.168.198.2
dns-nameservers 192.168.198.2

这样配置完毕,重启虚拟机的网络服务

1
sudo /etc/init.d/networking restart

这时候测试一下,应该可以访问网络了。

配置NAT端口映射

虚拟机可以访问外网了,那么接下来需要外网访问虚拟机的资源。比如我在虚拟机架设了一个HTTP服务器,位于虚拟机的80端口,如果我想映射到主机的100080端口。这时候需要直接编辑vmware的NAT配置文件了。上面的那个小工具已经不够用了。

1
sudo vim /etc/vmware/vmnet8/nat/nat.conf

打开配置文件,可以看到一个配置文件。当然,这个文件的其他选项也可以根据情况编辑,端口映射的主要在

1
2
3
4
5
6
7
8
9
10
11
12
[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
10080=192.168.198.10:80
 
[incomingudp]
 
# UDP port forwarding example
#6000 = 172.16.3.0:6001

注释中已经有示例了,比如我想映射的虚拟机HTTP端口到主机的10080端口,由于HTTP协议是基于TCP协议的,所以在incomingtcp中添加一行:

1
10080=192.168.198.10:80

编辑完毕后,保存并重启vmware服务:

1
sudo service vmware restart

到此就配置完毕了。如果虚拟机中80端口的服务已经开启,访问localhost:10080,可以看到对应虚拟机的资源内容

最新文章

  1. jquery替换所有逗号
  2. cocoaPods 的使用
  3. 百度地图API 与 jquery 同时使用时报 TypeError $(...) is null错误 失效的原因及解决办法
  4. SPOJ 375. Query on a tree (树链剖分)
  5. 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串&quot;+100&quot;,&quot;5e2&quot;,&quot;-123&quot;,&quot;3.1416&quot;和&quot;-1E-16&quot;都表示数值。 但是&quot;12e&quot;,&quot;1a3.14&quot;,&quot;1.2.3&quot;,&quot;+-5&quot;和&quot;12e+4.3&quot;都不是。
  6. ASP.NET Session的七点认识
  7. Vue CLI 3.0脚手架如何在本地配置mock数据
  8. jquery 加載
  9. arduino八段数码管使用
  10. caffe 用faster rcnn 训练自己的数据 遇到的问题
  11. 传智播客PHP面试题宝典开放下载
  12. smokeping with tcpping centos 7 环境
  13. POJ1163 数学三角求最大路径
  14. 【PM】关于系统数据库和服务现场升级的一些看法
  15. Python之安装第三方扩展库
  16. 【BZOJ4543】[POI2014]Hotel加强版 长链剖分+DP
  17. docker 安装持久化mysql
  18. 【二分答案】【Heap-Dijkstra】bzoj2709 [Violet 1]迷宫花园
  19. 对象存储API
  20. c语言用rand() 函数,实现random(int m)

热门文章

  1. IP数据包格式
  2. 经典SQL回顾之晋级篇
  3. 关于Cocos2d-x中的scheduleUpdate和update方法的使用
  4. e577. Enabling Antialiasing
  5. Swing组件都采用MVC设计模式
  6. PNG透明兼容IE6的几种方法(转)
  7. python中使用@property
  8. iftop、ifstat详解
  9. 【转】如何读懂Oracle文档中的语法图
  10. url传参错误的痛