基于DDNS实现远程访问家庭服务
必要条件:
- 家庭宽带有公网IP
- 一个支持NAT的路由器
- 一个自己的域名(国内买的需要备案后使用)
- 一个24h跑服务的机器(树莓派等设备)
操作步骤:
- 取消光猫拨号,使用支持NAT的路由器桥接至光猫并拨号上网具体操作因设备而异,自行把握
- 根据域名商提供的api编写更新dns解析记录工具并定时执行
- 将本地服务端口通过路由器NAT服务进行映射
- 访问{域名}:{映射后的端口} 来访问本地服务
注意:
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

浙公网安备 33010602011771号