HyperV Windows系统端口转发给主机 2021-12-13

背景

HyperV中有一个Windows系统虚拟机,并且此前在HyperV中已经用了一个单独的USB的WiFi模块作为虚拟交换机(主机中不使用该USB WiFi模块,如下图所示):

已有的网络

HyperV中的Windows系统虚拟机可以访问某个内网地址,希望能将虚拟机中能访问的该地址的端口开放给主机使用。

解决

构建共享网络

1、将Default Switch加载到虚拟机中:

加载网络适配器

2、在主机中找到该网络,查看IP(这里是172.28.224.1):

找到主机中IP

3、虚拟机的网络连接中找到该网络,设置固定IP,默认网关填刚才主机看到的IP:

设置固定IP
4、主机开启网络服务,虚拟机中用172.28.224.1访问,访问成功即可(如主机中有防火墙,可以打开防火墙对于本机这个IP的访问权限)。

访问端口
防火墙开启

开启http端口映射

虚拟机下载nginx https://nginx.org/download/nginx-1.21.4.zip 。解压出来,运行并允许网络。

在这里插入图片描述
主机访问虚拟机IP http://172.28.224.2/ 看到nginx就可以了

nginx

修改nginx.conf文件:

config文件

转发

如上图,转发了8890端口到192.168.2.2:8890

任务管理器中可以结束nginx任务(所有nginx都要结束),之后重新双击启动

任务管理器

这时候主机就可以访问了。

主机中访问

开启ssh转发

摘录自https://blog.csdn.net/gaojun6854/article/details/95058818

stream { 
	#stream模块,就跟http模块一样 
	upstream ssh {
		server 192.168.169.10:22;   #这里IP是虚拟机的,对应虚拟机的IP+Port
	}
	server { 
		#里面可以有多个监听服务
		#配置监听端口和代理的ip和端口就可以进行tcp代理了。 
		listen 9922;  #外层通信需要的tcp端口
		proxy_pass ssh;
		proxy_connect_timeout 1h;
		proxy_timeout 1h;
	}
}

nginx开机启动

进入 C:\Users\Hyper-V\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup (Hyper-V是用户名),将nginx的快捷方式复制在这

nginx配置WebSocket问题

使用jupyter的时候,除了http连接外还有ws连接,所以需要配置WebSocket,特别是proxy_set_header Connection "upgrade";

如图所示:

配置上了WebSocket

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值