iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >WSL 2 网络配置
  • 936
分享到

WSL 2 网络配置

网络windows服务器linuxubuntu 2023-09-03 18:09:59 936人浏览 八月长安
摘要

文章目录 WSL 2 访问局域网内设备WSL 2 访问本机 WindowsWSL 2 访问非本机 Windows 设备 局域网内设备访问 WSL 2本机 Windows 访问 WSL 2非

文章目录

WSL 2 访问局域网内设备

WSL 2 访问本机 windows

由于 WSL 2 基于 Hyper-V,其与宿主 Windows 的关系可以看作是同一网络下的不同主机。要实现 WSL 2 到 Windows 的通信,首先要让 WSL 2 知道 Windows 的 IP 地址。

在 Windows 中,打开终端,执行 ipconfig,可以看到 WSL 相关的网络信息:


需要注意的是,在没有特殊配置的情况下,电脑的 IP 地址通常会随网络环境的变化而变化,此处及后文的 IP 地址仅供参考,具体 IP 地址需要以自己实际操作时的输出为准。

通过 ipconfig 的输出可以发现,在 Windows-WSL 2 这一体系中,Windows 的 IP 地址为 192.168.176.1

linux 系统中,/etc/resolv.conf 为 DNS 配置文件,对于 WSL 2 也是如此。在 WSL 2 中,执行 cat /etc/resolv.conf,查看其中的内容:


可以发现,此处指向的 DNS 服务器 IP 为 192.168.176.1,正是 Windows 的 IP,说明 WSL 2 是借助 Windows 去寻找真正的 DNS 服务器的。

可以尝试在 WSL 2 中 ping Windows,即执行 ping `cat /etc/resolv.conf | grep nameserver | awk '{print $2}'`,能 ping 通即表示 WSL 2 能通过网络访问 Windows。

因为每次启动 WSL 2 都会重新分配虚拟网络,可以在 ~/.bashrc 中加入 Windows 网络相关环境变量,便于后续使用:

# Windows 宿主机 IPWINDOWS_IP=$(grep nameserver /etc/resolv.conf | awk '{print $2}' | head -1)# Windows 宿主机代理端口WINDOWS_PROXY_PORT=7890# 更新 Windows 网络信息function update_windows_net_info() {    WINDOWS_IP=$(grep nameserver /etc/resolv.conf | awk '{print $2}' | head -1)    WINDOWS_PROXY_PORT=7890}

如果有需要的话,还可以在 update_windows_net_info 中将 Windows 的 IP 地址写入 /etc/hosts

WSL 2 访问非本机 Windows 设备

如果局域网内非本机 Windows 设备开放了防火墙入站,WSL 2 无需额外配置就能直接访问。

局域网内设备访问 WSL 2

本机 Windows 访问 WSL 2

本机 Windows 可以直接通过 localhost 访问 WSL 2。

非本机 Windows 设备访问 WSL 2

要实现局域网内非本机 Windows 设备访问 WSL 2,需要在 Windows 上配置端口转发以及防火墙入站规则。

为了便于操作,可以将配置端口转发和防火墙入站规则的操作封装成函数,在 Windows Powershell 的配置文件 PROFILE 中添加以下内容:

# 添加 WSL 端口转发以及防火墙入站规则function Add-WSLPortForwarding ($Port = '23333', $Protocol = 'tcp') {    $WSLIP = wsl -- hostname -I    $WSLIP = $WSLIP.Trim()    netsh interface portproxy add v4tov4 listenport=$Port connectaddress=$WSLIP connectport=$Port    New-NetFirewallRule -DisplayName "Allow ${Protocol} Inbound Port ${Port}" -Direction Inbound -Action Allow -Protocol $Protocol -LocalPort $Port}# 移除 WSL 端口转发以及防火墙入站规则function Remove-WSLPortForwarding ($Port = '23333', $Protocol = 'TCP') {    netsh interface portproxy delete v4tov4 listenport=$Port    Remove-NetFirewallRule -DisplayName "Allow ${Protocol} Inbound Port ${Port}"}

其中添加和移除函数都有两个参数,端口号和协议。端口号默认为 23333,协议默认为 TCP。

使用时需要以管理员权限执行。参考使用方式如下:

Add-WSLPortForwarding -Port 22 # 开启 TCP 协议 22 端口 的转发Remove-WSLPortForwarding -Port 22 # 移除 TCP 协议 22 端口 的转发Add-WSLPortForwarding -Port 23334 -Protocol UDP # 开启 UDP 协议 23334 端口 的转发Remove-WSLPortForwarding -Port 23334 -Protocol UDP # 移除 UDP 协议 23334 端口 的转发

