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

變更Ubuntu ppp0網卡名稱成eth0

不確定誰會用到,但我自己碰到啦,因為我家是浮動IP。我安裝的一個軟體他偵測不出ppp0網卡為外網,所以改變名稱就能騙騙他成功安裝。

pppoe

我的重撥pppoe用的BASH

透過ISP撥pppoe,有時是他是會自己斷線的,所以我們通常可以寫一個簡單的排程,讓他例如每分鐘跑一次但事情沒那麼簡單,光檢查ppp0有沒有連線是不夠的,看看我的bash怎麼寫吧。

pppoe

如何在ubunut上進行pppoe撥接

如何在ubunut上進行pppoe撥接