收起左侧

分享基于NO-IP DDNS设置自动获取IP

4
回复
405
查看
[ 复制链接 ]

4

主题

6

回帖

0

牛值

江湖小虾

2025-12-10 11:18:34 显示全部楼层 阅读模式

好久没搞技术了,最近心血来潮想做一个免费的DDNS域名,虽然飞牛的转发域名好用,但宽带会做限制(我是一个穷书生),如果用DDNS就是直连NAS了。原来最出名的花生壳现在发现要收费了,免费的又限制应用,找了一圈发现,国内的基本都没有不限端口、应用又免费的DDNS(可能是我没找到)。那只能跑外面去找,结果给我发现NO-IP这个网站,免费的DDNS,不限应用、不限端口,支持ACCESS KEY,但是问题又来了,飞牛的自带的DDNS和DDNS-GO都不支持NO-IP这个网站,只有华硕路由器支持。看了一下NO-IP的文档,它是支持客户端获取IP的,那就简单了,在飞牛上安装这个客户端就可以啦,再加入启动进程。具体方法如下:

一、注册

NOIP.COM注册一个用户,然后申请域名,具体步骤省略。

二、安装客户端

根据NOIP的技术文档,它是有一个客户端可以安装的,安装完后能侦听公网IP,并上传NOIP,并且支持Windows、MAC、Linux三种操作系统。下面只讲Linux系统安装方法:

  1. 下载安装 linux DUC 到终端,使用以下命令,逐条执行

    • wget --content-disposition https://www.noip.com/download/linux/latest
    • tar xf noip-duc_3.3.0.tar.gz
    • cd /home/$USER/noip-duc_3.3.0/binaries && sudo apt install ./noip-duc_3.3.0_amd64.deb
  2. 使用 noip-duc -g all.ddnskey.com --username <DDNS Key Username> --password <DDNS Key Password>命令格式启动侦听程序
    下面,我把noip-duc --help的命令解释一下

    noip-duc --help
    noip-duc 3.3.0
    No-IP Dynamic Update Client
    
    USAGE:
        noip-duc [OPTIONS] --username <USERNAME> --password <PASSWORD>
    
    OPTIONS:
    `--daemon-group <守护进程组>`
        在后台运行时,切换到此用户组
        [环境变量:NOIP_DAEMON_GROUP=]
    
    `--daemon-pid-file <守护进程PID文件>`
        在后台运行时,将进程 ID 写入此文件
        [环境变量:NOIP_DAEMON_PID_FILE=]
    
    `--daemon-user <守护进程用户>`
        在后台运行时,切换为此用户
        [环境变量:NOIP_DAEMON_USER=]
    
    `--daemonize`
        在后台运行(守护进程模式)
    
    `-e, --exec-on-change <变更时执行命令>`
        当 IP 地址变更时要运行的命令。运行时会设置环境变量
        CURRENT_IP 和 LAST_IP。同时,命令中的 {{CURRENT_IP}} 和 {{LAST_IP}}
        占位符会被替换为相应的值。这允许您将变量作为参数传递给命令,
        或从环境中读取。命令总是在 shell 中执行(Windows 上为 sh 或 cmd)。
    
        示例:
        `noip_duc -e 'mail -s "IP 从 {{LAST_IP}} 变更为 {{CURRENT_IP}}" user@example.com'`
        [环境变量:NOIP_EXEC_ON_CHANGE=]
    
    `-g, --hostnames <主机名>`
        要更新的组和主机名的逗号分隔列表
        [环境变量:NOIP_HOSTNAMES=]
    
    `-h, --help`
        打印帮助信息
    
    `--http-timeout <HTTP超时>`
        发起 HTTP 请求时的超时时间
        [环境变量:NOIP_HTTP_TIMEOUT=]
        [默认值:10s]
    
    `--import [<导入文件>]`
        从 noip2 导入配置,并显示为环境变量
        [默认:/etc/no-ip2.conf]
    
    `--ip-method <IP探测方法>`
        用于发现公网 IP 的方法,以逗号分隔的列表。按顺序尝试,
        直到找到公网 IP。失败的方法不会重试,除非所有方法都失败。
    
        可能的值包括:
        - 'aws-metadata':使用 AWS 元数据 URL 获取与实例关联的弹性 IP。
        - 'dns':使用 No-IP 的 DNS 公网 IP 查询系统。
        - 'dns:<域名服务器>:<端口>:<查询名>:<记录类型>':自定义 DNS 查询。
        - 'http':No-IP 在 80 端口的 HTTP 方法。
        - 'http-port-8245':No-IP 在 8245 端口的 HTTP 方法。
        - 'static:<IP 地址>':始终使用此 IP 地址。与 `--once` 一起使用很有帮助。
        - HTTP URL:返回纯 IP 地址的 HTTP URL。
    
        [环境变量:NOIP_IP_METHOD=]
        [默认值:dns,http,http-port-8245]
    
    `-l, --log-level <日志级别>`
        设置日志级别。可能的值:trace, debug, info, warn, error, critical。覆盖 `--verbose`
        [环境变量:NOIP_LOG_LEVEL=]
    
    `--once`
        查找公网 IP 并发送一次更新,然后退出。这是验证凭据是否正确的好方法。
    
    `-p, --password <密码>`
        您的 www.noip.com 密码。为了更好的安全性,请使用“更新组”凭据。
        https://www.noip.com/members/dns/dyn-groups.php
        [环境变量:NOIP_PASSWORD=]
    
    `-u, --username <用户名>`
        您的 www.noip.com 用户名。为了更好的安全性,请使用“更新组”凭据。
        https://www.noip.com/members/dns/dyn-groups.php
        [环境变量:NOIP_USERNAME=]
    
    `-v, --verbose`
        增加日志详细程度。可多次使用以增加级别
    
    `-V, --version`
        打印版本信息
    

