by Devin Yang

建立于: 1年前 ( 更新: 1年前 )

如果您需要使用DDNS,网络上太多家都是假免费的DDNS服务,
被骗好几次了,这家才是我用过,真正免费好用的DDNS,您真的可以试试。
https://www.duckdns.org/

DDNS又称为动态DNS,可以让我们的浮动IP取得一个域名。
这样就能透过域名来访问我们浮动IP的主机。

例如我的ISP是Hi-Net,家用型的只肯给一个固定IP及六个浮动IP,那是不是就代表没法用浮动IP架站呢?
当然可以,只要你有DDNS就搞定罗,而且如果您自己有域名,但证书供应商又不提供API让你动态更新DNS纪录时 ,
还可以透过CNAME的设置,将您的域名指向DDNS的域名,这样您还能用自己的域名连上动态IP的主机了🥰。

示意图如下:

host -t a bbb.e-course.app
bbb.e-course.app is an alias for imacbbb.duckdns.org.
imacbbb.duckdns.org has address 111.248.139.21

在这里我提供一个动态更新的bash供参考,请注意,您需依实际情况调整 bash内容去符合您自己的环境。
我在这边只是提供了一个概念跟方法,您可以有两个bash,一只检查IP是否变更了,另一只进行IP的更新。

check_ip_changed.sh

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
DNS_IP=$(host -t a bbb.e-course.app 8.8.8.8|grep address|awk '{print $4}')
echo ${DNS_IP}
IP=`ifconfig eth0|grep 'inet'|awk '{print $2}'`
echo ${IP}
if [ $DNS_IP != $IP ]; then
    echo "Update DDNS"
    /root/ddns.sh
fi

解说:
一、您需要依实际状况,调整命令,取得您自己目前DNS解析出来的DNS IP,例如我是透过DNS取得

二、您需要能用命令,取得您外网的网卡IP,我的例子中网卡是eth0,您的网卡应该是ppp0,这网卡我改过名称了。


三、可以看到,在上方的bash中,会比对DNS_IP及IP,如果不同时,就运行ddns.sh进移动态DNS的IP更新。
下方是ddns.sh的内容,您需要调整正确的subdomain、token及网络卡

#!/bin/bash
SUBDOMAIN=<SUBDOMAIN>
TOKEN=<YOUR TOKEN>
IP=`ifconfig eth0|grep 'inet'|awk '{print $2}'`
echo "update ${SUBDOMAIN}.duckdns.org => IP:${IP}"
curl "https://www.duckdns.org/update/${SUBDOMAIN}/${TOKEN}/${IP}"

四、确认没问题后,放入调度中,每分钟检测即可。

* * * * * /root/check_ip_changed.sh

 

PPPoE有可能会被ISP断线,您以参考我另一篇文章
https://www.ccc.tc/article/my-bash-of-repppoe

 

Tags: ddns pppoe

Devin Yang

文章内容无法一一说明,如果您有什么不了解处,欢印提问哦:)

No Comment

Post your comment

需要登入才可留言!

类似文章


pppoe

我的重拨pppoe用的BASH

透过ISP拨pppoe,有时是他是会自己断线的,所以我们通常可以写一个简单的调度,让他例如每分钟跑一次但事情没那么简单,光检查ppp0有没有连线是不够的,看看我的bash怎么写吧。

pppoe

如何在ubunut上进行pppoe拨接

如何在ubunut上进行pppoe拨接

pppoe

Ubuntu ppp0改名eth0

不确定谁会用到,但我自己碰到啦,因为我家是浮动IP。我安装的一个软体他检测不出ppp0网卡为外网,所以改变名称就能骗骗他成功安装。