简介:
最近要给媳妇的企业重新搞一搞信息化,这个也写个系列文章吧。
为什么要写openwrt呢?小公司,搞不起托管、搞不起上云。也不算搞不起,主要是自己手边各种垃圾材料多啊。自己家,公司,父母家,3处家用宽带。
本着垃圾佬的心态,能省则省。其实更多的是模拟大型异地办公需求的一种探索。
OpenWR:
开源免费的一个路由系统,玩的比较多,功能比较多,能刷openwrt的路由器也挺多。价格还实惠。它将是各个节点的接入系统,虽然还有一些更高级的pfSense OPNsense,在初级阶段,我还是会考虑openwrt的。
本例使用设备如下
家里:
型号 Xiaomi Redmi Router AC2100
架构 MediaTek MT7621 ver:1 eco:3
目标平台 ramips/mt7621
固件版本 OpenWrt 23.05.5 r24106-10cc5fcd00
办公室:
型号 Phicomm K2P
架构 MediaTek MT7621 ver:1 eco:3
目标平台 ramips/mt7621
固件版本 OpenWrt 23.05.2 r23630-842932a63d
uHTTPd:
干嘛搞这个呢?openwrt是有web管理的,不用苦哈哈的在命令行窗口干。为了通过internet远程管理检查路由,我们受运营商的限制,80、443是无法访问的。所以需要修改openwrt默认的web服务器uhttpd的端口。用来实现远程互联网管理。
而且我3条宽带,最后申请的这条是怎么投诉都不开IPV4公网地址了。还要为未来考虑,直接ipv6组网了。
安装:
虽然openwrt默认已安装uhttpd,但是它没安装luci-app-uhttpd,也就是没有web控制界面,所以需要安装一下,可以web更新列表,搜索uhttpd,找到luci-app-uhttpd安装,也可以ssh上去 opkg update && opkg install luci-app-uhttpd。
安装完毕以后,可能需要退出登陆,重新登陆才能出现菜单。
添加监听端口
我添加了18080、18443两个ipv6的监听端口。ipv4的前面是0.0.0.0:,ipv6的前面是[::]:
重新启动uhtpd
测试:
找到路由获取的ipv6地址,带上端口号测试一下是否可以访问。
设备--接口,随便复制一个ipv6地址,带协议和端口访问测试。
不好复制,就点一下右上角的刷新变为暂停
我测试的地址是
http://[240e:xxxx:xxxx::1]:18080
https://[240e:xxxx:xxxx::1]:18443
可以正常访问就好了。
DDNS
我说了,三条家用宽带,这是没有固定IP地址的,还得上ddns,你们喜欢用什么我管不了,为了我的个人习惯和需求,我写了一个cloudflare-ddns。
jackadam1981/cloudflare-ddns (github.com)
顺便将用法写在这里。
单文件,shell脚本,支持cloudflare,更灵活。
安装
仅需要一个文件raw.githubusercontent.com/jackadam1981/cloudflare-ddns/refs/heads/main/ddns.sh
我一般复制到/root/cfddns/ddns.sh
token令牌
要跟cloudflare一起用,需要有cloudflare的tokenAPI 令牌 | Cloudflare在这个页面注册一个新的令牌
使用DNS模板
编辑下令牌名称,选择所有区域,继续
创建令牌
这个令牌只显示一次,存入keepass(用了十多年的跨平台云密码管理软件)吧。
脚本加权限
在你存ddns.sh的目录下给这个脚本增加执行权限。
chmod +x ddns.sh
初次执行脚本
直接执行当前目录的ddns.sh
./ddns.sh
执行指定目录的ddns.sh
/root/cfddns/ddns.sh
依赖
虽说是纯shell实现,但是也依赖jq json编解码 curl 网络请求两个包。
如果系统没有这两个包,会提示你安装,并给出安装命令。
配置文件
这个就是重点讲一下的了。
很多动态域名,我并不知道它提交的IP是怎么来的,也不了解过程,这也是我写这个脚本的原因之一。
'{ "settings": { "log_level": "debug,info", "arIp6QueryUrl": "https://6.ipw.cn", "arIp4QueryUrl": "https://4.ipw.cn", "log_header_name": "DDNS" }, "domains": [ { "domain_name": "example1.com", "zone_id": "", "auth_email": "[email protected]", "auth_key": "your_auth_key1", "auth_key_valid": false, "records": [ { "name": "subdomain1", "type": "A", "proxy": false, "local": true, "nic_name": "eth0" }, { "name": "subdomain2", "type": "AAAA", "proxy": true, "local": false, "nic_name": "eth0" } ] }, { "domain_name": "example2.com", "zone_id": "", "auth_email": "[email protected]", "auth_key": "your_auth_key2", "auth_key_valid": false, "records": [ { "name": "subdomain3", "type": "A", "proxy": false, "local": true, "nic_name": "eth1" } ] } ] }'
log_level:可以写debug,可以写info,debug会显示更多的信息给你,info就写简单的信息给你。
arIp6QueryUrl:在线获取ipv6地址的网站
arIp4QueryUrl:在线获取ipv4地址的网站
log_header_name:日志记录头,在选择行读取日志时很有用
domains:域名相关设置,可以有多个域名,示例文件是两个域名。
domain_name:域名的名字,就是你注册的那个名字
zone_id:cloudflare对域名的识别号,不用填,会自动获取并缓存
auth_email:忘记了,应该是不用填的
auth_key:刚才申请的token,或许改成token更好,有空改脚本再说。
auth_key_valid:验证过没有,默认false,脚本自己会检测这个token是否有效可用,如果可用会自动改true
name:子域名,就是你想注册的主机名
type: A 或 AAAA IPV4 或 IPV6
proxy:白嫖的CDN加速,ddos防火墙,开不开随便你了。
local:是否使用本地网卡地址,true使用本地网卡地址,需配套下面的nic_name
nic_name:如果使用本地网卡地址,多网卡时用哪个网卡?写网卡名,一般是 ip addr 显示的网卡名。
这就是我为了自己的灵活使用设计的ddns脚本。
可以在一个主机上管理多个域名,主机名,是否开彩云代理,是否用本地地址,本地用哪个网卡,随意组合。
定时运行
cron定时任务还是web写吧
系统--计划任务
*/10 * * * * /root/cfddns/ddns.sh
每10分钟运行一次。
防火墙
以前都苦巴巴的求爷爷告奶奶,申请个公网IPV4,然后端口转发。
现在IPV6也能用了,几乎不见纯IPV4的路由器了,我们就不做端口转发了。
我们直接用防火墙通信规则,放行指定端口的流量好了。
网络--防火墙--通信规则
我写了个Allow_local,意思是允许本机的流量
允许从wan到本设备 22 18080 18443端口流量的转发。
标签:name,firewall,uhttpd,auth,sh,网卡,wireguard,ddns From: https://www.cnblogs.com/jackadam/p/18460374