如果希望通过 ssh 访问 WSL 2,可以参考以下几个步骤:

  1. WSL 2 安装 ssh server

如果 WSL 2 中没有 ssh server,可以通过以下命令安装:

sudo apt install openssh-server
  1. WSL 2 配置 sshd

打开 /etc/ssh/sshd_config 文件,确认以下几个配置:

  • Port:监听端口,默认为 22,如果担心和本机 Windows 冲突也可以修改为其它端口
  • ListenAddress:监听 IP 地址,默认为 0.0.0.0,即所有 IP
  • PassWordAuthentication:是否开启密码认证,默认为 no,如果想通过密码登录就需要设为 yes

修改配置后,需要重启 ssh:

sudo service ssh restart

如果希望 ssh 能开机自启,可以执行:

sudo systemctl enable ssh
  1. 其它设备通过 ssh 访问 WSL 2

先在 Windows 中开启端口转发和防火墙入站:

Add-WSLPortForwarding -Port  # 端口号为 WSL 2 中 sshd 配置的端口号

之后就可以在其它设备中通过 ssh 访问 WSL 2 了:

ssh <username>@<windows_ip> -p <sshd_port>

WSL 2 使用本机 Windows 中的代理

由于种种原因,一般的网络环境访问诸如 GitHub 等网站时往往速度很慢,甚至无法连接,这时就可以使用网络代理。

WSL 2 使用代理通常有两种思路:

  1. 直接在 WSL 2 环境下借助 v2ray 等软件访问代理
  2. WSL 2 将需要使用代理的请求转发至本机 Windows 中配置的代理

可以根据个人需要进行选择。

本文介绍我所使用的第二种的配置方法,前置条件是 WSL 2 能够访问本机 Windows,请先阅读那一部分内容。

Windows 代理客户端配置

Windows 中的代理客户端需要开启允许来自局域网的连接。

以 Clash for Windows 为例,勾选 Allow LAN 即可:


如果是 v2rayN 的话,勾选允许来自局域网的连接即可:


事实上,开启这个选项后,同一局域网中其它非 WSL 2 的设备也都能通过 Windows 在局域网中的 IP 地址和代理端口号来使用代理。

WSL 2 代理配置

接下来介绍两种使用代理的方法,分别是代理环境变量和 proxychains 代理工具。两种方法有各自适用的场景,根据需要选择使用即可。

方法一:代理环境变量

Linux 中有诸如 Http_PROXYFTP_PROXY 等环境变量来表示代理,在需要使用代理时给这些环境变量赋值即可。

我将代理环境变量的赋值与删除封装成了函数,用于批量使用代理的场景。

~/.bashrc 中添加以下内容:

# 开启代理function proxy_on() {    export HTTP_PROXY="http://${WINDOWS_IP}:${WINDOWS_PROXY_PORT}" # http 或 socks5,取决于代理的协议    export https_PROXY="http://${WINDOWS_IP}:${WINDOWS_PROXY_PORT}" # http 或 socks5,取决于代理的协议    export ALL_PROXY="http://${WINDOWS_IP}:${WINDOWS_PROXY_PORT}" # http 或 socks5,取决于代理的协议    echo -e "Acquire::http::Proxy \"http://${WINDOWS_IP}:${WINDOWS_PROXY_PORT}\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null    echo -e "Acquire::https::Proxy \"http://${WINDOWS_IP}:${WINDOWS_PROXY_PORT}\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null    proxy_status}# 关闭代理function proxy_off() {    unset HTTP_PROXY    unset HTTPS_PROXY    unset ALL_PROXY    sudo sed -i -e '/Acquire::http::Proxy/d' /etc/apt/apt.conf.d/proxy.conf    sudo sed -i -e '/Acquire::https::Proxy/d' /etc/apt/apt.conf.d/proxy.conf    proxy_status}# 代理状态function proxy_status() {    echo "HTTP_PROXY:" "${HTTP_PROXY}"    echo "HTTPS_PROXY:" "${HTTPS_PROXY}"    echo "ALL_PROXY:" "${ALL_PROXY}"}

proxy_on 表示开启代理(包括 apt),proxy_off 表示关闭代理,proxy_status 为查看当前代理状态。

使用方法如下:

proxy_on<command> # 需要使用代理的操作proxy_off

测试效果如下:


需要注意的是这种方法开启的代理只作用于当前终端会话。

方法二:proxychains 代理工具

proxychains 是为 UNIX 类系统开发的代理工具,支持 HTTP、SOCKS4a/5 等类型的代理。

可以直接通过 apt 进行安装:

sudo apt install proxychains4

