加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

将Windows10变成一台Linux服务器

(2023-04-12 09:13:11)
标签:

windows10

wsl

linux

分类: Linux知识

Windows 下的 WSL 可以提供 Linux 虚拟环境,但如果想让 Linux 对外提供服务还需要做一些网络配置。

默认 WSL 下的 Linux 只能通过虚拟IP在本地进行访问,局域网或者本机之外的终端是无法访问 Windows 上的 Linux 环境的。

我们以 WSL 下的 Linux ssh 服务为例,讲一下如何将 Linux 下的服务映射到局域网。

首先进入到 Linux 虚拟机中,修改 sshd_config 文件,将密码认证打开:

$ /etc/ssh/sshd_config

PermitRootLogin yes

PasswordAuthentication yes

然后重启 ssh 服务:

# /etc/init.d/ssh restart

* Restarting OpenBSD Secure Shell server sshd [ OK ]

此时就可以通过 Linux 的 IP 进行访问了,通过命令 ip a 可以查看 Linux 的IP:

# ip a

eth0: mtu 1500 qdisc mq state UP group default qlen 1000

link/ether 00:15:5d:69:57:3f brd ff:ff:ff:ff:ff:ff

inet 172.21.65.35/20 brd 172.21.79.255 scope global eth0

valid_lft forever preferred_lft forever

这里 172.21.65.35 即是 Linux 的IP,此时局域网还无法访问 Linux 的 ssh 服务。因为 Linux 的网卡是桥接的,只有 Windows 主机能看到。此时我们需要将此端口映射出去。执行以下命令可以将 22 端口映射至局域网:

C:\> netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=172.21.65.35

C:\> netsh interface portproxy show all

侦听 ipv4                连接到 ipv4:

地址 端口 地址 端口

--------------- ---------- --------------- ----------

0.0.0.0 22 172.21.65.35 22

此时通过 netstat 也能看到 22 端口是开放状态:

C:\> netstat -ano | findstr :22

TCP 0.0.0.0:22 0.0.0.0:0 LISTENING 4492

TCP 127.0.0.1:22 0.0.0.0:0 LISTENING 13656

TCP [::1]:22 [::]:0 LISTENING 13656

这里能看到 127.0.0.1也开放了22端口,原因是 .wslconfig 中配置了 localhostForward 选项:

$ cat ~/.wslconfig

[wsl2]

localhostForwarding=true

将Windows10变成一台Linux服务器

此时将防火墙策略放行22端口,局域网的其它终端就可以访问 Linux 的 ssh 服务了。其它端口也可以使用这种方式映射出去,如果开始了 localhostForwarding 功能,实际上可以使用 127.0.0.1 作为 connectionaddress,此时 netsh 命令可以改写为:

C:\> netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=127.0.0.1

即最后一段不用写Linux虚拟机IP,因为默认端口已经 forward 至 127.0.0.1 了,我们只是再将其映射一遍至 0.0.0.0

 

如果想删除映射,此时有没有好的办法?自问自答,同样可以使用 netsh 命令删除配置:

C:\> netsh interface portproxy show all

C:\> netsh interface portproxy delete v4tov4 listenport=22 listenaddress=0.0.0.0

C:\> netsh interface portproxy show all

将Windows10变成一台Linux服务器

到此基本上就将 WSL 的网络部分讲完了,官网有文档,但只讲了如何映射,并没有讲如何删除配置。微软官网文档地址:

https://learn.microsoft.com/zh-cn/windows/wsl/networking






0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有