WSL 2 使用 Docker 桥接模式网络访问 HTTPS 超时的解决方法

WSL 2 使用 Docker 桥接模式网络访问 HTTPS 超时的解决方法

💡 原文中文,约2200字,阅读约需6分钟。
📝

内容提要

本文介绍了在WSL 2中使用Docker时解决HTTPS访问超时问题的方法,通过将WSL 2虚拟网络的MTU设置为1400,确保Docker网络正常运行。

🎯

关键要点

  • 在WSL 2中使用Docker的桥接模式访问HTTPS时出现超时问题。

  • HTTP访问正常,但HTTPS访问明显变慢并可能超时。

  • 切换到Host模式后,HTTPS访问恢复正常。

  • 问题原因是Path MTU与防火墙流量检查不兼容。

  • 解决方法是将WSL 2虚拟网络的MTU设置为1400。

  • 需要修改Docker配置文件/etc/docker/daemon.json,添加'mtu': 1400。

  • 在Windows下关闭WSL 2以应用配置更改。

  • 使用管理员身份的Powershell检查网卡名称并设置MTU。

  • 重新运行WSL 2虚拟机并测试Docker网络,问题得到解决。

🔎

延伸解读

MTU设置的重要性

在WSL 2中,MTU(最大传输单元)设置直接影响网络性能。将MTU调整为1400可以有效避免HTTPS访问超时的问题,这是因为较大的MTU可能与防火墙的流量检查不兼容。了解MTU的作用有助于开发者在遇到网络问题时快速定位并解决问题。

Docker网络模式的选择

在使用Docker时,选择合适的网络模式至关重要。桥接模式虽然适合大多数场景,但在某些情况下(如HTTPS访问),可能会导致性能问题。切换到Host模式可以作为临时解决方案,但长期使用时需考虑安全性和网络隔离的问题。

WSL 2与Windows的协同

WSL 2与Windows的集成使得开发环境更加灵活,但也带来了配置复杂性。开发者在修改Docker配置后,需要重启WSL 2以应用更改,这一过程可能被忽视。了解这一点可以帮助避免不必要的调试时间。

延伸问答

在WSL 2中使用Docker时,HTTPS访问超时的原因是什么?

原因是Path MTU与防火墙流量检查不兼容。

如何解决WSL 2中Docker的HTTPS访问超时问题?

将WSL 2虚拟网络的MTU设置为1400。

在WSL 2中修改Docker配置文件的步骤是什么?

使用root用户修改/etc/docker/daemon.json文件,添加'mtu': 1400。

为什么切换到Host模式后HTTPS访问恢复正常?

Host模式不受Path MTU和防火墙流量检查的影响,因此访问恢复正常。

如何在Windows中检查WSL 2的网卡名称?

使用管理员身份的Powershell运行命令Get-NetAdapter | Where-Object { $_ .Name -like '*WSL*' }。

设置WSL 2网卡MTU的命令是什么?

使用命令netsh interface ipv4 set subinterface 'vEthernet (WSL (Hyper-V firewall))' mtu=1400 store=persistent。

🏷️

标签

➡️

继续阅读