networking - WSL-2:自动转发哪些端口?
问题描述
我一直在修补 WSL-2 一段时间,并不完全了解主机和 WSL-2 分配之间的流量路由方式。
在某些来源中,似乎 WSL-2 使用的所有端口都自动对主机可用。例如在Microsoft 的本教程中。同样,我设法托管了一个 Jupyter 实例,该实例可通过localhost:8888
.
但是,在尝试其他服务时,例如 ssh(也在非标准端口上尝试过),该端口不会自动通过 localhost 变得可用,我必须使用分配给我的 WSL 发行版的 IP 地址(来自 的那个wsl hostname -I
)
为了通过 localhost 提供服务,我找到了这个 portforwarding script,它有效。但我想了解为什么需要它。
为什么某些服务需要端口转发,而不是全部?
解决方案
我的困惑来自 WSL-2 的防火墙问题。
我发现的是:
- 在 WSL-2 中的端口上侦听的服务可以从主机访问,因为
localhost:<port>
- 无法从主机外部访问 WSL-2 端口
- WSL-2 端口可以通过
netstat interface portproxy
使用 WSL 实例的 IP 地址或其他端口转发工具提供。
防火墙不允许仅通过列出端口来访问 WSL 端口。我必须在我的防火墙规则中专门选择iphlpsv
服务(IP Helper 服务)以允许流量通过 WSL 实例。
推荐阅读
- ios - 将 ScrollView 与 Array 一起使用时出现问题
- javascript - javascript比较时间和毫秒
- python - 我不断收到这个 ValueError: operation parameter must be str
- javascript - 在 React 中使用 Parallax.js
- python - 将命令使用的时间打印到终端中。-Discord.py(重写)
- c# - 如果 1 个对象满足要求,如何使 foreach 循环工作?
- python - 使用 Python requeststs.post 创建 Github 存储库导致“解析 JSON 时出现问题”
- reactjs - Material UI 在生产中破坏了 NextJS 应用程序
- docker - 如何在 GKE Ingress-gce 上将 HTTPS 设置为默认值
- c# - 对于每个新找到的,用一些不同的值替换字符串中的键