背景
和前端联调的时候,让前端调用我本地服务的时候,发现调不通。 然后就开启了一系列魔幻之旅了……
解决思路
1. ping
喊前端ping我的ip,这一步是ok的。
2. telnet
喊前端telnet我的ip和端口,这一步也是ok的。
额……陷入僵局了……,这咋整……
请外援
喊运维帮我们看看这是什么情况。
运维解决的方法也是先ping,再telnet,最后来了个curl 调用接口。
从图中我们可以看见,已经建立连接了并且将请求发送到我的电脑上了,可是我电脑没有给返回,连接还被重置了!!!
自己定位电脑上的问题
经过上面的排查,发现问题出现在我的电脑上。
排查其它端口是否正常
启了另一个服务,喊我同事调用,看看能不能调用的通。
结果是正常的。
查看监听8080的进程
netstat -anot|find "8080"
what fuck ???
为啥又两个进程6172和91324同时监听了我ipv4上的8080端口???
我启动的时候还不报端口冲突?
查看这两个进程到底是啥
最后发现一个是我的目标进程:91324
另外一个:6172 是vm nat 相关进程
也可以用命令形式在终端看
tasklist /fi "pid eq 6172"
tasklist /fi "pid eq 91324"
VMware Nat service
这到底是个什么东西?
这是我之前本地装的虚拟机,然后虚拟机用nat进行端口转发到宿主机上的端口。
没想到配置了这个之后,竟然不启动虚拟机也会起个进程监听我的端口。
解决方案
我用的是VMware,其它的软件自行做相应适配。
VMware NAT 服务使用的端口是在虚拟网络配置中设置的,可通过以下步骤修改:
- 打开虚拟网络编辑器:在 VMware 软件中,依次点击 “编辑” - “虚拟网络编辑器”。
- 选择 NAT 网络:在虚拟网络编辑器中,选择使用 NAT 模式的网络(通常是 VMnet8)。
- 点击 NAT 设置:在选中的网络设置区域,点击 “NAT 设置” 按钮。
- 修改端口转发规则:在 “NAT 设置” 窗口中,你可以看到端口转发规则列表。要修改现有规则的端口,选择相应规则后点击 “编辑”;要添加新的端口映射,点击 “添加”。在规则设置中,你可以修改主机端口(即宿主机上用于转发的端口)和虚拟机端口(即虚拟机内部服务监听的端口)。
- 保存设置:完成修改后,点击 “确定” 保存设置。
总结
联调过程不顺利,然后逐步排查原因,最后找到根本原因是由于vm net 服务占用了端口号。