维护者:Yao Yin Ying
校园网为拨号上网,由网络中心DHCP服务器动态分配IP地址。而固定IP需要以学校职工名义向网络中心提分配的出申请,再经过各级审批,步骤多,耗时长。为保证在校园网内顺利提供服务,本人根据阿里云公开API编写了HZAU DDNS动态解析服务。该服务适用于:
- 动态解析校园网内服务器域名
- 跳过IP固定申请,在校园网内提供服务(不固定IP,不开放对外端口)
- 作为心跳检测,监控服务器是否离线
- 监测和记录校园网网络故障事件
移动自:
https://github.com/YaoYinYing/python_learning/tree/master/HZAU_PYDDNS/api
- 安装Anaconda3
- 安装阿里云python sdk:
pip install aliyun-python-sdk-core
- 安装阿里云解析DNS sdk:
pip install aliyun-python-sdk-alidns
- 安装OpenSSL支持:
pip install pyopenssl
- 申请阿里云域名和云解析
- 申请阿里云解析和短信服务操作权限的RAM子账号
- 申请阿里云短信服务模板, 注意参数“pcname”和“newip” 分别对应子域名和IP地址(已改写为短线相连格式,原格式会被阿里云短信平台拦截)
- 在HTTP服务器的配制文件中设置py文件为可执行
- 在HTTP服务器的配制文件中设置https访问,注意添加证书
- 将文件释放至服务器根目录下的子目录
- 修改const.py中的参数,如下:
项目 | 属性 | 值 | 默认值与定义 |
---|---|---|---|
request_method_limit | Boolean | - | False,若为True则禁止get |
client | AcsClient实例 | RAM账号* | "",必填 |
ACCESS_KEY_ID | str | RAM账号** | "",必填 |
ACCESS_KEY_SECRET | str | RAM账号** | "",必填 |
token | str | 动态解析口令 | "",必填 |
domain_name | str | 域名 | "",必填 |
domain_name_list | str list | 域名列表 | [],必填,必须包含domain_name |
admin_phonenumber | str | 手机号码 | "",放空则不发短信 |
sms_signature | str | 短信签名 | "" |
sms_temp_code | str | 短信模板号 | "" |
serverchan_SCKEY | str | Server酱token | "",放空则不发消息 |
*参见阿里云python SDK快速指南和阿里云OpenAPI Explorer
**阿里云控制台-accesskeys-开始使用子用户accesskey,填写RAM子账号,并添加权限,获得 ACCESS_KEY和ACCESS_SECRET
Windows 10下可用cmd执行该命令
通过curl,只能一次解析一个。
curl https://服务器地址/DDNS目录/index.py -X POST -d "token=解析口令&name=解析子域名"
批量解析
将test_tool/post_test.py释放到任意目录,修改如下参数:
项目 | 属性 | 值 |
---|---|---|
token | str | 必填,动态解析口令,同服务器 |
namelist | str list | 必填,子域名列表 ,用英文引号包括,每个子域名用英文逗号隔开 |
domain_name | str | 指定解析域名,不加此参数则解析默认域名 |
- 安装python3
- 安装Requests:
pip install requests
- 修改token和namelist
- 运行
python post_test.py
Windows: 任务计划管理器
Linux: cron【配置过程见文档】
返回值 | 定义 | 解决措施 |
---|---|---|
“401.0”: “HTTPS REQUEST SCHEME IS REQUIRED.” | 使用了不安全的http协议访问 | 改用https协议访问 |
"401.1": "POST REQUEST_METHOD IS REQUIRED." | 只允许POST | 只用POST,或者将const.request_method_limit改为False |
“401.2”: “TOKEN ERROR” | 解析口令错误 | 修改解析口令,和服务端一致 |
"401.3": "INVALID DOMAIN" | 非允许自定义域名 | 修改为允许域名,或将此域名添加到域名列表 |
“503.1”: “CONNECTION ERROR” | 服务端网络错误 | 服务端网络修复,或稍后再试 |
“503.2”: “Failed to create new record.” | 新解析记录添加失败 | 检查子域名是否有非法字符,或稍后再试 |
“503.3”: “Failed to read full records.” | 域名解析查询失败,获取不到现在的解析情况 | 服务端网络修复,或稍后再试 |
“503.4”: “Failed to renew record.” | 更新解析记录失败 | 服务端网络修复,或稍后再试 |
“200.1 OK”: “records created” | 解析记录成功添加 | – |
“200.2 OK”: “records unchanged” | 解析记录维持不变 | – |
“200.3 OK”: “records modified.” | 解析记录成功修改 | – |
说明:该工具集为该服务的扩展,访问不需要通过https协议。根据获取的DDNS数据,用户可以定制其他工具。
test_tool/update_count_show.py
test_tool/update_history_show.py