Skip to content

查看 ubuntu 里的 ip

shell
# or ip addr show
ip a

wsl 端口映射到主机

js
module.exports = {
  devServer: {
    host: '0.0.0.0', // 监听所有IP地址,包括局域网IP
    port: 8080, // 设置服务的端口号
    disableHostCheck: true, // 禁用主机检查(开发环境中可以使用)
  },
}
cmd
ip addr show eth0
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=<WSL_IP_ADDRESS>

#查看所有代理了的端口
netsh interface portproxy show all

开启自动映射 wsl 端口到主机

创建setup_wsl_portproxy.bat文件添加到开机目录 C:\Users\【your user】\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

bat
@echo off


REM Start WSL
echo Starting WSL...
wsl -d Ubuntu-22.04 -e echo WSL is now started


REM Function to get WSL IP address
:GET_WSL_IP
for /f "tokens=*" %%i in ('powershell.exe -Command "(wsl -e ip -4 addr show eth0 | Select-String -Pattern 'inet\s+(\d+\.\d+\.\d+\.\d+)' ).Matches.Groups[1].Value"') do set wsl_ip=%%i

REM Check if WSL IP is empty
if "%wsl_ip%"=="" (
    echo Waiting for WSL to start...
    timeout /t 5 > nul
    goto GET_WSL_IP
)

REM Configure port forwarding
netsh interface portproxy delete v4tov4 listenport=5003 listenaddress=0.0.0.0
netsh interface portproxy add v4tov4 listenport=5003 listenaddress=0.0.0.0 connectport=5003 connectaddress=%wsl_ip%

netsh interface portproxy delete v4tov4 listenport=3006 listenaddress=0.0.0.0
netsh interface portproxy add v4tov4 listenport=3006 listenaddress=0.0.0.0 connectport=3006 connectaddress=%wsl_ip%

echo Port forwarding set for IP %wsl_ip%

mysql 代理

  1. 确认 MySQL 在 Windows 上允许远程访问:

默认情况下,MySQL 可能只监听 localhost。你需要确保 MySQL 配置为监听所有 IP 地址。

  • 打开 MySQL 的配置文件(通常是 my.ini 或 my.cnf),文件位置可能在 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 或 C:\Program Files\MySQL\MySQL Server 8.0\my.ini。

  • 找到 [mysqld] 部分,确保有以下配置项:

ini
bind-address = 0.0.0.0
  • 保存文件并重启 MySQL 服务。
  1. 创建允许远程访问的 MySQL 用户: 打开 MySQL 命令行客户端,使用具有足够权限的账户登录,并执行以下 SQL 命令:
sql
CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

SHOW GRANTS FOR 'root'@'%';
  1. 在 WSL 中安装 MySQL 客户端:
shell
sudo apt update
sudo apt install mysql-client
  1. 重启 MySQL 服务
cmd
# MySQL80 替换成自己的mysql服务名
Restart-Service -Name 'MySQL80'
# or use below shell
# net stop MYSQL57
# net start MYSQL57

# 查询window服务 TODO grep
sc query type= service state= all | findstr "MySQL"

wsl clash proxy

link

  • WSL 通过 Win 访问网络,所以 WSL 的网关指向的是 Windows,DNS 服务器指向的也是 Windows,设置 WSL 的 proxy 为 win 的代理 ip+端口即可

  • WSL 中的 DNS server 在/etc/resolv.conf 中查看,该文件是由/etc/wsl.conf 自动生成的。

  • 如果关闭了 wsl.conf 中自动生成 resolve.conf 并自行修改了 resolve.conf,DNS nameserver 并不是本机 win ip

  • 需要开启 wsl.conf 的自动生成,再运行以下命令

  • https://zhuanlan.zhihu.com/p/153124468

  • 添加到环境变量设置中,例如~/.zshrc

shell
# 定义一个函数来设置WSL代理
set_proxies() {
    # 获取 IPv4 地址并去除前后的空白字符
    hostip=$(powershell.exe -Command "ipconfig" | awk '/IPv4/{print $NF}' | tail -n 1 | tr -d '[:space:]'| tr -d '\n'| tr -d '\r')

    # 等待 hostip 变量被赋值后再设置代理
    if [ -n "$hostip" ]; then

        export https_proxy="http://$hostip:7890"
        echo 主机IP: $hostip
        echo Proxy URL:$https_proxy
        export http_proxy="http://$hostip:7890"
        export all_proxy="socks5://$hostip:7890"
        export no_proxy="localhost,127.0.0.1,::1,192.168.1.32"
    else
        echo "Failed to get hostip"
    fi
}
set_proxies
# 注意: clash 需要开启 Allow Lan