zoukankan      html  css  js  c++  java
  • ddns+ros(routeros)+centos7.6+nginx+php+dnspod

    参考文章:

    http://www.myxzy.com/post-464.html

    https://www.cnblogs.com/crazytata/p/9686490.html

    php的源码下载:

    https://github.com/myxzy/dnspod-api-php/

    一.安装nginx

        1.安装yum源

    rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

        2.安装nginx

    yum install -y nginx

        3.启动nginx并设置开机自动运行

    1.  systemctl start nginx #启动,restart-重启,stop-停止
    2.  systemctl enable nginx #开机启动

        4.查看版本及运行状态

    1.  nginx -v #查看版本
       
    2.  ps -ef | grep nginx #查看运行状态
       

        二.安装php7

        1.安装yum源

    1.  rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
       
    2.  rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
       

        2.查看php7 yum组件,示例安装php7.0

    1.  yum search php70w 
       

        3.选择自己需要的组件安装,php70w.x86_64 和 php70w-fpm.x86_64 为核心程序必装

    yum install php70w.x86_64 php70w-fpm.x86_64

        4.启动php并设为开机启动

    1.  systemctl start php-fpm #启动,restart-重启,stop-停止
       
    2.  systemctl enable php-fpm #开机启动
       

        5.查看版本及运行状态

    1.  php-fpm -v #查看版本
       
    2.  ps -ef | grep php-fpm #查看运行状态

    进行完以上步骤之后,读者自行在nginx中配置web目录,已经可以正常运行了,但是此时nginx和php是以root身份运行,以最高权限运行web文件会给系统带来安全隐患,以下为权限配置示例


        三.修改nginx配置

      vi /etc/nginx/conf.d/default.conf

    1.  找到第一个location中的这一行

        index  index.html index.htm;

        修改为:

        index  index.php index.html index.htm; #添加index.php,index.php必须为第一个

            2.

        把FastCGI server这行下面的location的注释去掉,并修改成下面这样子

         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

         #

         location ~ .php$ {

             root            /usr/share/nginx/html;  #网站根目录

             fastcgi_pass   127.0.0.1:9000;

             fastcgi_index  index.php;

             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

             include        fastcgi_params;

         }

    service nginx restart   #重启nginx

    service php-fpm start   #开启php-fpm

      3. 

    在网站根目录新建index.php文件

    vim /usr/share/nginx/html/index.php

      4.

    输入内容:

    <?php

    phpinfo();

    ?>

      5.

    在浏览器中输入虚拟机ip,已经可以看到phpinfo的信息了 
    在windows上修改hosts文件,添加一行

    192.168.6.114   www.test1.com   #配置虚拟机ip对应域名

      6.

    现在就可以在windows上用www.test1.com访问虚拟机配置的服务器了

     

    ----------------------------------------------------------------------------------------------------------------------------

    接下来,现在dnspod.php到/usr/share/nginx/html/,同时mv dnspod.php index.php

    http://www.myxzy.com/post-464.html

    一、创建Token添加域名

    首先域名要在DNSPOD解析,然后在DNSPOD后台开启的API Token。

    详细开通API Token教程:https://support.dnspod.cn/Kb/showarticle/tsid/227/

    二、PHP制作DNSPOD API动态解析接口

    以下是我制作好的php解析接口

    接口地址:

    HTTP请求方式:

    • POST/GET

    请求参数:

    • token    (必选)  DNSPod Token,格式 "ID,Token",如“12345,3a13a4331549*******127c185368303”
    • domain (必选)  域名(如:myxzy.com)
    • record  (必选)  记录名(如:www)
    • ip         (可选,默认值为请求来源IPv4)  DDNS的IP地址(或者CNAME、MX记录值)
    • line      (可选,默认值为默认)  线路设置,详细参数请看注1
    • type     (可选,默认值为A记录)  支持AAAA、CNAME、MX记录
    • format    (可选,默认值为xml)  xml和json,返回的数据格式

    注1:

    line参数说明:如&line=cmcc,那么线路就是移动线路,请按照下面的对照表来。

    default  =>  默认
    ctc  =>  电信
    cucc  =>  联通
    cernet  =>  教育网
    cmcc  =>  移动
    ctt  =>  铁通
    home  =>  国内
    abord  =>  国外
    search  =>  搜索引擎
    baidu  =>  百度
    google  =>  谷歌
    youdao  =>  有道
    bing  =>  必应
    soso  =>  搜搜
    sogou  =>  搜狗
    qihu  =>  奇虎

    示例:

    curl -X POST http://u.myxzy.com/dnspod -d 'token=id,token&domain=myxzy.com&record=www&ip=1.1.1.1&line=ctc&record_type=A&format=json'
    这里注意下,你提交的二级域名,必须已经在dnspod创建过了!!!比如这里的www,已经在dnspod上有A记录了!

    返回参考:

    {
        "code": "1",
        "message": "Record created success, ip updated",
        "time": "2019-03-08 09:28:34",
        "info": "dnspod-api-php V1.4 By Star.Yu"
    }

    字段说明:

    code:状态id编号,1是成功,0是失败,其他的数字请参考DNSPOD的API ID对应的报错

    message:本php接口输出的信息

    time:访问时间

    info:本php接口的版本信息等

    安全说明:

    1、本接口未记录所有的解析token和解析记录,但是服务器的访问日志会有链接记录(按照政策要求需保存6个月的日志)。虽然有日志但是本接口不提供任何查询。

    2、建议使用独立的DNSPOD账号来使用本接口,重要的域名请自建PHP服务器用来解析。由于使用本接口出现的任何安全问题,本人概不负责。这边只能保证本人不会去做任何后门行为。这边建议如果使用了本接口请勤换token

    PS:因为有了token可以管理账号下的所有域名。

    dnspod-api-php Github地址:https://github.com/myxzy/dnspod-api-php/

    ROS脚本:

    #DDNS Token
    :local token "id,token"
    
    #DDNS域名
    :local record "www"
    :local domain "myxzy.com"
    
    :global ipold;
    :local ipnew [/ip address get [/ip address find interface=ADSL-PPPoE] address]
    :set ipnew [:pick $ipnew 0 ([len $ipnew] -3)]
    
    :if ($ipnew != $ipold) do={
    /tool fetch url=("http://u.myxzy.com/dnspod?token=$token&ip=$ipnew&domain=$domain&record=$record") mode=http keep-result=no
    :set ipold $ipnew
    log info "DDNS: Sending UPDATE!"
    }

    以上脚本需要修改ADSL-PPPoE(宽带拨号的名称),token,record和domain

    注:ROS可以设置定时1分钟执行一次脚本,脚本中带有ip是否相同判断,相同就不执行;然后是我做的API接口后台中也有ip是否相同的判断,所以不会引起DNSPOD锁域名的情况。

    更新说明:

    by 2019-4-7

    1.7版本

    1、支持cname和mx记录添加和修改

    2、A和AAAA记录会判断IP值是否正确

    by 2019-4-3

    1.6版本

    1、优化部分Bug

    2、不添加参数自动跳转到demo页面

    by 2019-3-18

    1.5版本

    1、支持POST和GET提交

    by 2019-3-8

    1.4版本

    1、重写返回数据格式,因为我要对接项目,所以返回格式可以是xml或json

    2、重写更新ipv4和修改ipv6

    3、ip地址可以根据来源自动更新。

    4、自动添加解析记录,不存在就自动添加解析记录

    by 2018-12-19

    1.3版本

    1、去除服务器获取域名DNS解析地址去判断是否相同(不影响和DNSPOD后台记录是否相同的判断)

    2、因为突然发现可以通过访问日志查看解析的API ID和Token,有不安全的可能的,所以提供代码,建议自建PHP服务器保证域名解析安全

    3、如果不怕安全问题,这边还会继续提供解析服务,不过会修改本API的服务器地址,老版本接口保证持续1个月

    by 2018-10-18

    1.1版本

    1、增加ipv6支持,在连接后面加上&type=AAAA为IPv6(不加默认是A解析)

    2、把更新DNS记录接口修改为修改DNS接口(更新DNS接口不支持IPv6)

    3、IPv6不增加从服务器获取IPv6进行判断

    1.0版本

    1、增加按照线路更新ip地址

    2、对服务器获取域名IP判断DNS记录添加开关 &chk=1

    3、优化本接口报错信息提示

    0.1beta版本

    1、基本实现DNS域名动态解析

    2、可以判断IP是否相同,防止DNSPOD相同修改记录超过5次被锁域名1小时

    你可以把源码里,让接口的首页访问的直接显示当前客户端IP,

    if(is_array($request)&&count($request)<1){
    Header("Location: http://u.myxzy.com/dnspod/demo.php");
    exit;
    }

    源码见:https://www.cnblogs.com/itfat/p/10928517.htm


    l

  • 相关阅读:
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
    @RequestParam设置默认可以传空值
    python清空列表的方法
    Git分支管理的基本操作
    判断一个坐标点是否在不规则多边形内部的算法
    Flask 解析 Web 端 请求 数组
    SQL server 获取异常
    SQL server 大量数据导入和系统运行慢的问题
    SQL SERVER 跨服务器连接
    #pragma once
  • 原文地址:https://www.cnblogs.com/itfat/p/10928268.html
Copyright © 2011-2022 走看看