proxychains 默认使用 /etc/proxychains4.conf 这一配置文件,我们主要关注底部的代理列表:

[ProxyList]# add proxy here ...# meanwile# defaults set to "tor"socks4        127.0.0.1 9050

从左到右分别是代理协议、IP 地址、端口。

要使用 Windows 中的代理,就要在 proxychains 的配置文件中写上 Windows 对 WSL 2 开放的 IP 地址,不过需要注意的是,此 IP 地址默认情况下会在每次启动 WSL 2 时动态生成。

与方法一类似,同样是借助函数实现自动配置,在 ~/.bashrc 中添加以下内容:

# 更新 proxychains 代理配置function update_proxychains_conf() {    # 删除 ~/.config/proxychains4/proxychains4.conf 中 [ProxyList] 所在行到文件末尾的全部内容    sed -i '/\[ProxyList\]/,$d' ~/.config/proxychains4/proxychains4.conf    # 往 ~/.config/proxychains4/proxychains4.conf 文件末尾追加代理配置    echo "[ProxyList]" | tee -a ~/.config/proxychains4/proxychains4.conf > /dev/null    echo "http ${WINDOWS_IP} ${WINDOWS_PROXY_PORT}" | tee -a ~/.config/proxychains4/proxychains4.conf > /dev/null    echo "socks5 ${WINDOWS_IP} ${WINDOWS_PROXY_PORT}" | tee -a ~/.config/proxychains4/proxychains4.conf > /dev/null}update_proxychains_confalias pc='proxychains4 -f ~/.config/proxychains4/proxychains4.conf'

因为编辑 /etc/ 目录下的文件需要管理员权限,为了避免一进入 WSL 2 就执行 sudo,可以拷贝一份默认配置文件放到当前用户目录下,作为 proxychains 读取的配置文件。

此处以 ~/.config/proxychains4/proxychains4.conf 为例,并设置了一个命令别名来简化使用。

这样就能在每次启动 WSL 2 时自动获取 Windows 网络相关信息并写入 proxychains 配置文件。

使用方法如下:

pc <command> # 需要使用代理的操作

测试效果如下:


问题记录

WSL 2 无法通过网络访问本机 Windows,ping 不通

如果在 WSL 2 中无法 ping 通 Windows,可能是由于默认情况下 Windows 防火墙会阻止 WSL 2 对 Windows 的网络访问。

需要在 Windows 中,以管理员身份打开终端,然后执行以下命令,添加一条防火墙规则允许 WSL 2 对 Windows 的入方向访问:

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

上述命令的示例输出如下:


查看 Windows 防火墙的高级设置,在入站规则中,已经新增了一条名称为 WSL 的规则:


这时再尝试 ping Windows,可以看到已经能 ping 通了:


代理客户端已经开启了允许来自局域网的连接,但 WSL 2 中还是不能连接代理

有可能是 Windows 防火墙规则中没有代理客户端的放行规则。

以 Clash for Windows 为例,防火墙入站规则中需要有相关规则:


如果是 v2rayN 的话,同样需要有相关规则:


其它软件同理。

参考文档

使用 WSL 访问网络应用程序 | Microsoft Learn

Add “allow” rule to Windows firewall for WSL2 network · Issue #4585 · microsoft/WSL (github.com)

haad/proxychains: proxychains - a tool that forces any TCP connection made by any given application to follow through proxy like TOR or any other SOCKS4, SOCKS5 or HTTP(S) proxy. Supported auth-types: “user/pass” for SOCKS4/5, “basic” for HTTP. (github.com)

来源地址:https://blog.csdn.net/Yiang0/article/details/127780263

--结束END--

本文标题: WSL 2 网络配置

