让您的 WSL2 发行版表现得像网络上的任何其他客户端
在 Roelofs 建议 2 的基础上,这就是我的案例中所有内容的原因。不幸的是,我太新鲜了,不能发表评论。
我的出发点:
WSL2 下的
Win 10 Pro Ubuntu
(带有 Linux 容器的 Docker)
我的目标:
从网络上的客户端获取 rtmp 流进出运行在 Ubuntu 机器上的 nginx 服务器。
建造桥梁
就我而言,我无法让 Hyper-V 正确设置网桥。在Hyper-V 管理器的虚拟交换机部分中为 WSL 交换机选择外部网络并点击应用后,它最终失败并出现错误 0x80070490。不知道为什么,也没有时间调查。WSL 没有运行,Docker 服务也没有运行。
相反,我只是将设置保留在内部网络上,并在网络连接 (run->ncpa.cpl) 下以手动方式桥接接口。就我而言,WiFi 连接和vEthernet (WSL)。这样做之后,我立即失去了互联网连接,我花了很长时间才发现需要重新启动。(Windows 曾经没有要求我这样做!)
使 VM 成型
重启后,我现在可以从主机访问互联网,网桥设置为 DHCP,并继承了 WiFi 接口的 IP (192.168.1.246)。伟大的。
但是,VM 仍在获取虚拟交换机的 IP(或者您想查看它,windows 似乎分配给交换机和 VM 的随机 172.xxx 地址)。
启动 Ubuntu,我决定做一个:
sudo ip addr flush dev eth0
继续:
sudo dhclient eth0
自从我使用来自 Windows 商店的香草 Ubuntu 发行版以来,向我抛出了一些错误,没有systemd,没有乐趣。尽管如此,它还是设法将网桥的 IP 添加到 eth0。由于这不是很方便,我摆脱了它:
sudo ip addr del 192.168.1.248/24 dev eth0
但在偷看路由表之前:
user@vm:~$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
删除旧 IP 后,我从我的 DHCP 范围之外添加了一个唯一的 IP:
sudo ip addr add 192.168.1.50/24 dev eth0
我再次检查了路由表,第一个条目不见了。在这个阶段,我可以ping LAN,但不能ping WAN。
将条目添加回:
sudo ip route add default via 192.168.1.1 dev eth0
现在可以 Ping WAN IP,但没有 DNS 解析。LMGTFM:添加永久 DNS
万一解决方案丢失,这归功于non-static:
创建一个文件:/etc/wsl.conf。
将以下行放入文件中
[网络]
generateResolvConf = false
在 cmd 窗口中,运行 wsl --shutdown
重启 WSL2
创建一个文件:/etc/resolv.conf。如果存在,则用这个新文件替换现有文件。
将以下行放入文件中
名称服务器 8.8.8.8
或者您要使用的任何 DNS 服务器的 IP,重复步骤 3 和 4。
因此,总而言之,检查您的路由并正确设置您的 DNS-conf。不幸的是,每次重新启动 WSL 时都会恢复 IP 设置。如果您每次都在讨论如何在此处和此处实现自动化时不同意手动执行此操作。我没有时间找到我最喜欢的。
最好的问候亚历山大