三、添加启动进程

运行了noip-duc后我发现,这条命令重启后就失效了,每次都要手动执行,太麻烦了,于是,我做一个noip-duc.service的服务进程,具体方法如下:

# 创建专门运行 noip-duc 的系统用户
sudo useradd -r -s /usr/sbin/nologin -M -c "No-IP DUC Service User" noip-duc
# 创建noip-duc.service文件
sudo nano /etc/systemd/system/noip-duc.service
# noip-duc.service文件内容
[Unit]
Description=No-IP Dynamic Update Client
After=network.target
Wants=network.target
StartLimitIntervalSec=100
StartLimitBurst=5

[Service]
Type=simple
User=noip-duc
Group=noip-duc
WorkingDirectory=/var/lib/noip-duc

# 使用简单模式而不是 forking
# username、password最好在no-ip后台申请一个DDNS KEY,用虚拟用户比较安全
ExecStart=/usr/bin/noip-duc \
    --username=用户名 \
    --password=密码 \
    --hostnames=你的域名(.ddns.net) \
    --log-level=info

# 可选:设置环境变量
Environment="NOIP_CHECK_INTERVAL=5m"
Environment="NOIP_HTTP_TIMEOUT=10s"

# 重启策略
Restart=on-failure
RestartSec=5

# 资源限制
MemoryMax=100M
CPUQuota=5%

# 安全设置
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ReadWritePaths=/var/lib/noip-duc
ProtectHome=yes
PrivateDevices=yes
ProtectKernelTunables=yes
ProtectControlGroups=yes

[Install]
WantedBy=multi-user.target
# 创建工作目录
sudo mkdir -p /var/lib/noip-duc
sudo chown noip-duc:noip-duc /var/lib/noip-duc
sudo chmod 700 /var/lib/noip-duc
# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 停止当前服务
sudo systemctl stop noip-duc.service

# 启动新配置的服务
sudo systemctl start noip-duc.service

# 查看详细状态
sudo systemctl status noip-duc.service -l

# 查看实时日志
sudo journalctl -u noip-duc.service -f --since "1 minute ago"

执行完以上命令,你的noip-duc就已经加入到启动进程,每次重启都会自动加载。

以上是个人分享,如有错误,欢迎指正。

收藏
送赞
分享

1

主题

4

回帖

0

牛值

江湖小虾

2025-12-10 17:16:21 显示全部楼层

刚申请了no-ip发现用不了,有简单一点的方法吗dizzy

4

主题

6

回帖

0

牛值

江湖小虾

2025-12-11 11:20:33 楼主 显示全部楼层

你说用不了是指哪里?飞牛打开SSH,用SSH软件登录就可以了,登录之后要先sudo -i

指教一下, no-ip 如何到lucky中使用反代呢?  详情 回复
2025-12-11 13:27

5

主题

45

回帖

0

牛值

初出茅庐

fnOS1.0上线纪念勋章飞牛百度网盘玩家

2025-12-11 13:27:58 显示全部楼层
bugcai 发表于 2025-12-11 11:20
你说用不了是指哪里?飞牛打开SSH,用SSH软件登录就可以了,登录之后要先sudo -i
...

指教一下, no-ip 如何到lucky中使用反代呢?
no-ip不支持反代  详情 回复
2025-12-11 16:30

4

主题

6

回帖

0

牛值

江湖小虾

2025-12-11 16:30:56 楼主 显示全部楼层
柳如嫣 发表于 2025-12-11 13:27
指教一下, no-ip 如何到lucky中使用反代呢?

还没试过,不知道呢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则