ArchWSL网络配置教程:WSL2端口转发与防火墙规则设置
在使用ArchWSL(ArchLinux on WSL)进行开发或服务器部署时,经常需要从Windows主机或局域网访问WSL2中运行的服务。本文将详细介绍WSL2端口转发配置方法和防火墙规则设置,解决本地开发环境中服务访问难题。
准备工作
确保已安装ArchWSL并切换到WSL2版本。通过以下命令检查当前WSL版本:
wsl --list --verbose
若版本为1,可通过Arch.exe工具切换:
Arch.exe config --wsl-version 2
WSL2端口转发配置
手动配置方法
WSL2运行在Hyper-V轻量级虚拟机中,需通过Windows端口转发实现外部访问。以将WSL2的8080端口转发到Windows的8080端口为例:
- 获取WSL2实例IP地址:
ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}/\d+' | cut -d/ -f1
- 在Windows管理员命令提示符中执行端口转发命令:
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=<WSL2_IP>
自动配置脚本
创建port-forward.ps1脚本实现自动配置:
$wslIp = wsl -d ArchWSL -- ip addr show eth0 | Select-String -Pattern 'inet\s(\d+\.\d+\.\d+\.\d+)/' | ForEach-Object { $_.Matches.Groups[1].Value }
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=$wslIp
防火墙规则设置
Windows防火墙配置
- 允许端口通过Windows防火墙:
netsh advfirewall firewall add rule name="WSL2-8080" dir=in action=allow protocol=TCP localport=8080 remoteip=any profile=any
- 查看已配置规则:
netsh advfirewall firewall show rule name="WSL2-8080"
ArchWSL内部防火墙
ArchWSL默认未启用防火墙,可通过预设配置文件安装并配置iptables:
sudo pacman -S iptables
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
验证与测试
启动一个测试服务验证配置是否生效:
python -m http.server 8080
在Windows浏览器中访问http://localhost:8080,或在局域网其他设备访问http://<Windows_IP>:8080。
常见问题解决
端口冲突处理
若提示端口已被占用,可通过以下命令查找占用进程:
netstat -ano | findstr :8080
WSL2 IP变化问题
WSL2重启后IP会变化,可通过任务计划程序设置脚本在系统启动时自动更新端口转发规则。
相关资源
- 官方文档:How-to-Setup
- 多实例管理:README.md
- 中文文档:i18n/README_zh-cn.md
通过以上步骤,可实现稳定的WSL2网络配置,满足本地开发和测试需求。建议定期备份配置,避免系统更新导致规则丢失。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



