分类 linux 下的文章

适用场景:更换光猫、修改硬件标识以匹配旧光猫、解决LOID注册卡进度问题。
风险提示:操作不当可能导致光猫无法上网甚至变砖,请务必备份原始参数,谨慎操作。

一、准备工作

1. 获取旧光猫信息

  • 登录旧光猫管理界面,记录:LOID(逻辑ID)、宽带账号/密码、VLAN ID(如41)、连接模式(桥接/路由)。
  • 记录旧光猫的MAC地址、SN序列号(GPON:前4位+后8位;EPON:完整SN)、设备标识号(如有)。

2. 准备工具

  • 电脑网卡MAC临时改为 00:07:29:55:35:57(部分中兴光猫开启Telnet所需)。
  • 下载 zteOnu 工具(用于开启Telnet)。
  • 确保电脑与光猫LAN口直连,IP为同一网段(通常光猫IP为 192.168.1.1)。

二、开启Telnet并登录

1. 运行 zteOnu 开启Telnet

zteOnu --telnet

或使用其他对应型号的工具。

2. 登录光猫

telnet 192.168.1.1
  • 默认账号:root
  • 默认密码:Zte521(部分型号可能不同,请自行确认)

三、查看并备份原始参数(至关重要!)

登录后立即执行:

setmac show2

将输出结果完整复制到本地文本保存,作为原始备份。

重点关注以下参数ID及值:

参数名称常见ID示例值
PON MAC3276900:11:22:33:44:55
SN前4位(GPON OUI)2176HWTC(或十六进制 48575443)
SN后8位(GPON)2177B55D5BA4
设备标识号前6位768001122
设备标识号后17位51200112233445566778
地区代码(当前)-执行 upgradetest gdefconf 查询
所有地区列表-执行 cat /etc/init.d/regioncode

四、修改MAC地址和SN(按需修改)

4.1 修改PON MAC(最常用)

setmac 1 32769 [新MAC地址]

例如:

setmac 1 32769 00:11:22:33:44:55

4.2 修改SN(GPON模式)

  • 修改前4位(OUI):

    setmac 1 2176 [新前4位]

    例如:setmac 1 2176 HWTC(也可填十六进制,如 48575443)

  • 修改后8位:

    setmac 1 2177 [新后8位]

    例如:setmac 1 2177 B55D5BA4

4.3 修改SN(EPON模式)

部分EPON光猫SN的ID为 2182,请以 setmac show2 查询结果为准。

4.4 修改设备标识号(可选)

  • 前6位:

    setmac 1 768 [新前6位]
  • 后17位:

    setmac 1 512 [新后17位]

五、保存配置并重启

每次修改后,务必执行:

sendcmd 1 DB save

所有修改完成后,重启光猫:

reboot

六、修改地区码(可选)

  • 查看所有地区代码:

    cat /etc/init.d/regioncode
  • 查看当前地区:

    upgradetest gdefconf

    或

    siupgrade gdefconf
  • 切换地区(将 [序号] 替换为具体数字,如 305):

    upgradetest sdefconf [序号]

    执行后光猫自动重启。


七、LOID注册及常见卡进度处理

7.1 正常注册流程

  • 登录光猫管理界面,在"注册"页面输入正确的LOID(注意大小写和空格),点击注册。
  • 若进度到30%~40%即表示OLT注册成功,若卡在57%、70%或"向RMS发送注册请求",均为RMS认证失败,不影响手动配置上网。

7.2 卡进度处理方案

方案一:强制跳过RMS认证(推荐)

通过Telnet执行:

sendcmd 1 DB set PDTCTUSERINFO 0 Status 0
sendcmd 1 DB set PDTCTUSERINFO 0 Result 1
sendcmd 1 DB save
reboot

重启后,光猫状态会被"欺骗"为注册成功,不再弹强制跳转。

方案二:完全手动配置上网

  1. 登录光猫后台,进入"宽带设置"或"WAN连接"。
  2. 新建Internet连接,选择桥接或路由模式。
  3. 手动填入VLAN ID、宽带账号和密码(来自旧光猫)。
  4. 保存后测试上网,只要网能通,光猫注册状态可忽略。

八、常见报错及解决方法

报错现象可能原因解决办法
提示"逻辑ID不对"LOID输错或OLT绑定了旧硬件1. 核对LOID(大小写/空格)
2. 检查是否需要密码
3. 联系运营商解绑
卡在57%RMS认证失败执行"强制跳过RMS认证"命令,并手动配置上网
卡在70%RMS认证失败执行"强制跳过RMS认证"命令,并手动配置上网
能上网但弹注册页光猫强制跳转执行 sendcmd 1 DB set PDTCTUSERINFO 0 Status 0 等命令
修改后无法保存未执行 sendcmd 1 DB save每次修改后立即保存

