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

如何诊断同局域网内无法访问WSL中Apache服务器的问题

WSL2中Apache局域网无法访问的问题排查与解决

概述

在Windows 11家用电脑的WSL2(Ubuntu 22.04)环境下搭建Apache服务器,通过ip a获取eth0的内网IP(如172.26.xx.xx)后,本机可正常访问网页,但同局域网内其他设备无法访问。

详细配置

ports.conf(/etc/apache2/,已去除注释)

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

apache2.conf(/etc/apache2/,已去除注释)

DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100

KeepAliveTimeout 5

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

HostnameLookups Off

ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

Include ports.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

AccessFileName .htaccess

<FilesMatch "^.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

000-default.conf(/etc/apache2/sites-available/)

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com
    ServerAdmin example@example.com
    DocumentRoot /var/www/html
    <Directory /var/www/html>
           AllowOverride All
           Options All
           Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

注:已使用注册域名替换示例中的example.com,并通过ddclient配置动态DNS(公网IP与域名解析一致),该配置与局域网访问问题无关。

已尝试操作

端口转发相关

  • WSL终端执行sudo ufw status verbose,确认80、443端口已开放
  • 通过netsh interface portproxy将Windows的80、443端口映射到WSL对应端口(目标IP为172.26.xx.xx,监听地址0.0.0.0)
  • 在Windows Defender防火墙创建入站规则,允许80、443端口的TCP流量
  • 执行netstat -aobn | findstr :80和Get-NetTCPConnection | where localport -eq 80,确认端口处于监听状态

日志排查

  • 检查/var/log/apache2/error.log,仅包含Apache重启日志,无错误记录

环境参数

  • Windows 11 23H2(版本25967.1010)
  • WSL版本2.0.3.0
  • Ubuntu 22.04.03,内核5.15.123.1-microsoft-standard-WSL2
  • Apache/2.4.52 (Ubuntu)

诊断步骤与解决方案

诊断方法

  1. 验证端口可达性:在局域网设备上用telnet Windows主机局域网IP 80或nc -zv Windows主机局域网IP 80测试端口是否能通。不通则排查转发/防火墙,通但浏览器无法访问则检查Apache配置或域名解析。
  2. 检查WSL网络模式:WSL2默认NAT模式需端口转发;WSL2.0+支持桥接模式,可直接获取局域网IP。执行wsl --set-version Ubuntu 22.04 2确认版本,再检查网络模式。
  3. 确认Apache监听地址:WSL内执行netstat -tulpn | grep apache2,确保Apache监听0.0.0.0:80而非仅127.0.0.1:80。
  4. 排查防火墙规则:确认Windows防火墙入站规则允许所有远程IP访问80/443端口,同时检查是否有第三方防火墙拦截流量。
  5. 直接访问WSL IP测试:在局域网设备上直接访问WSL的eth0 IP(172.26.xx.xx),若无法访问,说明NAT网络隔离了局域网连接,需调整网络模式或端口转发。

解决方案

方案1:修复NAT模式下的端口转发

WSL的IP会随重启变化,可编写PowerShell脚本自动更新转发规则:

# 获取WSL的IP
$wsl_ip = (wsl hostname -I).Trim()
# 删除旧规则
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0
netsh interface portproxy delete v4tov4 listenport=443 listenaddress=0.0.0.0
# 添加新规则
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=$wsl_ip
netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=$wsl_ip

将脚本保存为update_wsl_portproxy.ps1,每次WSL重启后运行。同时确保Windows防火墙入站规则覆盖所有网络类型。

方案2:切换WSL到桥接模式(推荐)

  1. 管理员权限打开Windows终端,执行:
    wsl --shutdown
    
  2. 创建或修改%UserProfile%\.wslconfig文件,添加:
    [wsl2]
    networkMode=bridged
    # 替换为你的网卡名称,可通过Get-NetAdapter查看
    adapterName="Wi-Fi"
    
  3. 重启WSL,执行ip a会看到eth0获取到局域网同网段IP(如192.168.1.x),无需端口转发,局域网设备可直接访问该IP。

方案3:调整Apache监听配置

若Apache仅监听本地回环,修改/etc/apache2/ports.conf:

Listen 0.0.0.0:80

重启Apache:

sudo systemctl restart apache2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:55:39