前一阵子有换了台Wifi,D-Link DIR-882,说真的觉的这台又贵又烂@@,
不确定是不是我买到机王,时常崩溃,再来,他所提供的DDNS功能了,
设置好了,似乎没在更新,不是很好用。
重点是,上面的FAQ说明看起来还不是免费的,六个月后就要收费吗?
例如花一次费用,启动他们的更新工具点,
简单说,就是会给你一些不便,你要完整功能,还是要花钱,阿偶就不想花钱在DDNS上。
(注: 还是有一些,据说是真免费的,但我没再多试了,您可自行Goolge。)
於是,让我想到了,我家有一台Synology的NAS,他不也是有提供DDNS的功能吗? 就想来试试。
先来说说我的环境,我家的NAS是拨接Hi-Net PPPOE的一固定IP,
而我的Nas主要运行就是您现在看到的这个网站。
个人用户,没啥预算玩AWS或GCP,用这台Nas自架网站,
个人网站写写文章用,然后运行D-Laravel的docker环境:),
用docker能跑大量服务,用VM只能跑几台吧。
如何用Synaloge NAS跑D-Laravel,您可以参考我这篇chowner的文章。
https://www.ccc.tc/article/d-laravel-chowner
另外,我用Nas装了一台VM,用於创建在线会议系统。
这台VM是在内网透过Wifi Router设置DMZ,进来的,我想让这台浮动IP的VM能有固定的域名。
但问题来了,Synalogy的DDNS看起来是只能用NAS的IP,
他本意是要让我们在任何地方能用域名访问到自己的NAS。
我Nas已是固定IP啦,不需要DDNS服务,但我的VM需要:p。
好家在,设置上完全不难,随便Google一下,不到到一分钟 ,就发现Synalogy NAS设置档放在/etc/ddns.conf,
而且,更新设置档上的IP就能更新DDNS的A日志,所以马上想到,
那我就写只bash定时更新设置档的IP不就搞定了。
/etc/ddns.conf内容如下: (已调整实际内容,下方只是示意)
#If you want to change DDNS Name, remember to change upnpd.c
# , remember to consider updating problem.
[Synology]
hostname=dodoro.myDS.me
passwd=############
net=MANUAL
status=service_ddns_normal
ip=36.229.6.29
service=true
username=myemail@example.corp
enable_heartbeat=yes
provider=Synology
ipv6=2001:b011:380c:1a4a:11:32ff:fe24:99ed
然后,这是我写的简易bash,用於进移动态域名IP更新/etc/ddns.conf的IP。
#!/bin/bash
old_ip=`grep -Eo "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/ddns.conf`
#echo ${ip}
new_ip=`ssh e-course curl -s ip.ccc.tc`
sed -i "s/ip=${old_ip}/ip=${new_ip}/g" /etc/ddns.conf
这支bash,主要运行以下几件事情。一、取得ddns.conf设置档的旧IP位置,old_ip即是目前ddns设置的ip。
二、透过ssh连到我的VM上,运行curl -s ip.ccc.tc,用curl取得我的VM外网IP(透过OpenSSH公钥验证连到VM)。
ip.ccc.tc是我自架用来取得外网ip用的,您应该能用ifconfig.co做到一样的效果。
三、再来用sed命令更新ddns.conf中的IP为最新的位置。就搞定。
最后、放到nas的任务调度每五分钟检测一次。
最后呢,这里再提供一个小技巧,如果自己有域名,我可以设置cname,
我们就能使用自己的域名连到浮动IP的电脑啦,下方,我用host命令,查询e-course.app的位置。
host -t a e-course.app
e-course.app is an alias for dodoro.myds.me.
dodoro.myds.me has address 36.229.6.29
到本文为止,运行起来相当满意,再也不会打域名,结果连不到主机的情况罗。:)
No Comment
Post your comment