企业网络服务搭建(一)OpenWRT uhttpd ddns firewall wireguard

news/2024/10/12 14:14:03

简介:

最近要给媳妇的企业重新搞一搞信息化,这个也写个系列文章吧。

为什么要写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": "your_email@example.com","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": "your_email@example.com","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端口流量的转发。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70652.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Blake3哈希算法的介绍、特点、原理与Blake3.Net的特点

1. Blake3的介绍与特点 哈希函数专为文件完整性验证等应用而设计,加密数字签名的消息认证和数据生成。 Blake3不是为散列密码而设计的,因为它旨在尽可能快地计算散列(对于密码,建议使用慢散列和escrypt、bcrypt、scrypt 或Argon2函数)。 所讨论的散列函数对正在处理的数据…

Ubuntu Server 24 安装 Prometheus

Ubuntu Server 24 安装 Prometheus 安装 docker 如果需要卸载: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done添加 docker 源: sudo apt-get install ca-certificates curl sudo ins…

Nuxt.js 应用中的 ready 事件钩子详解

title: Nuxt.js 应用中的 ready 事件钩子详解 date: 2024/10/12 updated: 2024/10/12 author: cmdragon excerpt: ready 钩子是 Nuxt.js 中一个重要的生命周期事件,它在 Nuxt 实例初始化完成后被调用。当 Nuxt 已经准备好并准备开始处理请求或渲染页面时,这一钩子会被触发。…

Pywebview 5.2 storage_path传递参数参数无效

### 背景pywebview 5.2在我测试数据目录时,发现在启动界面后 webview 目录仍然为空```python def test_storage_dir():wind背景 pywebview 5.2 在我测试数据目录时,发现在启动界面后 webview 目录仍然为空 def test_storage_dir():window = webview.create_window(Storage Di…

E65 树形DP P3237 [HNOI2014] 米特运输

视频链接:E65 树形DP P3237 [HNOI2014] 米特运输_哔哩哔哩_bilibili P3237 [HNOI2014] 米特运输 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)// 树形DP O(n) #include <bits/stdc++.h> #define int long long using namespace std;const int N=500005,mod=1e9+7; …

MathType安装及使用教程

本文介绍了MathType的安装方法及一些使用技巧。MathType安装及使用教程 安装下载压缩包MathType_Crack_7.8.0.0.rar 百度云盘 提取码:81at 解压软件包,得到如下文件右键以管理员方式运行MathType-win-zh-7.8.0.0.exe;选择目标文件夹,可更换其他文件夹;选择中文语言;替换…

windows一些dos命令整理

说明: 1.打开文件方式,输入文件的绝对或者相对路径dos命令启用扩展下 cd chdir 格式:CHDIR [/D] [drive:][path] /d 除了改变驱动器的当前目录之外,还可改变当前驱动器。cd / 或者 cd \根目录 cd .. 上一层目录 切换盘符:如直接 d:或者c: 切换目录:cd 绝对或相对路径 CHD…

windows问题记录1

隐藏启动分区 1、win+R运行命令diskmgmt.msc 2、选择要隐藏的系统盘符,右键——更改驱动器号和路径3、将当前盘的驱动器号删除,删除时会提示两次,删除后电脑将不能访问此盘。不要将c盘取消驱动器号,负责可能系统无法启动。 关闭系统自动播放 需求:挂载cd盘,cd盘内容自动…