Hyper-V虚拟机外网访问解决方案
解决方案:使用Windows自带的netsh映射解决,下面详细解释一下netsh的常用指令用法。
添加端口映射
netsh interface portproxy add v4tov4 listenaddress=监听IP listenport=监听端口 connectport=目标端口 connectaddress=目标IP
- 监听IP:一般默认为主机IP即可。
- 监听端口:你要转发的外网端口。
- 目标IP:虚拟机的内内网IP。
- 目标端口:虚拟机需要映射的端口。
实际举例使用
假设我的Hyper-V虚拟机内网IP是192.168.137.101,需要远程连接桌面,默认端口为3389。那么powershell使用指令 netsh interface portproxy add v4tov4 listenport=10001 connectport=3389 connectaddress=192.168.137.101
即可使用外网10001端口进行访问。
提示:监听IP如果不输入默认为“*”,也就是本地IP。
删除端口映射
netsh interface portproxy delete v4tov4 listenaddress=监听IP listenport=监听端口
- 监听IP:你设置的映射主机IP
- 监听端口:你设置的外网连接端口。
实际举例应用
如果我要删除上述所添加的外网连接端口为10001的远程端口映射,那么使用powershell执行指令 netsh interface portproxy delete v4tov4 listenport=10001
即可删除。
提示:监听IP如果不输入默认为“*”,也就是本地IP。
查看映射列表
netsh interface portproxy show all
如果只想看v4tov4的列表:
netsh interface portproxy show v4tov4
后记
一开始其实也接触过netsh,但是最主要的问题就是分不清监听和连接哪个是映射方哪个是被映射方,最近才搞明白,所以才写下来这篇文章,避免自己忘掉。。listen属于映射方,也就是主机,connect属于被映射方,一般都是虚拟机。