在 Windows 10 中安装 Ubuntu 子系统(Windows Subsystem for Linux,简称 WSL)有几个主要的用途和好处:Linux 环境的支持、跨平台开发、命令行工具、测试和验证、教育用途。总体而言,WSL 提供了一种将 Windows 和 Linux 生态系统融合在一起的方式,为用户提供更灵活和多样化的开发和使用体验。本文将是系列文章的第二篇。
一、Ubuntu环境问题与解决方案
1、无法连外网
通过上篇文章,我们搞定了Ubuntu在局域网(内网)的通信,但是因为内网网卡没有连接外网,这样会导致安装Ubuntu软件的时候会失败,如下图:
2、解决方案
(1)搭建内网源服务器
优点:
- 在内网中搭建源服务器,可以加速软件的安装,减少对外网的依赖。
- 内网服务器可以提供自定义软件包,满足特定需求。
缺点:
- 需要维护源服务器,确保软件包及时更新。
- 在初始设置和维护上可能需要一些额外的工作。
建议:
- 这是一个良好的选择,特别是在一个相对封闭的内网环境中。
(2)手动安装软件包
优点:
- 可以手动下载软件包并在离线环境中进行安装。
缺点:
- 容易漏掉依赖项,可能需要手动解决依赖关系。
- 不方便进行软件的更新。
建议:
- 适用于安装较少的软件或者特定的软件包,但不适合大规模应用和频繁更新。
(3)增加一个Ubuntu子系统虚拟网卡连接外网
优点:
- 可以通过新的虚拟网卡连接外网,实现对外通信。
- 不需要额外的服务器维护。
缺点:
- 可能需要一些额外的配置,特别是在 NAT 方式下。
- 需要确保网络配置不与现有网络冲突。
建议:
- 如果内网环境允许,这是一个灵活的选择。确保虚拟网卡的配置不干扰到其他网络。
(4)补充方案:
- 另一个选择是使用代理服务器,通过代理服务器访问外网。这可以通过设置环境变量或者在
apt
配置中指定代理来实现。这对于临时需要访问外网的情况可能更为方便。
最终选择取决于你的具体需求、网络环境和管理复杂性。在做出决定之前,建议评估每个方案的可行性和适用性。
根据我的情况,上述方案我都不选,我选择必要时关闭或打开桥接的方式。
二、解决过程
1、当前网卡情况
如下图,eth0对应的虚拟网卡是vEthernet(WSL),子系统用的也是该虚拟网卡。
2、连接外网
(1)选择网桥点击属性,接着取消桥接模式
(2)退出子系统并关闭
wsl --shutdown
(3) 重新进入子系统
(4)安装nfs验证联网
sudo apt-get update
sudo apt install nfs-kernel-server
sudo mkdir -p /mnt/justdoit
sudo chown nobody:nogroup /mnt/justdoit
sudo chmod 777 /mnt/justdoit
sudo nano /etc/exports# 最后一行写入以下配置/mnt/justdoit *(rw,sync,no_subtree_check)# 或 写入最高权限/mnt/justdoit *(rw,sync,no_root_squash,no_subtree_check)sudo systemctl restart nfs-kernel-server
sudo ufw disable
执行上述指令后,nfs安装成功,并创建了nfs挂载点 /mnt/justdoit:
3、连接内网
(1)选择网桥点击属性,接着选择桥接模式(虚拟网卡与内网网卡桥接)
(2)直接应用原先设置好的网卡设置
sudo netplan apply
(3)在局域网Linux设备上挂载
如下图,没有报错,挂载成功。
三、内网/外网切换技巧
1、可以增加一个shell脚本维护内网/外网切换
假如我们选择非桥接模式,那么我们可以设置一个网卡脚本,专门面向外网网卡的设置;
假如我们选择桥接模式,那么我们可以设置一个网卡脚本,专门面向内网网卡的设置,如上述方式,即应用指定网卡配置即可。
通过上述方式,在涉及内网和外网的网络配置时,通过设置不同的网卡脚本,可以提供更好的灵活性和维护性。下面是这种做法的好处:
内网/外网切换灵活性:
通过设置不同的网卡脚本,你可以轻松地切换系统连接的网络环境。例如,你可以在需要时快速切换到内网或外网,而无需手动配置每个网络环境。
维护简便:
使用脚本进行内网/外网的切换可以减少手动配置的工作量。当你需要切换网络环境时,只需运行相应的脚本即可,而不必手动更改网络配置。
避免配置混淆:
在桥接模式下,内网和外网可能会使用不同的网卡,因此通过设置专门的网卡脚本,可以避免配置混淆。你可以为每个网络环境设置特定的配置,而不会影响其他环境。
避免误操作:
通过使用脚本,可以减少由于手动配置而引起的错误。配置文件的结构化和注释可以提高脚本的可读性,减少误操作的风险。
提高自动化程度:
脚本可以集成到自动化工作流中,例如部署脚本、自动化测试等。这有助于提高整体系统的自动化程度,减少人工介入。
快速部署和重现:
使用脚本可以更容易地在不同的系统上部署相同的配置,从而提高配置的可重现性。这对于在多个环境中快速部署相同的网络配置非常有用。
总体而言,通过使用脚本进行内网/外网切换,可以使网络配置更加灵活、简便,减少配置错误的可能性,提高系统的可维护性和自动化程度。