Skip to main content

automatically update DNS records to dynamic local IP [自动更新DNS记录指向本地IP]

Project description

DDNS

自动更新DNS解析 到本机IP地址,支持 ipv4和ipv6 以 本地(内网)IP 和 公网IP。 代理模式,支持自动创建域名记录。

PyPI Build Status Build Status latest deploy

Build Details
  • Linux Python (2和3): Travis build
  • Windows Python3.7: Build Status
  • Windows Python2.7: Build Status
  • Mac OSX Python3.7: Build Status
  • Mac OSX Python2.7: Build Status

Features

  • 兼容和跨平台:
    • 可执行文件(无需python环境)
    • 多系统兼容 cross platform
    • python2和python3支持 PyPI - Python Version
    • PIP安装 PyPI - Wheel
  • 域名支持:
    • 多个域名支持
    • 多级域名解析
    • 自动创建新记录
  • IP类型:
    • 内网IP
    • 公网IP
    • ipv6支持
    • 正则选取支持(@rufengsuixing)
  • 网络代理:
    • http代理支持
    • 多代理自动切换
  • 服务商支持:
  • 其他:
    • 可设置定时任务
    • 本地文件缓存(减少API请求)

使用

① 安装

根据需要选择一种方式: 二进制版,pip版,或者源码运行

  • pip安装(需要pip或easy_install) beta

    1. 安装ddns: pip install ddnseasy_install ddns
    2. 运行: ddns
  • 二进制版(单文件,无需python)

  • 源码运行(无任何依赖, 需python环境)

    1. clone 或者下载此仓库并解压
    2. 运行./run.py (widnows 双击run.bat或者运行python run.py)

② 快速配置

  1. 申请 api token,填写到对应的idtoken字段:

  2. 修改配置文件,ipv4ipv6字段,为待更新的域名,详细参照配置说明

详细配置

config.json 配置文件
  • 首次运行会自动生成一个模板配置文件
  • 可以使用 -c使用指定的配置文件 (默认读取当前目录的 config.json)
  • 推荐使用vscode等支持JsonSchema的编辑器编辑配置文件
ddns -c path/to/config.json
# 或者源码运行
python run.py -c /path/to/config.json 

配置参数表

key type required default description tips
id string api访问ID cloudflare为邮箱
token string api授权token 也叫secret key, 反馈粘贴时删除
dns string No "dnspod" dns 服务商 阿里alidns,
dns.com为dnscom,
DNSPOD国际版dnspod_com
ipv4 array No [] ipv4 域名列表 []时,不会获取和更新IPv4地址
ipv6 array No [] ipv6 域名列表 []时,不会获取和更新IPv6地址
index4 string|int No "default" ipv4 获取方式 可设置网卡,内网,公网,正则等方式
index6 string|int No "default" ipv6 获取方式 可设置网卡,内网,公网,正则等方式
proxy string No http代理;分割 多代理逐个尝试直到成功,DIRECT为直连
debug bool No false 是否开启调试 运行异常时,打开调试输出,方便诊断错误
cache bool No true 是否缓存记录 正常情况打开避免频繁更新

index4和index6参数说明

  • 数字(0,1,2,3等): 第i个网卡ip
  • 正则表达(如"192.*"): 提取ifconfig/ipconfig中与之匹配的首个IP地址,注意json转义(\要写成\\)
    • "192.*"表示192开头的所有ip
    • 如果想匹配10.00.xxxx应该写成"10\\.00\\..*"("\\"json转义成\)
  • 字符串"default"(或者无此项): 系统访问外网默认IP
  • 字符串"public": 使用公网ip(使用公网API查询)
  • false: 强制禁止更新ipv4或ipv6的DNS解析

配置示例

{
	"$schema": "https://ddns.newfuture.cc/schema/v2.json",
	"id": "12345",
	"token": "mytokenkey",
	"dns": "dnspod 或 dnspod_com 或 alidns 或 dnscom 或 cloudflare",
	"ipv4": [
		"ddns.newfuture.cc",
		"ipv4.ddns.newfuture.cc"
	],
	"ipv6": [
		"ddns.newfuture.cc",
		"ipv6.ddns.newfuture.cc"
	],
	"index4": 0,
	"index6": "public",
	"proxy": "127.0.0.1:1080;DIRECT",
	"debug": false
}

定时任务

可以通过脚本设置定时任务(默认每5分钟检查一次ip,自动更新)

windows

  • [推荐]以系统身份运行,右键"以管理员身份运行"task.bat(或者在管理员命令行中运行)
  • 以当前用户身份运行定时任务,双击或者运行task.bat (执行时会闪黑框)

linux

运行 sudo ./task.sh

FAQ

Windows Server [SSL: CERTIFICATE_VERIFY_FAILED]

Windows Server 默认安全策略会禁止任何未添加的信任ssl证书,可手动添加一下对应的证书 #56

使用系统自带的IE浏览器访问一次对应的API即可

问题排查反馈
  1. 先确认排查是否是系统/网络环境问题
  2. issues中搜索是否有类似问题
  3. 前两者均无法解决或者确定是bug,在此新建issue
    • 开启debug配置
    • 附上这些内容 运行版本和方式,系统环境, 出错日志,去掉id/token的配置文件
    • 源码运行注明使用的python环境

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ddns-2.6.4.tar.gz (17.3 kB view hashes)

Uploaded Source

Built Distribution

ddns-2.6.4-py2.py3-none-any.whl (21.7 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page