惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
V
V2EX
G
Google Developers Blog
F
Full Disclosure
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
H
Hacker News: Front Page
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
Hacker News - Newest:
Hacker News - Newest: "LLM"
A
About on SuperTechFans
The Cloudflare Blog
C
Cisco Blogs
D
DataBreaches.Net
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
P
Privacy International News Feed
Microsoft Security Blog
Microsoft Security Blog
Help Net Security
Help Net Security
Recorded Future
Recorded Future
PCI Perspectives
PCI Perspectives
S
Schneier on Security
AI
AI
N
News | PayPal Newsroom
雷峰网
雷峰网
C
Cyber Attacks, Cyber Crime and Cyber Security
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
Schneier on Security
Schneier on Security
S
Securelist
云风的 BLOG
云风的 BLOG
Stack Overflow Blog
Stack Overflow Blog
博客园_首页
AWS News Blog
AWS News Blog
TaoSecurity Blog
TaoSecurity Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园 - 三生石上(FineUI控件)
C
CXSECURITY Database RSS Feed - CXSecurity.com
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cloudbric
Cloudbric
C
Cybersecurity and Infrastructure Security Agency CISA
Project Zero
Project Zero
C
Check Point Blog
S
Security Affairs

博客园 - 007少侠

使用Recaf编辑汇编代码直接修改java的编译代码class Centos Linux 更换源,原官方源已经不再提供服务 如何在Docker容器中的Linux系统(Ubuntu + Centos Linux)里面使用systemctl Centos Linux 7 搭建邮件服务器(postfix + dovecot) Ubuntu Linux 搭建邮件服务器(postfix + dovecot) Python pip pip3 源设置成国内源,阿里云源,清华大学源 利用云服务器实现内网穿透(frp),开启个人电脑(windows)可远程桌面访问 使用docker安装centos7并挂载主机目录 Rust交叉编译Mac编译Linux/Windows平台 Linux下安装dart sdk并配置环境变量 Linux下安装JDK-openj9并配置环境变量 centos7 安装 bbr加速 linux环境常用命令和java/jvm常用命令 mybatis plus + druid多数据源(使用dynamic实现) docker将容器打包成镜像并传输至其他服务器部署(可用于容器重新run) .gitignore == git添加忽略不生效解决方案 jenkins自动构建项目源码git pull时出现冲突的终极解决方案(git远程覆盖本地分支) mysql查询,根据时间查询:几天前、几天内的数据 spring boot 使用aop实现拦截器
【WSL2】在Windows通过自定义域名访问wsl2中的服务
007少侠 · 2024-07-26 · via 博客园 - 007少侠

前言

  • 目前在windows与windows的wsl系统之间,宿主机无法通过相对较固定的方式来进行网络访问,通常需要使用wsl的ip来访问,而ip可能不是很直观并且可能会有变更,当前教程解决了这个问题,通过hosts映射的方式实现windows宿主机访问wsl服务。
  • 脚本的原理:在linux启动时,执行一次修改windows上的hosts文件的脚本。为windows添加wsl的host,这样就能做到自定义域名访问

具体教程

  1. 给予当前windows用户修改hosts文件的权限

快捷键win+r,输入C:\Windows\System32\drivers\etc,或在该文件夹中找到hosts文件,右键选择“属性” ,选择“安全选项卡”;
点击“编辑”,找到当前用户组(一般是Users),为其添加完全控制权限,即勾选"完全控制",弹出的对话框确认,确定即可。

  2. 进入Windows Linux子系统(切换到root账户操作),在/opt/目录下新建脚本。

cd /opt/
vim win_wsl_domain.sh

  3. 粘贴脚本内容,其中wsl_domain为自定义域名,可以修改为想要的,保存。

#!/bin/bash
win_hosts_path="/mnt/c/Windows/System32/drivers/etc/hosts"
#=================
# win_domain="win02"
# # 获取 win 的 ip
# win_ip=$(/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command "Get-NetIPAddress -AddressFamily IPv4 | Where-Object { \$_.InterfaceAlias -notmatch 'vEthernet' -and \$_.AddressState -eq 'Preferred' -and \$_.IPAddress -ne '127.0.0.1' } | Select-Object -ExpandProperty IPAddress -First 1")
# # 判断是否已存在 win 的域名,如果存在则修改,否则追加
# if grep -wq "$win_domain" $win_hosts_path; then
#     # 此处因为权限问题没有直接用 sed 修改 hosts 文件
#     win_hosts=$(sed -s "s/.* $win_domain/$win_ip $win_domain/g" $win_hosts_path)
#     echo "$win_hosts" > $win_hosts_path
#     echo "$(date '+%Y-%m-%d %H:%M:%S') 修改win-hosts[$win_domain] ==> $win_ip $win_domain"
# else
#     echo "$win_ip $win_domain" >> $win_hosts_path
#     echo "$(date '+%Y-%m-%d %H:%M:%S') 新增win-hosts[$win_domain] ==> $win_ip $win_domain"
# fi
#=================
wsl_domain="wslubuntu"
# 获取 wsl 的 ip
wsl_ip=$(ifconfig eth0 | grep -w inet | awk '{print $2}')
# 判断是否已存在 win 的域名,如果存在则修改,否则追加
if grep -wq "$wsl_domain" $win_hosts_path; then
    # 此处因为权限问题没有直接用 sed 修改 hosts 文件
    win_hosts=$(sed -s "s/.* $wsl_domain/$wsl_ip $wsl_domain/g" $win_hosts_path)
    echo "$win_hosts" > $win_hosts_path
    echo "$(date '+%Y-%m-%d %H:%M:%S') 修改win-hosts[$wsl_domain] ==> $wsl_ip $wsl_domain"
else
    echo "$wsl_ip $wsl_domain" >> $win_hosts_path
    echo "$(date '+%Y-%m-%d %H:%M:%S') 新增win-hosts[$wsl_domain] ==> $wsl_ip $wsl_domain"
fi
echo "host change ok!"

  4. 把上述脚本设置成一个服务,方便启动时自动执行和日志的查看,粘贴内容并保存。

vim /etc/systemd/system/winhosts.service

粘贴内容:

[Unit]
Description=Run my script at startup

[Service]
ExecStart=bash /opt/win_wsl_domain.sh
Restart=on-failure

[Install]
WantedBy=default.target

  5. 加载服务并设置开机执行

sudo systemctl daemon-reload
sudo systemctl start winhosts.service
sudo systemctl enable winhosts.service

  6. 查看日志,日志正常即可

journalctl -u winhosts.service -f -o cat

  7. 后续操作回到宿主机windows系统打开命令行工具PowerShell,此时在宿主机已经可以使用自定义的域名(wslubuntu) ping通wsl2子系统了,如下:

   8. 最后做一个端口映射(此例为ssh服务的端口22,局域网内其它电脑直接ssh root@上述宿主机ip即可完成连接wsl2系统),方便局域网内其它主机访问到此电脑的wsl2子系统中的服务(其它)

添加端口映射:
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=wslubuntu connectport=22
删除端口映射:
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=22
查看所有的映射:
netsh interface portproxy show all