九、终极备用方案

若所有操作无效,联系宽带装维师傅,请其在局端解绑旧光猫的LOID/SN绑定,并重新下发配置。


十、命令速查表(汇总)

操作命令
查看所有参数setmac show2
修改PON MACsetmac 1 32769 [MAC]
修改SN前4位setmac 1 2176 [值]
修改SN后8位setmac 1 2177 [值]
修改设备标识前6位setmac 1 768 [值]
修改设备标识后17位setmac 1 512 [值]
保存配置sendcmd 1 DB save
重启光猫reboot
查看地区列表cat /etc/init.d/regioncode
查看当前地区upgradetest gdefconf
切换地区upgradetest sdefconf [序号]
欺骗ITMS注册sendcmd 1 DB set PDTCTUSERINFO 0 Status 0
sendcmd 1 DB set PDTCTUSERINFO 0 Result 1
sendcmd 1 DB save

附:注意事项

  • 所有修改均以 setmac show2 查询到的ID为准,本文ID仅供参考。
  • SN和MAC请使用大写字母,MAC地址用小写。
  • 操作前务必备份原始 setmac show2 输出。
  • 若使用 zteOnu 工具,确保电脑网卡MAC已按要求修改。
最后提醒:耐心操作,多核对,遇到无法解决的问题及时联系运营商技术支持。

文档版本:1.0
更新日期:2026-09-04

从源码编译 Nginx (彻底解决, 支持最新TLS特性)

从源码编译可以完全定制,并为 Nginx 指定一个现代的、支持 TLSv1.3 的 OpenSSL 版本。

  1. 安装编译依赖

    sudo yum groupinstall "Development Tools" -y
    sudo yum install -y wget perl-devel perl-ExtUtils-Embed libxslt-devel libxml2-devel gd-devel GeoIP-devel
  2. 下载并编译新版本 OpenSSL

    cd /usr/local/src
    wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz  # 请务必通过官方获取最新源码
    tar -xzvf openssl-1.1.1w.tar.gz
    cd openssl-1.1.1w
    ./config --prefix=/usr/local/openssl-1.1.1w --openssldir=/usr/local/openssl-1.1.1w shared zlib
    make -j $(nproc) && sudo make install
  3. 下载 Nginx 源码并编译

    cd /usr/local/src
    wget https://nginx.org/download/nginx-1.27.0.tar.gz  # 使用你的版本或更新的稳定版
    tar -xzvf nginx-1.27.0.tar.gz
    cd nginx-1.27.0
    ./configure \
        --prefix=/etc/nginx \
        --sbin-path=/usr/sbin/nginx \
        --with-http_ssl_module \
        --with-http_v2_module \
        --with-openssl=/usr/local/src/openssl-1.1.1w \
        --with-cc-opt='-I/usr/local/openssl-1.1.1w/include' \
        --with-ld-opt='-L/usr/local/openssl-1.1.1w/lib -Wl,-rpath,/usr/local/openssl-1.1.1w/lib'
    make -j $(nproc) && sudo make install
  4. 🔍 验证 TLSv1.3 是否成功开启

    完成编译后,你可以用以下命令快速验证 Nginx 是否已正确链接到新版 OpenSSL:

    # 检查编译配置,OpenSSL 版本应高于 1.1.1
    nginx -V 2>&1 | grep -i openssl

    完成编译后,修改配置文件即可完成:

总结与建议

  • 希望一劳永逸地解决 TLSv1.3 问题:**它能为 Nginx 定制一个现代的加密库,并且不依赖系统库,升级维护也更灵活。

希望这个方案能帮到你。如果在实施过程中遇到任何疑问,随时可以带上具体的报错信息再来问我~

uv 的管理逻辑非常简单:以项目为单位,自动处理从 Python 版本到依赖包的一切。你不用再手动操心创建和激活环境的事,uv 会帮你把一切都整理得井井有条。

🚀 5分钟核心配置:从安装到运行

