首页 > 系统相关 >在Windows和wsl2中互相网络访问(转)

在Windows和wsl2中互相网络访问(转)

时间:2024-01-23 16:48:08浏览次数:36  
标签:domain Windows win wsl 访问 hosts windows wsl2

原文:https://blog.csdn.net/zx156955/article/details/135195563

作者:kamjin1996

来源:CSDN

前言
目前在windows与windows的wsl系统之间,还无法通过相对较固定的方式来互相网络访问,通常需要使用各自的ip来互相访问,而ip可能不是很直观并且可能会有变更,当前教程解决了这个问题,通过hosts映射的方式打通wsl与windows宿主机之间的访问。
脚本的原理:在linux启动时或shell加载时,执行一次修改windows和linux上的hosts文件的脚本。为windows添加wsl的host以及为wsl添加windows的host,这样就能做到互相映射。
注:
当前教程演示使用的wsl2环境为linux ubuntu,故在脚本中使用“ubuntu”来映射wsl2子系统的实际ip,该名称可以根据需要自行定义。

一、具体步骤
给予当前windows用户修改hosts文件的权限
快捷键win+r,输入C:\Windows\System32\drivers\etc,或在该文件夹中找到hosts文件,右键选择“属性” ,选择“安全选项卡”;

点击“编辑”,找到当前用户组(一般是Users),为其添加完全控制权限,即勾选"完全控制",弹出的对话框确认,确定即可。

编辑脚本
启动wsl2子系统,在命令行中输入:

cd ~
vim wsl2_auto_host_to_win.sh

脚本内容如下:

# 为 win 设置 wsl host
# win hosts 文件路径
win_hosts_path="/mnt/c/Windows/System32/drivers/etc/hosts"

# !!!为 wsl2 设置的域名,可以改成自己习惯的名称,后面使用该名称来访问资源
wsl_domain="ubuntu"

# 获取 wsl2 的 ip
wsl_ip=$(ifconfig eth0 | grep -w inet | awk '{print $2}')
# 判断是否已存在 wsl2 的域名,如果存在则修改,否则追加
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
else
    echo "$wsl_ip $wsl_domain" >> $win_hosts_path
fi

# 为 wsl 设置 win host
wsl_hosts_path="/etc/hosts"

# 为 windows主机 设置的域名,可以改成自己习惯的名称,后面使用该名称来访问资源
win_domain="win"
win_ip=$(cat /etc/resolv.conf | grep "nameserver" | awk '{print $2}')
if grep -wq "$win_domain" $wsl_hosts_path
then
    wsl_hosts=$(sed -s "s/.* $win_domain/$win_ip $win_domain/g" $wsl_hosts_path)
    echo $wsl_hosts > $wsl_hosts_path
else
    echo "$win_ip $win_domain" >> $wsl_hosts_path
fi
echo "host change ok!"

保存脚本,给予脚本可执行权限

chmod +x wsl2_auto_host_to_win.sh

注意:
如果脚本是在windows编辑过的,可能会有字符转义的问题,需要通过dos2unix转义字符后才可以执行。
安装dos2unix(可选):

# 如果没有更新过软件列表则需要更新
sudo apt-get update
sudo apt-get install dos2unix
  1. 设置脚本自启

编辑用户目录下的.bashrc

cd ~
vim .bashrc

在该文件末尾添加以下内容(具体脚本位置请替换成你放置脚本的实际位置)

sudo /home/user/wsl2_auto_host_to_win.sh

保存后退出shell界面,当再进入wsl2子系统时,输入当前账户密码,就会自动执行一次脚本,也就完成了windows和wsl2中hosts文件的修改。

如果提示没有ifconfig需要安装:

sudo apt-get install net-tools

二、验证
在windows上打开cmd,执行:ping ubuntu
以及在wsl2子系统中执行:ping win
即可验证是否已经可以互相访问。

结语
当前脚本优雅且轻松的实现了在wsl2和宿主机windows之间互相通过固定domain访问的方式,可以为日常开发工作带来一定程度的便捷性。

wsl中获取windows ip参考:https://learn.microsoft.com/en-us/windows/wsl/networking


————————————————
版权声明:本文为CSDN博主「kamjin1996」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zx156955/article/details/135195563

