从远程访问 WSL2 ssh

从远程访问 WSL2 ssh

我已经在 Windows 10 上设置了带有 WSL2 的 ubuntu,我的目标是将流量从我的笔记本电脑通过我的 Windows 桌面路由到 WSL2 上的 linux。

我的本地网络使用 192.168.1.0/24。Windows
创建了一个虚拟管理程序适配器,网络为 172.26.176.0/20。Windows
在我的网络上位于 192.168.1.11,在虚拟适配器上位于 172.26.176.1/20。WSL2
Linux 位于 172.26.191.190/20


      [the internets]
             |
[router / pub. ip / 192.168.1.1]
                     |
                   [SW] -- [gw+dhcp / 192.168.1.5 / (more irrelevant adapters)]
                        \- [laptop / 192.168.1.13]
                        \- [windows / 192.168.1.11 (phys) / 172.26.176.1 (virt.)]
                                                             |
                                                           [WSL2 linux / 172.26.191.190]

我有一台笔记本电脑,地址为 192.168.1.0/24,我想用它通过 ssh 访问 WSL linux。我还有一个网关服务器,在 192.168.1.5/24 上运行 linux。

如何配置网关和窗口以允许来自网络中任何位置的流量到 172.26.176.0/20 网络?

我的想法是添加一个 iptable DNAT 规则,如下所示:

sudo iptables -t nat -A PREROUTING -j DNAT -d 172.26.176.0/20 --to-destination 192.168.1.11

尽管我感觉我应该使用路由而不是 iptables。

但是我如何让 Windows 将包路由到虚拟机管理程序?仅网关上的命令无法解决问题。

编辑

我重启了 Windows 机器,现在它位于一个完全不同的子网中。它似乎是随机的。我该如何处理?

编辑2

我不想使用 Windows 的 NAT 来转发 WSL 上的端口,而是想将流量路由到 WSL 的 IP 地址范围。
这需要在网关系统和 Windows 系统中进行路由。在 Linux 上,您只需写入即可1/proc/sys/net/ipv4/ip_forward我不知道 Windows 是否有等效版本。

然后是随机 IP 地址的问题。Windows 可以使用 SSH 访问网关,因此脚本可能会改变路由表。
或者我可以添加所有可能的 172.[16-32]。/20 子网......但再想想,这似乎是个坏主意。

我搜索了一下,发现了它允许将主机名分配给 WSL 实例。但它使用 hosts 文件在本地执行此操作,我不确定这对我进行远程访问有何帮助。

编辑3

我已经发现这个答案这表明已
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter
为 Windows 启用了 IP 路由。现在我只需告诉我的网关网络路由。

不过我尝试添加一条路线

sudo route add -net 172.26.176.0/20 gw 192.168.1.11

但是我的 ping 仍然没有成功。但是 wireshark(在 Windows 机器上)记录到 ping 到达目标 IP(然后没有 ping 到目标 IP)。
但是从 Windows 到同一个地址(WSL 机器)的 ping 工作正常。

如果 Windows 可以转发请求,我会很高兴。我可以轻松地为网关编写某种服务,以允许 Windows 连接到它并更新路由表的 IP。

相关内容