Windows开启Hyper-V后部分应用端口被占用无法使用

Windows开启Hyper-V后部分应用端口被占用无法使用,记录解决过程


问题背景

本机的代理突然莫名奇妙的无法使用了,如果打开了代理就无法是上网,即使是使用全局模式或者直连模式也无法上网,国内国外的网站都无法访问。但是如果把代理关掉之后国内的网站是可以正常访问的。也就是说网络连接是没有问题的。

原因

由于安装了Hyper-V和WSL在windows环境使用Linux和Docker,没有关注到Hyper-V对端口的占用问题。

当Windows开启Hyper-V后,会在TCP 动态端口范围内随机占用一部分端口,大部分动态端口是比较靠后的,但是也可能会占用一些靠前的端口。

TCP动态端口(也称为临时端口或短暂端口)是用于客户端与服务器进行通信的端口,当一个客户端程序(如Web浏览器)需要与服务器(如Web服务器)建立连接时,操作系统会从动态端口范围内选择一个未使用的端口,用于该客户端的出站连接。

很多应用使用的端口基本在10000以内,如果Hyper-V刚好占用了靠前的端口会导致部分应用无法使用。

排查和解决
  • 代理使用的本机端口是7890,首先查看7890端口有没有在使用:

    netstat -ano | findstr "7890"
    
  • 查看TCP动态端口的范围:

    netsh int ipv4 show dynamicport tcp
    

    显示
    在这里插入图片描述
    表示从1024向后的58977个端口都是TCP动态端口范围,有可能会被占用

  • 查看被占用的端口号

    netsh int ipv4 show excludedportrange protocol=tcp
    

    发现7890端口在开始端口和结束端口之间,也就是端口被占用了,所以导致了代理用不了,流量转发不出去

  • 修改TCP动态端口的范围
    用管理员权限执行:

    netsh int ipv4 set dynamic tcp start=49152 num=16384
    

    把占用的端口指定为从49152开始,避免占用靠前的端口,端口数量通过num指定

  • 也可以将某些端口排除在TCP动态端口之外,避免被占用

    netsh int ipv4 add excludedportrange protocol=tcp startport=1430 numberofports=1
    
  • 重启电脑TCP动态端口被更新,7890端口被释放出来,代理就可以正常使用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值