最近项目使用git做版本控制,但公司内部网络不能上外网。想想现在git版本也是很火热的版本管理,所以就自己在虚拟机中搭建了gitlab。由于IP资源限制,虚拟机和物理主机是NAT网络关系。那么问题来了其它IP如何访问NAT下的虚拟机呢?

正文
其实就是把虚拟机的端口映射到物理主机的端口上,关系如下图。
这里写图片描述

linux/unix中使用ssh命令,而windows中也有类似的命令netsh。客户端链接物理主机的“服务端口a”和“服务端口b”从而访问虚拟机中的服务。

命令如下
可以查看存在的转发
netsh interface portproxy show all

添加一个IPV4到IPV4的端口映射
netsh interface portproxy add v4tov4 listenport=22 connectaddress=ip connectport=port
删除指定转发端口
netsh interface portproxy delete v4tov4 listenport=port

例子
假定需要通过192.168.1.8的14941端口连接192.168.1.118的22端口,则需要在192.168.1.8主机的命令行输入如下语句
如果已经安装IPV6,该条语可以不需要
netsh interface ipv6 install
操作系统开启了主机防火墙,需要放行TCP 14941的入站连接
netsh interface portproxy add v4tov4 listenport=14941 connectaddress=192.168.1.118 connectport=22
取消上面配置的端口转发,可以用如下语句:
netsh interface portproxy delete v4tov4 listenport=14941
如果想查看已经配置了哪些端口转发,可以用如下语句:
netsh interface portproxy show v4tov4

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