标签:domain,Windows,win,wsl,访问,hosts,windows,wsl2
From: https://www.cnblogs.com/ajianbeyourself/p/17982798

相关文章

  • Windows内核开发-[1]、配置开发环境
    前言以前在书上看到,说现在的安全软件已经将对抗转移到内核层了,深以为然。因为像360安全卫士,腾讯电脑管家这样的安全软件,仅通过用户层api很难做到更高级的防御和控制。早些年我想获取电脑硬盘的详细使用信息,像鲁大师那样,但是一番找寻下来,并未在网上搜到满意的答案,自己所学也有限......
  • 【Windows运维系列5】自动识别并封堵恶意IP,让你的Windows服务器安全更上一层楼
    在前面的文章中,我们介绍了在我为一位使用Hostease的服务器客户进行了安全加固,通过bat批处理脚本来实现自动修改服务器Windows操作系统的远程端口,建立了非常可靠的登陆安全防护,让我们的Windows服务器更安全。虽然国内有像360安全卫士这样的软件,功能确实非常强大,但是功能太多了,如果设......
  • nginx 替换访问路径前缀
    可以使用nginx的rewrite模块来替换访问路径前缀。例如,将所有以“/api”开头的请求转发到后端服务器,并将“/api”替换为“/backend”,可以在nginx配置文件中添加以下规则: location/api{rewrite^/api(.*)$/backend$1break;proxy_passhttp://backend-server;} 这样,当......
  • Windows11插u盘显示不出来
    如果Windows11系统无法识别U盘,可以尝试以下步骤解决问题:点击“此计算机”,然后在弹出的菜单中选择“管理”。在“计算机管理”窗口中,点击左侧的“设备管理器”。在“设备管理器”中,展开“通用串行总线控制器”。在“通用串行总线控制器”下,找到“USB大容量存储设备”并点击鼠......
  • 使用windows工具获取性能数据(任务管理器+资源监视器)
    Windows工具 任务管理器执行taskmgr来打开任务管理器CPU内存磁盘 网络GPU 进程详细情况 资源监视器执行perfmon来打开资源监视器概述CPU内存磁盘网络 ......
  • 在Ubuntu上部署Redis并设置密码以及允许外网访问
    安装Redis更新系统包列表:sudoaptupdate安装Redis-server和Redis-tools:sudoaptinstallredis-serverredis-tools配置Redis编辑Redis配置文件(通常位于/etc/redis/redis.conf)以允许远程访问和设置密码:sudovim/etc/redis/redis.conf在配置文件中找到以下几行进行修......
  • 移动宽带下GitHub网页无法访问的解决办法
    修改主机hosts内容,文件位置:C:\Windows\System32\drivers\etc(注意在MAC端/Linux端需要在终端用命令:sudovim/etc/hosts)。在hosts文件中追加下面两行:140.82.112.4github.com199.232.69.194github.global.ssl.fastly.net前面的IP地址不同主机不一样,可通过下方地址进行查询:g......
  • Windows环境下的Gitlab的环境搭建
    描述:windows下用VitrualBox搭建gitlab环境因为gitlab不支持windows,所以要在windows下使用,就必须借助虚拟机(vitualBox,Vmware),或者Docker。1)下载虚拟机镜像:https://bitnami.com/stack/gitlab下载后得到一个ova格式的文件,它是虚拟机镜像文件。bitnami提供的是搭建了gitlab环境的d......
  • 2024新版Windows 11要来了!16GB内存需求引热议 只是推荐配置
    最近,TrendForce集邦咨询的一份报告指出,微软已经将AIPC的内存基线设置为16GB。有媒体表示,这也意味着,新版Windows11的AI功能需要至少16GB内存才能运行。消息曝光后引发热议。对此,WC报道称,微软尚未就上述内存需求发表官方评论。16GB内存很可能只是微软的推荐配置,而非最低配置要求......
  • 如何备份已经安装并设置AutoHotkey脚本编程环境的Windows电脑系统分区 2024.01.22
     如何备份已经安装并设置AutoHotkey脚本编程环境的Windows电脑系统分区2024.01.22第1步:邮购并制作银灿IS903可启动U盘,量产Emulation-CD-ROM所用ISO镜像选用从www.firpe.cn下载的PE光盘镜像。第2步:正确安装电脑软件并调整电脑各项设置备份硬盘分区表和启动扇区信息转移个......