基于DDNS实现远程访问家庭服务

必要条件:

  • 家庭宽带有公网IP
  • 一个支持NAT的路由器
  • 一个自己的域名(国内买的需要备案后使用)
  • 一个24h跑服务的机器(树莓派等设备)

操作步骤:

  1. 取消光猫拨号,使用支持NAT的路由器桥接至光猫并拨号上网具体操作因设备而异,自行把握
  2. 根据域名商提供的api编写更新dns解析记录工具并定时执行
  3. 将本地服务端口通过路由器NAT服务进行映射
  4. 访问{域名}:{映射后的端口} 来访问本地服务

注意:

1.阿里云的备案会定期审查,如果域名没解析至备案的ip会被取消接入。推荐在已购买的域名下新建二级域名,并用二级域名来作为ddns的域名

2.可以购买namesilo的域名并设置dns服务器为Hurricane Electric的dns服务器,使用Hurricane Electric的dns解析ttl最低5min基本是全网最低(ps:NameSilo的ttl太长了)

附带Hurricane Electric更新域名解析脚本

#!/bin/bash
CheckIP(){
IP=$(curl -s -4 "http://checkip.dns.he.net/")
}
CheckIP2(){
IP_Old=$(curl -s -4 "http://checkip.dns.he.net/")
}
UpdateIP() {
echo "`date +'%a %b %d %r'` Update Record -> `$IP`."

(curl -s -4 "http://hostname:key@dyn.dns.he.net/nic/update?hostname=hostname" 2>&1 | sed "s/^/`date +'%a %b %d %r'` /" && echo) >> /root/dynlog/ip-updates.log
echo "Domain-Updater Started."
while true; do
        CheckIP;
        echo "`date +'%a %b %d %r'` Checking..."
        if [ "$IP" != "$IP_Old" ]; then
                CheckIP;
                CheckIP2;
                UpdateIP;

        else
        echo "`date +'%a %b %d %r'` No change, all good." >> /root/dynlog/ip-updates.log
        echo "`date +'%a %b %d %r'` No change, all good."
        fi
        trap "echo Domain-Updater Stopped.;exit 0" SIGINT SIGTERM
        sleep 300
done

 

posted @ 2023-01-06 16:47  北极星※  阅读(291)  评论(0)    收藏  举报