240912-设置WSL中的Ollama可在局域网访问

A. 最终效果

B. 设置Ollama(前提)

bash 复制代码
sudo vim /etc/systemd/system/ollama.service
txt 复制代码
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="OLLAMA_MODELS=/home/lgk/ollama/models"
Environment="OLLAMA_HOST=0.0.0.0:11434"

[Install]
WantedBy=default.target

C. 启动Ollama(关键)

  • 无效操作
bash 复制代码
ollama serve
  • 有效操作
bash 复制代码
OLLAMA_HOST=0.0.0.0:<端口> ollama serve
  • 失效分析
  • 取消防火墙
禁用 WSL2 防火墙(或配置防火墙规则)

Windows 中的防火墙可能会阻止流量从 Windows 主机到 WSL2 的虚拟网络接口。你可以尝试通过以下步骤来暂时禁用防火墙以进行测试:

  1. 打开 PowerShell,以管理员身份运行以下命令:

    powershell 复制代码
    Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
  2. 然后再次尝试使用 curl 访问 WSL2 中的服务:

    powershell 复制代码
    curl http://172.29.75.201:11434

    如果可以正常连接,那么你可以重新启用防火墙,并创建一条允许访问端口 11434 的规则。重新启用防火墙的命令是:

    powershell 复制代码
    Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
重启防火墙

你可以通过以下步骤在 Windows 和 Linux 中重启防火墙:

在 Windows 中重启防火墙
  1. 打开 PowerShell命令提示符,以管理员身份运行。

  2. 运行以下命令来重启 Windows 防火墙:

    • 禁用防火墙

      powershell 复制代码
      Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
    • 重新启用防火墙

      powershell 复制代码
      Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
在 Linux(WSL2)中重启防火墙

如果你在 WSL2 中使用 ufw(Uncomplicated Firewall),可以通过以下命令管理防火墙:

  1. 以管理员权限运行以下命令来检查 ufw 是否安装:

    bash 复制代码
    sudo ufw status
  2. 如果 ufw 没有启用或安装,首先启用它:

    bash 复制代码
    sudo ufw enable
  3. 禁用 ufw

    bash 复制代码
    sudo ufw disable
  4. 重新启用 ufw

    bash 复制代码
    sudo ufw enable
检查防火墙状态
  • Windows:你可以使用以下命令检查防火墙是否已启用:

    powershell 复制代码
    Get-NetFirewallProfile -Profile Domain,Public,Private
  • Linux :运行以下命令检查 ufw 状态:

    bash 复制代码
    sudo ufw status

这样你就可以在两种系统中重启防火墙了。

D. 参考文献

相关推荐
红辣椒...18 小时前
安装next-ai-draw-io
linux·运维·服务器
遇见火星18 小时前
Linux性能调优:详解磁盘工作流程及性能指标
linux·运维·服务器
专注VB编程开发20年18 小时前
多线程解压安装ZIP,EXE分析-微软的MSI安装包和 .NET SDK EXE
linux·运维·服务器·microsoft·.net
方安乐19 小时前
linux常用命令
linux·运维·服务器
vortex519 小时前
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2:Linux 动态链接的核心引擎
linux·gnu
laocooon52385788619 小时前
CentOS 8 中可以使用 **yum**(实际上是 **dnf** 的别名)来安装 Docker
linux·docker·centos
prettyxian19 小时前
【linux】从 0 到 1 理解程序启动:冯诺依曼体系、操作系统与系统调用的协同密码
linux·运维·服务器
代码游侠19 小时前
应用——Linux进程编程实例分析
linux·运维·网络·笔记·学习·算法
电子_咸鱼19 小时前
【QT——信号和槽(1)】
linux·c语言·开发语言·数据库·c++·git·qt
牛奶咖啡1319 小时前
Linux系统故障排查思路实践教程(上)
linux·服务器·linux系统故障排查思路·linux的日志分类与分析·忘记linux用户密码问题解决·系统无法启动问题解决·linux文件系统只读问题解决