背景
HyperV中有一个Windows系统虚拟机,并且此前在HyperV中已经用了一个单独的USB的WiFi模块作为虚拟交换机(主机中不使用该USB WiFi模块,如下图所示):
HyperV中的Windows系统虚拟机可以访问某个内网地址,希望能将虚拟机中能访问的该地址的端口开放给主机使用。
解决
构建共享网络
1、将Default Switch加载到虚拟机中:
2、在主机中找到该网络,查看IP(这里是172.28.224.1):
3、虚拟机的网络连接中找到该网络,设置固定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.conf
文件:
如上图,转发了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";
如图所示: