2024-03-20
在校园网里, ip地址是拨号时候分配的, 路由器或者电脑重启后ip就会发生变化; 为了不每次都记录ip地址, 使用ddns将ip和域名绑定, 方便校园网内的设备互相访问
1. 网络环境和目标
网络环境如下图所示, 我们的目标是将域名和路由器的wan口ip进行绑定(即红色框的位置)
2. 解题思路和疑问
电脑上安装ddns-go服务, 使用命令登录并爬取路由器页面中的ip, 再和域名进行绑定
疑问:
- 为什么不用traceroute/tracert?
tracert/traceroute只能获取路由器的lan口地址(192.168.2.1), 不能获取wan口地址(10.170.55.12)
- 为什么不在路由器(openwrt)上直接部署ddns?
虽然我这里使用的路由器是openwrt系统, 但我更希望部署的ddns-go更有可移植性
3. 实现步骤
3.1. 获取路由器wan口ip地址
感谢
red blaze
大佬指导
以openwrt为例, 打开并登录, 找到所需要的ip的页面
通过开发者工具找到返回的数据, 可以找到返回的json文件
直接request会报403, 传入cookies后可以正常获取
1 | import requests |
接着就是自动获取cookie, 退出op登录, 打开开发者工具并保留日志, 登录后找到重定向前的页面, 可以看到表单的提交格式
1 | import requests |
这也就获取了所需要的wan口ip地址
3.2 配置ddns-go
ddns-go网上的教程不少, 顺着填就好
阿里云获取AccessKey ID和AccessKey Secret
ipv4设置
ipv4设置”通过命令获取”, 将上边的代码放到文件里, 写上执行命令
结果
附:不同平台指定dns
对于内网ip, 可能不会把解析记录传播到其他dns服务器上, 所以需要修改dns地址
我是用的阿里云托管域名, 所以dns地址填写阿里的223.5.5.5
和223.6.6.6
安卓/ioswifi设置dns
连每一个wifi就要手动改一下dns,好像没有设置所有wifi固定dns的地方
ubuntu设置dns
如果有路由器也建议直接设置电脑的dns,因为ip改变后不好刷新路由器的缓存,而电脑上刷新比较方便
1 | vim /etc/systemd/resolved.conf |
刷新dns缓存
1 | resolvectl flush-caches |