起因
需要将自己的数据库共享给局域网内他人使用,但是自己的数据库装在Hyper-V的虚拟机内,只能在虚拟交换机内的主机上访问
解决方案
虚拟机网络环境配置见此
本机在虚拟交换机中的IP地址为10.10.0.1
,虚拟机在虚拟交换机中的IP地址为10.10.0.100
,本机在局域网内的IP地址为192.168.14.77
先添加NAT映射
Add-NetNatStaticMapping -NatName "vNAT" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 10.10.0.100 -InternalPort 3306 -ExternalPort 3306
将虚拟机10.10.0.100
的3306端口映射到本机的10.10.0.1
的3306端口
再添加本机的端口代理
netsh interface portproxy add v4tov4 listenport=3306 listenaddress=192.168.14.77 connectaddress=10.10.0.100 connectport=3306
将本机在虚拟交换机中的10.10.0.1
的3306端口映射到本机在局域网中的192.168.14.77
的3306端口
用同局域网内的其他设备连接192.168.14.77:3306
便可以成功连接到虚拟机内的数据库
PS:可以在使用完后用以下命令删除相关配置
netsh interface portproxy delete v4tov4 listenaddress=192.168.14.77 listenport=3306
Remove-NetNatStaticMapping
参考
https://www.christchen.top/archives/porttunnel
https://wbuntu.com/hyper-v-vm-port-expose/
https://docs.microsoft.com/en-us/powershell/module/netnat/?view=windowsserver2019-ps