1. 服务器/VPS/主机用户Telegram电报群: https://t.me/openos
    黑群晖 Synology Telegram电报群: https://t.me/nasfan
    排除公告

定时任务脚本自动配置阿里云域名A记录:一级域名访问你的NAS

本帖由 liulee2019-02-22 发布。版面名称:群晖 Synology DSM

  1. liulee

    liulee New Member

    注册:
    2019-02-11
    帖子:
    12
    github上下载的 aliyun_ddns (https://github.com/limoxi/aliyun_ddns) 里面有几个bug,
    1. 获取本地IP的是走的百度,解析异常;
    2. 读取上次IP异常,文件打开方式错了;
    3. 无法新增A记录;

    自己修改了下,懒得去提交和fork了, 5.2环境下测试OK,脚本见附件。

    详细步骤如下:

    1. 阿里云,申请个域名,做好实名认证,3年也没个多少;并记录下自己的 access_key,secret_key 信息(登录后,鼠标移动到页面右上角头像那,弹出菜单中有 accesskey 字样,点进去即可),建议启用 RAM 控制,给个子账户以 DNS 访问权限即可。
    2. 内网计算机,以 root 用户 ssh 登录到 nas;sftp/wscp上传附件,解压缩,修改 settings.json中的3个配置项;
    3. 修改 /etc/crontab , 添加一条任务:(5分钟检查一次,通常免费DNS解析是10分钟粒度,保证赶上这个粒度即可)

      代码:
          
      */5 * * * * /usr/bin/python /root/aliyun_ddns/aliyun_ddns.py >> /root/aliyun_ddns/log.txt 2>&1
      
      任务中的路径自行调整下;
    4. 重启nas
    python脚本基本逻辑如下:
    1. 获取本网的真实 IP,如果是100号开头的,请打电话给运营商要外网IP;
    2. 检查是否和上次IP一致,若不一致则继续;
    3. 从阿里云获取所有A记录;
      3.1 若有A记录,且ip不一致,则替换所有A记录的value为本网的外网IP地址;
      3.2 若无A记录,则添加一个A记录

    通过这个方法,花生壳之类的可以不用了,干干净净的解析。直接一级域名访问你自己的nas,不要太爽。

    ps.
    其他要做的事情:
    • 路由器做好端口映射,通常 5000=>NAS内网IP:5000,8080 => NAS内网IP:80 就够了;其他端口自行百度
    • nas上没有pip的话,wget 一个pip即可: wget https://bootstrap.pypa.io/get-pip.py , python运行它后,即可通过 pip 安装 python 库。在 aliyun_ddns.py 中需要用到几个库:
      代码:
          pip install requests
          pip install bs4
      
    • ssh 需要在控制面板开通;
    • 原则上,这个和群晖关系不大,linux , windows 都可以这样来处理域名解析。
    • settings.json 注意保密。这是你阿里云的远程访问凭据!
     

    附件文件:

    最后编辑: 2019-02-22
    已获得 osx 的点赞。
  2. osx

    osx 管理员 管理成员

    注册:
    2017-03-30
    帖子:
    945
    不错,晚点试试。
    不过我在用freedns的免费域名.
     
  3. xiedl

    xiedl Member

    注册:
    2019-04-06
    帖子:
    40
    请问我直接用www.ip.cn得到的IP:112.2.XXX.XXX,
    然后在阿里云添加域名解析A记录到IP上,
    浏览器上打开,显示“”无法访问此网站“,是何原因?
    好像这不是100打头的大内网……