这里做一篇关于wsl2更新到最新版本使用镜像网络,但是docker创建的容器不能被访问的问题(困扰了我一整天)

本文介绍了Windows2023WSL2的一项新功能——镜像网络模式,允许WSL2与Windows主机共享IP,解决之前无法进行反弹shell的问题。配置步骤包括更新WSL2,创建.wslconfig文件启用镜像模式,并调整iptables和dockerdaemon.json以兼容镜像网络。

前言:####如有出错还请帮忙指出

在windows2023年9月的一次更新中,wsl2支持了新的网络模式镜像模式,他能够通过localhost地址从wsl2内部连接到windows的127.0.0.1地址

##相当于是和本地主机拥有同一个ip


原wsl2是不支持的,虽说是net网络模式,可访问主机,主机也可访问wsl2,同时也可上网,但是不能被网络访问,如果要做反弹shell这一类的就没有办法,而镜像网络就解决了这个问题。

更新到WSL2 2.0往上的版本

  1. 首先需要有win11 23H2或更高版本的系统
  2. 安装了wsl2先前的版本

如果满足以上要求则可以更新到最新版

  1. 以管理员打开windows命令指示符或者是powershell
  2. 运行命令 wsl --update --pre-release

这里我使用的是docker的命令行版本

更新好了以后不会自动开启镜像网络,需要在“c:\users\用户名\”此路径下创建一个.wslconfig文件,在文件里添加以下参数

[experimental]
networkingMode=mirrored # 开启镜像网络模式
hostAddressLoopback=true # 可以通过ip访问

这里是一些其他的参数,需要可自行修改

做完这些以后就开启了镜像网络模式了,但是这样做了以后就访问不了docker的容器了,原因是docker采用了iptable来转发端口

####需要了解iptable的作用可以去看这篇博文因为要让docker可以访问需要禁用iptable

iptables详解及docker的iptables规则_docker iptables-CSDN博客

最后在/etc/docker/daemon.json(一般默认在这里)文件里添加,没有的话就创建一个daemon.json文件

{
"iptables": false
}

最后docker在创建容器的时候映射端口需要改一下

例如:

如果的是docker桌面版

  1. 方法1:
    可以直接升级到最新版,已经修复了可以支持镜像网络
  2. 方法2:
    在.wslconfig里添加 ignoredPorts 来设置你需要访问的应用的端口
    例如:
    ignoredPorts=9999,8888

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪兽不会rap_哥哥我会crash

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值