这是配置并运行一个 uv 管理项目的标准流程:

  1. 安装 uv:在终端中运行对应系统的命令。

    • macOS / Linux: curl -LsSf https://astral.sh/uv/install.sh | sh
    • Windows (PowerShell): powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  2. 初始化新项目:在项目文件夹内,用 uv init 一键生成基础配置文件。

    uv init my-project
    cd my-project

    这条命令会自动创建 pyproject.toml 文件,它声明了项目的所有依赖和元数据,是项目配置的核心。

  3. 添加依赖并自动创建环境:使用 uv add 添加依赖,如果虚拟环境不存在,uv 会自动创建。依赖会记录在 pyproject.toml 文件中。

    uv add requests
    • uv 会在当前目录下创建一个名为 .venv 的虚拟环境,用于隔离项目依赖。
    • 如果系统缺少所需的 Python 版本,uv 会自动下载并安装。
  4. 自动运行脚本:使用 uv run,无需手动激活虚拟环境。

    uv run python main.py

    它会自动找到项目里的 .venv 环境,并在其中运行你的代码,极大简化了开发流程。

完成以上步骤,你就成功运行了一个由 uv 全程管理的 Python 项目。整个过程无需手动安装 Python、创建或激活虚拟环境,uv 会自动完成。

🛠️ 常用场景进阶配置

如果你有更具体的需求,可以参考下面这些进阶用法。

🐍 精细管理 Python 版本

或许你不想用 uv 自动下载的版本,而是想精确控制项目的 Python 版本。

  • 安装并指定 Python 版本:显式安装你需要的 Python 版本。

    uv python install 3.11
    # 创建项目时,使用 --python 参数直接指定
    uv init --python 3.11 my-project
    cd my-project
    # 或者为现有项目固定 Python 版本
    uv python pin 3.11

    固定版本后,uv 会记录在 pyproject.toml 中,团队成员后续同步时会同此配置。

  • 强制使用系统 Python:

    uv venv --python 3.12 --no-managed-python

    这会强制 uv 使用系统安装的 Python 3.12 版本来创建虚拟环境。

☁️ 配置国内镜像源加速

为提升依赖安装速度,可配置国内镜像源(如清华源)。

  • Windows: $env:UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"
  • macOS/Linux: export UV_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple"

🗂️ 使用 pyproject.toml 进行高级配置

uv 的配置信息除了环境变量,主要集中在项目下的 pyproject.toml 文件中。该文件是 Python 项目的现代配置标准,uv 的各项参数都可以在这里以 [tool.uv] 的形式设置。

配置文件同时支持用户级 ~/.config/uv/uv.toml 和项目级 pyproject.toml。


💡 与常用 IDE 的集成

🧩 PyCharm (2024.3.2+)

  • 在创建新项目时,直接在“环境类型 (Environment type)”中选择 uv,PyCharm 会自动检测 uv 并配置好一切。
  • 如果 PyCharm 没有自动检测到 uv,你可以在“添加本地解释器 (Add Local Interpreter)”中选择 uv 环境,然后手动指定 uv 可执行文件的路径。

📝 VS Code

  1. 用 uv 创建并进入虚拟环境后,执行 uv run python -m pip install ipykernel 来安装内核。
  2. 在VS Code中按 Cmd+Shift+P (Mac) 或 Ctrl+Shift+P (Windows/Linux),选择 Python: Select Interpreter。
  3. 在弹出的列表中,uv 创建的 .venv 环境会自动被列出,选择它即可。

⚙️ 常用 uv 命令速查

  • uv init: 在当前目录初始化一个新项目,生成 pyproject.toml。
  • uv add <package>: 添加项目依赖并更新锁定文件。
  • uv remove <package>: 移除项目依赖。
  • uv sync: 同步项目的环境与 pyproject.toml 和 uv.lock 文件。
  • uv run <script>: 在项目的虚拟环境中自动运行命令。
  • uv python install <version>: 安装指定的 Python 版本。
  • uv python list: 列出所有可用的 Python 版本。
  • uv tool install <tool>: 安装并管理全局的命令行工具。

💎 总结

uv 的核心思想是“项目即环境”,将配置、依赖和运行完全自动化,免去了手动创建、激活、切换等繁琐步骤。它是一个集 Python 版本管理、虚拟环境管理、依赖管理于一体的现代化高效工具。

通过 NetworkManager 配置文件禁用

直接编辑 NetworkManager 的配置文件:

sudo vi /etc/NetworkManager/NetworkManager.conf

在 [main] 部分添加以下内容:

[main]
dns=none
systemd-resolved=false

保存后重启 NetworkManager:

sudo systemctl restart NetworkManager

此时 NetworkManager 将不再管理 DNS,/etc/resolv.conf 需手动维护。