Hyper-V使用NAT如何通过外网访问
上一篇文章在Hyper-V下搭建了NAT模式的网络结构,解决了虚拟机的网络问题以及物理机和虚拟机的相对网络路径问题
但是问题来了
NAT是通过物理网卡共享连接外部网络,而直接使用外部网络的是物理机
但是我虚拟机有个端口,想对外部网络开放访问怎么办
外部是访问不了本地的NAT的,只能访问物理机
这个时候,我们就在物理机上动手脚了
我的测试环境是WIN10专业版
原理是使用netsh命令,实现端口转发
外部访问物理机的指定端口的时候,物理机将其转发至指定的NAT网络下的IP和端口
具体的是netsh interface portproxy
MSDN上的官方文档链接: Netsh interface portproxy commands
使用方法文档其实很清楚了,我这里再介绍一下几个
[添加端口转发]
比如使用IPv4+Port访问转发到IPv4+Port访问,就使用
netsh interface portproxy add v4tov4 listenaddress=监听IP listenport=监听端口 connectport=目标端口 connectaddress=目标IP
其中listenaddress可以省略,省略后就会监听所有访问物理机的IP,就不用担心网络环境改变后物理机的IP改变需要重新设置的问题
比如我想外部访问80端口,转发到虚拟机的192.168.147.199:80
命令就是
netsh interface portproxy add v4tov4 listenport=80 connectport=80 connectaddress=192.168.147.199
[删除端口转发]
比如我要删除一个v4tov4的端口转发,就使用
netsh interface portproxy delete v4tov4 listenaddress=监听IP listenport=监听端口
如果你的监听IP设置的泛型,删除也不用填
比如我要删除上述添加的转发规则,命令就是
netsh interface portproxy delete v4tov4 listenport=80
[查看所有转发规则]
使用如下命令
netsh interface portproxy show all
当然如果你只想看v4tov4
就把最后改为v4tov4
netsh interface portproxy show v4tov4
[补充]
有些人说执行不了的,用管理员权限打开powershell再试,还有要确保你的端口是正确的以及没有被占用