自动更新DNS记录指向本地IP [automatically update DNS records to dynamic local IP]
Project description
DDNS
自动更新DNS解析 到本机IP地址,支持 ipv4和ipv6 以 本地(内网)IP 和 公网IP。 代理模式,支持自动创建域名记录。
Ubuntu | Windows Python3.7 | Windows Python2.7 | Mac Python3.7 | Mac Python2.7 |
---|---|---|---|---|
Features
- 兼容和跨平台:
- 多系统(Widnows, Linux, MacOS)
- python2和python3支持
- 无Python可执行文件
- PIP安装
- 域名支持:
- 多个域名支持
- 多级域名解析
- 自动创建新记录
- IP类型:
- 内网IP
- 公网IP
- ipv6支持
- 正则选取支持(@rufengsuixing)
- 网络代理:
- http代理支持
- 多代理自动切换
- 服务商支持:
- DNSPOD
- 阿里DNS
- DNS.COM(@loftor-git)
- DNSPOD国际版
- CloudFlare(@tongyifan)
- 其他:
- 可设置定时任务
- 本地文件缓存(减少服务器请求和查询)
TODO:
- 腾讯云
- 同线路多记录支持
- socks代理
- TTL自定义(更多配置)
使用
1.安装
根据需要选择一种方式: 二进制
版,pip
版,或者源码
运行
pip
安装(需要pip
或easy_install
) beta- 安装ddns:
pip install ddns
或easy_install ddns
- 运行:
ddns
- 安装ddns:
- 二进制版(单文件,无需任何python环境)
- 源码运行(无任何依赖, 需要python环境)
- clone 或者下载此仓库并解压
- 运行./run.py (widnows 双击
run.bat
或者运行python run.py
)
- 历史版本
2.快速配置
-
复制
example.config.json
到config.json
-
申请 api
token
: -
修改配置,
ipv4
和ipv6
字段,无则设为[]
(此时不会解析和更新对应IP),详细参照配置说明
详细配置
config.json
- 首次运行会自动生成一个模板配置文件
- 可以使用
-c
使用指定的配置文件 (默认读取当前目录的 config.json) - 推荐使用vscode等支持JsonSchema的编辑器编辑配置文件
#python
python run.py -c /path/to/config.json
#二进制可执行文件
ddns -c path/to/config.json
配置说明
key | type | required | default | comment |
---|---|---|---|---|
id | string | Yes | 无 | api授权id(cloudflare 为登录邮箱) |
token | string | Yes | 无 | api授权token |
dns | string | No | dnspod |
dns服务商,阿里为alidns ,DNS.COM为dnscom ,DNSPOD国际版为(dnspod_com ),cloudflare |
ipv4 | array | No | [] | ipv4 域名列表 |
ipv6 | array | No | [] | ipv6 域名列表 |
index4 | string/int | No | 'default' | ipv4获取方式 |
index6 | string/int | No | 'default' | ipv6获取方式 |
proxy | string | No | 无 | 多个代理; 分割,DIRECT 表示直连,从第一个代理尝试 |
debug | boolean | No | false | 是否开启调试(输出调试信息) |
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.json",
"id": "12345",
"token": "mythokenkey",
"dns": "dnspod 或 dnspod_com 或 alidns 或 dnscom 或 cloudflare",
"ipv4": [
"ddns.newfuture.xyz",
"ipv4.ddns.newfuture.xyz"
],
"ipv6": [
"ddns.newfuture.xyz",
"ipv6.ddns.newfuture.xyz"
],
"index4": 0,
"index6": "public",
"proxy": "127.0.0.1:1111",
"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即可
- alidns打开: https://alidns.aliyuncs.com
- cloudflare打开: https://api.cloudflare.com
- dns.com打开: https://www.dns.com
- dnspod.cn打开: https://dnsapi.cn
- dnspod国际版: https://api.dnspod.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
ddns-2.6.1-py2.py3-none-any.whl
(21.3 kB
view hashes)