本文链接: https://www.lsjlt.com/news/392596.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • WSL 2 网络配置
    文章目录 WSL 2 访问局域网内设备WSL 2 访问本机 WindowsWSL 2 访问非本机 Windows 设备 局域网内设备访问 WSL 2本机 Windows 访问 WSL 2非...
    99+
    2023-09-03
    网络 windows 服务器 linux ubuntu
  • oracle11g网络配置
    网络连接:安装完成后,客户端和服务端都需要进行网络配置才能进行网络连接,服务端要配置监听器,客户端要配置网络服务名;服务端启动程序:如果客户端与服务端不在同一个主机上,要求启动监听器和数据库两个服务;如果在...
    99+
    2024-04-02
  • centos7 网络配置
    网络配置网卡路径: vi /ect/sysconfig/network-scripts/ifcfg-ens33 方法:设置静态ip(推荐使用) 1.在VMware网络NAT编辑器中查看VMnet8的IP、子网掩码、网关 IPADDR=...
    99+
    2023-09-06
    网络 服务器 linux Powered by 金山文档
  • Linux网络配置
    目录 一.查看网络配置 1.ifconfig:查看所有活动的网络接口信息 1.1 ifconfig [网络接口]:查看指定网络接口信息 1.2 nmcli:也可以查看网卡信息 2.ip a:查看ip地址,显示所有网卡包括没有启动的网卡 3....
    99+
    2023-09-26
    linux 运维 服务器
  • ubuntu20-04网络配置
    方法一 使用NetPlan工具修改IP地址,进入/etc/netplan目录 cd /etc/netplan 查看目录下的配置文件 ls 修改配置文件 sudo vi 01-network-mana...
    99+
    2023-09-29
    网络 ubuntu
  • vmware的网络配置
    本篇内容介绍了“vmware的网络配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正文:本人使用的是vmware workstation ...
    99+
    2023-06-13
  • linux虚拟机网络配置与网络配置常用的命令
    这篇文章主要讲解了“linux虚拟机网络配置与网络配置常用的命令”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux虚拟机网络配置与网络配置常用的命令”吧!一.linux网络配置经常使用...
    99+
    2023-06-13
  • docker网络怎么配置
    本篇内容介绍了“docker网络怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Docker 配置容器的步骤是:创建一对虚拟接口在主D...
    99+
    2023-06-27
  • 计算机网络(2) --- 网络套接字UDP
    计算机网络(1) --- 网络介绍_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131967378spm=1001.2014.3001.5501 目录 1....
    99+
    2023-10-02
    计算机网络 linux c++ 网络
  • centos怎么配置网络
    在CentOS上配置网络有几种方式,可以通过命令行或者图形界面进行配置。1. 命令行配置网络:- 使用`nmcli`命令进行网络配置...
    99+
    2023-08-25
    centos
  • RHEL8如何配置网络
    这篇文章给大家分享的是有关RHEL8如何配置网络的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在RHEL8中继续支持service,网络相关服务管理已经转移到NetworkManager不再是network了。环...
    99+
    2023-06-28
  • Linux网络怎么配置
    这篇文章主要讲解了“Linux网络怎么配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux网络怎么配置”吧!配置Linux网络既然要配置网络,我们先看看网络的配置文件在哪里,以及相关...
    99+
    2023-06-15
  • docker如何配置网络
    这篇文章主要介绍了docker如何配置网络,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux内核实现名称空间的创建ip netns命令可以借助ip netns命令来完成...
    99+
    2023-06-21
  • 虚拟机网络配置
    前言 安装完虚拟机后,需要对其进行联网。 一、虚拟网络编辑 打开vm,编辑——虚拟网络编辑器 根据红框操作,取消让本地DHCP服务器分配IP给虚拟机 点击NAT设置,查看网关ip,记下来,后面网卡配...
    99+
    2023-09-10
    网络 php 服务器
  • win7如何重置网络配置win7重设网络配置操作实例教程
    当win7客户遇到紧急的网络不稳定问题时,可以尝试重设网络配置来解决。那样win7如何重置网络配置呢?操作非常简单,你先点一下菜单栏,开启运行窗口,键入cmd命令导出来命令提示符对话框,随后在对话框中输入netshwinsockreset,...
    99+
    2023-07-10
  • qemu虚拟机配置网络
    一、实现qemu虚机&宿主机网络互通 qemu虚机的网络介绍及原理可参考前人文章:Linux 内核调试 七:qemu网络配置_lqonlylove的博客-CSDN博客 这里只简单梳理下操作流程,以便快速实现网络互通。 1.宿主机创建 tap...
    99+
    2023-08-31
    linux 运维 服务器
  • Linux服务器网络配置
    这篇文章主要讲解了“Linux服务器网络配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux服务器网络配置”吧!禁止ping有些时候为了保护主机,会禁止其他机器对主机进行ping操作...
    99+
    2023-06-06
  • Virtualbox NAT网络配置方法
    Virtualbox 本身自带了一个NAT网络地址转换的连接方式,不用配置可以直接使用。 既然有现成的直接可以选,为什么还要配置 NAT网络呢?原因在于默认的NAT网络,网段是预置...
    99+
    2024-04-02
  • 关于docker中 WSL 配置与修改问题
    https://docs.microsoft.com/en-us/windows/wsl/wsl-config .wslconfig Stored in your%Use...
    99+
    2024-04-02
  • RHEL7.0如何配置网络IP
    这篇文章将为大家详细讲解有关RHEL7.0如何配置网络IP,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。RHEL7里面的网卡命名方式从eth0,1,2的方式变成了enoXXXXX的格式。 en代表的是en...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作