GORM使用Preload加载含有复合主键表的空关系报错的问题
天锦 发表于
某的代码片段
分类,标签:
07
03月
2022
0
两个结构体定义两张表,一个Device表存储设备信息,一个Tag表存储设备的标签,一个设备可用打多个标签,多个设备也可以使用一个相同的标签,故使用了many2many关系。两个结构体如下:type Device struct { ID uint `gorm:"primarykey"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt&...
联通光猫改模拟电话PTSN(FXS口)为SIP协议的VoIP的尝试
20
11月
2021
因为想做一个智能家居的外呼告警系统,让家给自己的手机打电话通知信息,就去联通办了一个固话业务,把这个固话线路接入到自己的系统,实现对外拨打电话的功能。目前的联通家庭固话一般都是从光猫上面的RJ11口上接出来了个普通的模拟电话,如果要接入我的智能家居系统,就要再专门去买一个大几百的语音网关,把这个模拟的PTSN线路转成网络协议才能接入到系统中。想着PON上跑的都是以太网,连IPTV都是以太网,这个电话应该也是什么网络协议转接出来的模拟口再下挂模拟电话,何不把这个协议的账户信息揪出来,直接通过以太网对接到自己的智能家居服务器上,要想知道这个电话是怎么从光猫上转接出来的,摸进光猫去看配置是必然的了。于是便有了本次的折腾经历。HG6543C烽火的HG6543C网上搜索到的方法是使用路由器背面的user账号登录 http://192.168.1.1 ,再打开 http...
Go语言(GIN)搭建DDNS服务器
天锦 发表于
码农也得有格调
分类,标签:
11
10月
2021
最近由于异地组网的事情,节点都是动态的IP,在使用阿里云的API做DDNS时,由于阿里云的限制,最小的TTL也只能设置到600,IP更新一次就要折腾至少10分钟,期间就会造成长时间的断联,而且我内部的Kubernetes等系统又要使用基于nsupdate(RFC2136中的动态更新功能)来更新记录,所以自建一个标准的基于RFC2136定义的DDNS系统迫在眉睫!此外还要提供一个HTTP接口用以路由器设备使用curl来更新IP。总体架构首先使用bind服务作为DNS服务器,配置成允许使用nsupdate工具动态更新,完成兼容RFC2136协议的DDNS系统,然后再使用web语言来实现这个http接口。再网上搜集资料经常看到的都是基于php的,但是如果使用php的话就要使用exec或者system这种高风险的函数来调用nsupdate,一般为了安全起见,管理员通常是将这些函数都是禁用掉的...
[后续] OpenWRT系统中ocserv不支持使用Radius指定客户端IP的解决方法
天锦 发表于
码农也得有格调
分类,标签:
02
10月
2021
在上次组网完成之后,OpenWRT系统下ocserv不支持Radius认证的问题遗留了下来,后来也一直挂在心上,在一次看OpenWRT软件包源码的时候发现了端倪,问题很简单,OpenWRT为了尽量减小软件包的体积,把不常用的功能都没有进行编译,也就是ocserv的Makefile中默认的radius支持是没有启用的:# ocserv avanced configurationmenu "Configuration"depends on PACKAGE_ocservconfig OCSERV_PAMbool "enable PAM"default nconfig OCSERV_SECCOMPbool &qu...
OSPF动态路由协议错误排查
天锦 发表于
码农也得有格调
分类,标签:
28
09月
2021
最近因为异地组网的事情没少折腾OSPF这个IGP内部路由协议,遇到了一些问题,在这儿记录以下。两端没有任何邻居信息用doshowipospfinterface命令看一下接口有没有up,接口有没有enableOSPF协议,没有enable的话查看你的network声明,确认有没有正确声明网络,写错IP地址这种错误很虽然很低级但很常见也最容易被忽略!检查防火墙,看有没有被防火墙拦截掉GRE的数据包。一端卡在Init,另一端无信息同样,检查防火墙和network声明。对于OpenConnect的链路,目前我也不知道啥情况。卡在Exstart检查接口的MTU是否正确,两端MTU是否相同。当两端MTU值不同时,OSPF协议默认就不进行下一步的路由信息交换了,也就卡在了Exstart中。不合适的MTU会造成网络的效率低下,虽然可以使用mtu-ignore忽略这个问题,强制进行路由交换,但是不...
在OpenWrt上部署OSPF进行异地组网的动态路由生成
天锦 发表于
码农也得有格调
分类,标签:
28
09月
2021
前言异地组网,各站点下都有不止一个的IP段,规模越来越大,遂即尝试从静态路由迁移到OSPF协议上。使用RouterOS模拟OSPF组网时,鼠标咔嗒咔哒点两下就组网成功了,奈何我的设备都是OpenWRT的系统,实现起来可没模拟那么简单,或者说没有在OSPF上那么简单。可以用坎坷来形容了。全网搜索OpenWRT跑OSPF协议的资料,只有寥寥几篇如蜻蜓点水一般的文章,获得到了一个有用信息,那就是有一个软件叫Quagga,它是一个路由软件套装包,包含了vtysh为用户提供配置操作的接口,zebra进程与内核进行通信,实现路由条目在内核中的添加和修改,以及ospfd、bgpd等多种路由协议的守护进程,完成实际的路由协议的学习和信息交换。quagga通过这种模块化的方式实现了多种路由协议的集成。所以,那还能咋的,安呗,除了它没别的了。部署OSPF路由协议[root@OpenWrt-A ~]#...
ocserv指定分配给客户端的IP地址与反向添加路由
天锦 发表于
码农也得有格调
分类,标签:
OpenWRTVPNOpenConnectOcserv
27
09月
2021
遇到的问题有一个异地组网的需求,也就是说需要搭建VPN进行异地组网,常见的PPTP和L2TP由于某些特殊原因,不得不抛弃不用,重新选择新的协议,思科的AnyConnect基于SSL加密,可以自定义通信的端口号,是个不错的选择,部署了兼容的开源方案ocserv作为服务器,用了一段时间,感觉也很稳定。但是ocserv默认的plan密码只能设置用户名和密码,客户端的IP地址池在ocserv.conf中定义,不能像L2TP和PPTP这些基于PPP拨号获取IP的协议一样指定客户端获取的IP地址,客户端获取的IP地址是随机的,这样一来对于终端用户远程访问很方便,但是对于多站异地组网就很麻烦了,给反向添加路由条目带来了很大的麻烦。假定有两个站点A(10.1.1.1/24)和B(10.2.2.1/24),A作为VPN服务器,VPN接口网络为192.168.240.1/24,当使用L2TP等基于PPP拨号的...
AIX系统安装yum包管理器,使用bash替换ksh
天锦 发表于
码农也得有格调
分类,标签:
21
04月
2021
安装yum虽然AIX系统支持安装rpm格式的软件包,比使用smit安装软件方便一些,软件库也多一些,但是当你安装一个包依赖多个包时,挨个下载依赖包,挨个安装就过于麻烦。最好还是部署一个yum包管理器来管理软件安装方便一些。可以到https://www.ibm.com/support/pages/aix-toolbox-linux-applications-downloads-alpha 下载yum的rpm包和其相关依赖来安装yum,不错的是IBM提供了一个脚本实现了一键安装yum。该脚本下载地址http://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/ezinstall/ppc/yum.sh ,下载之后可以通过ftp上传到aix系统中,添加执行权限后执行安装就可以了。#chmod +x yum....
从零开始接触IBM POWER小型机
天锦 发表于
女票们的新建与保养
分类,标签:
31
03月
2021
有幸能够在毕业前夕通过协会购得一台IBMPower720小型机,想着小型机挺专业也挺稀见的,毕竟在我们学校目前还没有小型机,学校的机房也都是X86的服务器,就在咸鱼上淘了一台IBM的小型机。IBM的小型机与普通的X86服务器有着很大的不同,也有很多不同于普通X86的名称如ASMI、HMC、LPAR等,网上资料很杂,尤其是这些个之间的关系,没见过多少详细介绍的,这次就做个总结,从简单到难,一点一点了解这个系列的小型机。ASM和HMCASM是IBM的高级系统管理接口,它的界面可以通过串口Console或者网页的形式访问到,这个ASM可以类比成iDRAC或者iLO,他们的功能大致是相似的,运行在服务器内部的固定电路中,通过固件程序对服务器进行基本管理的部件。IBMHMC(HardwareManagementConsole)则是独立于Power服务器的外置系统,将Power服务器的HMC...
WiFiDog的深入配置,使用HTTPS访问认证服务器
天锦 发表于
码农也得有格调
分类,标签:
25
03月
2021
前面讲了WiFiDog的简单配置,也就是AuthServer这几个关键配置,在AuthServer配置中,默认情况下是使用HTTP协议与认证服务器通信,如今HTTPS协议逐渐成为各网站的主流,基本上都做了301重定向将HTTP引导到HTTPS上,我们的认证是直接在已有的网站中添加的模块,直接在网站中集成了针对WiFiDog的认证,如果我们实行全站SSL的话,WiFiDog的API接口会被重定向到HTTPS上,而默认的WiFiDog不支持HTTPS就造成了无法与认证服务器通信,我临时在重定向中做了规则,对UserAgent为WiFiDog的访问不做重定向,其他所有的来自80端口的请求全部做重定向,相当于给WiFiDog留了一个HTTP,临时解决的问题,但这终究不是办法。WiFiDog不支持HTTPS,WifiDog-TLS支持!在配置WiFiDog的配置文件时发现了AuthServer中有一...