因为自己有几个阿里云的域名,还有一台闲置的笔记本在家。想着在家放着也是浪费,不如拿来改造一下做成一个自己的云服务器来使用。因为国内种种的原因,80 端口默认被禁掉了,为了安全起见我也没有开启 22 端口,而是在路由器上做了一层端口映射,将路由器收到的 xx 端口转发到笔记本的 22 上。
脚本是使用 python 和 aliyun 的 sdk 做成的,通过获取到本机的公网 ip 地址,然后调用阿里云解析的 api 来进行修改。目前实现的有三个:
1.检测本机公网 ip
2.判断解析是否存在
3.判断解析地址是否与当前 ip 一致
因为 ISP 提供的 ip 经常会变,所以使用 crontab 创建一个任务定时执行脚本之后,每次只需要访问自己的域名就能登陆到家里的服务器了
地址Aliddns
1
Famio 2017-08-17 10:50:19 +08:00
感觉你有点绕远路了,现在路由器不都是自带 ddns 服务的么,甚至大多数都是免费的啊。
|
2
hxsf 2017-08-17 10:54:56 +08:00
还差:
1. 判断是不是公网 IP,否则重播 PPPoE 2. 断电重启 |
3
shuizhengqi OP @Famio 好久没看过路由器上的了。。之前用过花生壳的,不能用我自己的域名,然后就没搞了
|
4
shuizhengqi OP @hxsf 里面有个获取 ip 的部分,访问一个外网网址然后获取到自己的公网 ip,断电重启这种可以写在开机启动项里面吧
|
5
hxsf 2017-08-17 11:00:38 +08:00
@shuizhengqi #4 你访问外网地址得到 IP1: 123.123.123.123 ,PPPoE 被分配到 IP2: 10.100.xx.xx 。 这种情况,IP1 是你 nat 出口,IP2 才是你的 IP, 这样没用的。
2. 指的是 笔记本没电关机后, 来电重启。(老电脑我觉得电池应该抗不了多久吧,也不会配备 UPS 吧) |
7
ys0290 2017-08-17 11:01:23 +08:00 via iPhone
这叫 DDNS
|
8
shuizhengqi OP @hxsf 我是打算远程拿来开发方便,没打算当作生产服务器什么的。。没考虑到这个问题
|
9
shuizhengqi OP @hxsf ip 的话,我测试了是能用的,暂时还没遇到你说的那种
|
10
Famio 2017-08-17 11:40:46 +08:00
|
11
bengle 2017-08-17 11:43:13 +08:00
之前用花生壳,现在电信光猫给禁了
|
12
flyingfz 2017-08-17 11:49:27 +08:00
我也用 nodejs 写了个,不过 是 dnspod 的。我是直接读取 路由器的状态页面的 ip 地址,然后更新域名信息。
|
13
mritd 2017-08-17 11:58:04 +08:00
就一个 DDNS。。。还改造笔记本为云服务器。。。这标题真够可以的,看了下小脚本 哈西欧爱那个 二级域名还是死的.... Tomato 笑而不语 https://github.com/mritd/ttsoft-gdddns
|
14
anyele 2017-08-17 12:50:55 +08:00
有公网 IP 就花生壳, 没有公网 IP 就 frp
|
15
Judoon 2017-08-17 13:16:52 +08:00 2
现在路由都带 ddns 的,不能用自己域名也没关系啊,用自己域名 CNAME 一下不就完事了。
电信没封 443,所以直接开个 nginx,路由器上吧 443 映射到笔记本上,腾讯云搞个免费的 DV 证书,也是美滋滋 |
18
fox0001 2017-08-19 07:56:06 +08:00
我的需求跟楼主差不多,我的解决方案:
1 )国外买个 org 域名 2 ) dnspod.cn 注册个账号,用 dnspod 提供的免费域名绑定服务,重点是提供 API,可以实现程序动态绑定(官方有各种语言的示例代码) 3 )树莓派写个 Python 脚本,自动检测当前外网 IP,如果和上一次的结果不一致,则调用 dnspod 的 API (就是个 post 请求)更新域名与 IP 的绑定。我是 1 分钟执行一次,反正电脑很闲 4 ) 80 端口不能访问的问题,可以用 443 端口,即使用 https 协议。申请个免费证书或者自签证书,即可 |