VMware NAT 模式配置端口映射

最近在开发过程中遇到这么一个场景:

  • 老王只有一台 Windows 操作系统的台式机,要对一款嵌入式 Linux 的产品进行开发与调试,需要在 Ubuntu 系统下进行软件编译。
  • 由于公司的网络资源紧张,一个员工只分配一个固定的 IP 地址,但是要调试的嵌入式 Linux 产品是预留了一个 IP 地址的。
  • 为了提升调试效率,嵌入式 Linux 的这款产品需要用 NFS 服务直接挂载 Ubuntu 系统的指定目录,从而避免在宿主机与嵌入式设备之间进行大量的文件拷贝。

针对场景的三个要求,选择实现方案如下:

  • 公司没有 Ubuntu 的服务器,那就在 Windows 操作系统上安装 VMware Ubuntu虚拟机。
  • 公司局域网 IP 地址紧缺,台式机有 IP 地址,要调试的嵌入式 Linux 设备也有 IP 地址,但是 Ubuntu 虚拟机没有可用的局域网 IP 了。所以,只能将虚拟机配置为 NAT 模式。
  • 嵌入式设备需要通过 NFS 挂载 Ubuntu 系统的指定目录,但是 NAT 模式下,嵌入式 Linux 设备没办法直接对虚拟机进行网络访问啊,这咋办?简单,把 Ubuntu 虚拟机上 NFS 相关的网络端口映射到 Windows 台式机上就可以了。

首先,确定 VMware 虚拟机处于 NAT 模式。

image-20210313115156304

第二,确定虚拟机的 IP 地址。

linux@linux-virtual-machine:~$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.233.142  netmask 255.255.255.0  broadcast 192.168.233.255
        inet6 fe80::c1c8:818d:cc84:c2d3  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:55:23:85  txqueuelen 1000  (Ethernet)
        RX packets 73  bytes 8393 (8.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 107  bytes 10855 (10.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 126  bytes 10034 (10.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 126  bytes 10034 (10.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

第三,确定 NFS 服务相关的主要端口(portmapper,nfs,mountd)。

linux@linux-virtual-machine:~$ rpcinfo -p localhost
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp  40001  mountd
    100005    1   tcp  40001  mountd
    100005    2   udp  40001  mountd
    100005    2   tcp  40001  mountd
    100005    3   udp  40001  mountd
    100005    3   tcp  40001  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049
    100003    3   udp   2049  nfs
    100227    3   udp   2049
    100021    1   udp  40002  nlockmgr
    100021    3   udp  40002  nlockmgr
    100021    4   udp  40002  nlockmgr
    100021    1   tcp  40002  nlockmgr
    100021    3   tcp  40002  nlockmgr
    100021    4   tcp  40002  nlockmgr

可以看到,portmapper 端口号是 111,nfs 端口号是 2049,mountd 的端口号是 40001。

注意:portmapper(111) 和 nfs(2049) 两个端口号是固定的,mountd 的端口号随机的。为了映射方便,老王将其配置为固定的 40001端口了(配置方法可以参考之前的文章:Ubuntu 18.04 固定 NFS 端口)。

第四,运行“虚拟网络编辑器“,以下两种方法可以任选一种。

image-20210313120258253

image-20210313120333910

第五,添加端口映射(以 111 端口为例,依次完成 2049 和 40001 的端口映射)

image-20210313121313327

OK,到这一步,端口映射的步骤就配置完了。嵌入式 Linux 设备端在执行 mount 命令时,只要指定老王台式机的 IP 地址和 mountd 端口号,就可以挂载虚拟机上了目录了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值