You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure中Windows VM的Postman无法访问Linux VM上的Webservice求助

问题排查与解决步骤

一、先解决curl: (7) Failed to connect...连接拒绝问题

这是核心基础问题,需先打通网络连接,再处理403错误:

  • 检查Webservice监听地址
    你的Java程序启动时必须绑定到0.0.0.0(允许所有网卡访问),而非localhost或127.0.0.1(仅本地可访问)。在Linux虚拟机上执行以下命令查看监听状态:

    ss -tulpn | grep <你的服务端口号>
    # 例如服务用80端口,就执行 ss -tulpn | grep 80
    

    若输出显示127.0.0.1:xxx,说明仅绑定了本地回环,外部无法访问。需修改Java程序启动参数(比如Spring Boot项目设置server.address=0.0.0.0),确保服务监听所有可用网卡。

  • 验证Linux本地防火墙规则
    即使你认为已开放端口,仍可能存在防火墙规则未生效的情况:

    • 若使用ufw防火墙:
      ufw status
      
      确认输出包含你的服务端口/tcp ALLOW Anywhere,无此规则则执行:
      ufw allow <你的服务端口>/tcp
      ufw reload
      
    • 若使用firewalld防火墙:
      firewall-cmd --list-all
      
      查看ports列表是否包含你的服务端口,无此规则则执行:
      firewall-cmd --add-port=<你的服务端口>/tcp --permanent
      firewall-cmd --reload
      
  • 检查Azure网络安全组(NSG)规则
    Azure层面的NSG可能拦截了跨虚拟机的流量:

    1. 登录Azure门户,找到Linux虚拟机对应的NSG
    2. 查看入站安全规则,确认存在一条允许源为同VNet地址段(如10.0.0.0/24)、目标端口范围为你的服务端口、协议为TCP的规则,且该规则优先级高于拒绝类规则。

二、处理Http Error 403: The IP address/hostname is not allowed问题

若网络连接打通后仍出现403,说明服务本身存在IP白名单限制:

  • 检查Java程序的配置文件,查看是否有IP访问控制项(如Spring Security的IP白名单、自定义拦截器规则),将Windows虚拟机的私有IP添加至允许列表。
  • 若使用Tomcat等容器,检查容器配置文件(如context.xml中的RemoteAddrValve),确认未限制外部IP访问,或已将允许的IP范围配置正确。

三、其他排查点

  • 确认Linux上的启动脚本(你提到的批处理文件,Linux下应为shell脚本)参数正确,未指定错误的绑定地址或端口,查看服务启动日志,确认服务正常启动并监听预期的IP和端口。
  • 检查Linux虚拟机上的服务进程是否在运行:
    ps aux | grep <你的Java进程名>
    

内容的提问来源于stack exchange,提问作者user3204086

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:08:18