分类 工作&技术 下的文章

早上起来没事,让ai写了一个telegram的ai机器人,我的主要诉求其实是要一个简单的封装的包来调用ai。不知道gayhub上有没有类似的,但自己调教的肯定是最符合自己习惯的。github上的开源项目往往都是太大而复杂了。
现在的封装是这样的,我觉得蛮好的,简单直观。

systemPrompts := []string{
    "现在假定你是一个电脑专家,你在回答用户问题。",
        "除了套话和一般性对话外,你不要回答任何其它专业的问题"
}

aiClient := ai.NewAIClient(      //兼容openai,deepseek等。
    "https://api.groq.com/openai/v1/chat/completions",          // API 地址
    "123456",   // API 密钥
    "llama-3.3-70b-versatile",                                  // 模型名称
    4096,                                                       // 最大 Token 数量
    systemPrompts,                                              // 系统提示
)        

response, err := aiClient.AskAI(chatSession, update.Message.Text)   //输入一段文字得到ai回应

以前一直用github copilot,不过我一个月可能只有10天码代码,其它20天在摸鱼,$10虽然不多,但浪费也不好啊。虽然现在copilot出了免费版,不过一共2000次提示,这写一天代码就没了,毕竟一次回车敲下去它就来一大段。
这段时间老是看到deepseek的软文,号称与chatgpt 4o不相上下。水平不知道,但价格确实是屠夫级。试试看吧。

deepseek.jpg

docker默认是通过DOCKER链处理forward等规则,因此,系统的常规(input)链对它限制是无效的,简单说就是docker突破了iptables,docker开放的端口不受iptables的限制。(当然,仅仅是input链,但常规我们也只处理input)

我以前是简单的/etc/docker/daemon.json中禁用docker的iptables自动规则管理来解决问题,不过最近遇到一个情况,因为docker应用需要对访问者ip做dns反向解析,因此,禁用了iptables自动规则后,docker无法访问外网(缺乏相应的转发和nat规则),引起反向解析失败。解析失败没事,但一直要到超时错,就是整整60秒才能响应,这个就无法接受了。 * 以前似乎这么做没问题,就这次不行,而且是多台机器上都一样,不知道是不是docker升级了啥的。

既然不能简单关闭docker的iptables托管,那就只能是在系统的iptables层级上想办法了。
查了资料,docker提供了一个DOCKER-USER链,它是前置于docker的,因此,在它上面打主意就可以了。
下面的例子就是,允许特定ip(1.1.1.1)访问docker上的nginx的80端口,除此之外的所有docker端口的访问均被拒绝。(本机,即input不受影响)

root@xxxxxxxx:~# cat /etc/iptables/rules.v4 
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1039:304535]
:DOCKER-USER DROP [0:0]              #docker-user链,它运行于docker链之前,因此可过滤docker的流量。
#常规的规则(input链),根据情况自己写了。这里的话是开放22的访问。
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
#DOCK-USER链规则开始
-A DOCKER-USER -o eth0 -p tcp -j ACCEPT   #允许docker的向外访问。 eth0需要改成外网网卡的实际名称。
-A DOCKER-USER -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT  #允许已建立的连接继续通信
-A DOCKER-USER -i docker0 -o docker0 -j ACCEPT             #允许各个docker间的通信
-A DOCKER-USER -i br-+ -o br-+ -j ACCEPT        #允许各个docker间的通信

-A DOCKER-USER ! -i docker0 -s 1.1.1.1 -p tcp -m tcp --dport 80 -j ACCEPT   #默认规则为禁止,所以这个是白名单,允许1.1.1.1访问本地的80端口。     
....    对外开放的服务规则一直加在这里就好了

-A DOCKER-USER ! -i docker0 -p tcp -m tcp -j DROP  #禁止除白名单外的所有请求

COMMIT

104节点全墙了啊,蛮好的
我先想想就这样凑合还是弄个直连ip呢。。

root@work:~# ping blog.yessure.de
PING blog.yessure.de (104.21.16.1) 56(84) bytes of data.
^C
blog.yessure.de ping statistics
2 packets transmitted, 0 received, 100% packet loss, time 1020ms
root@work:~# curl https://blog.yessure.de -v
Trying 104.21.112.1:443...
^C
root@work:~#

//后续:已改成了ovh直连。

这一个月基本这blog都在说ovh,毕竟le-b ks-a随便拿哪个出来都可以说是今年的机王。
le-b不提了,下单几个全部砍单,还是手工买的。
ks-a,6号下单的,本来还有戏,结果,19号晚ovh出bug,一下放了几千个单,好了,全砍被注定了。
最终,拿了一只le-1结束(9.99o,e3 1245v2,32g,2*960g),这blog也光荣的由这机器支撑了。
没劲,ovh一生黑了。至少明年黑五之前不再鸟它了。
经验教训就是,技术再强也打不过魔法啊。

12月主题是啥?圣诞啊。。下周就回国,然后上海自驾到重庆,一路玩过去,当然,主要也是要看看两边的老人,都是风烛残年, 有一年没一年的了。不过blog不会写这些了,所以,就是断更。

那1月呢?1月预约了个手术,菊花残,满地伤. 你的笑容已泛黄~~ 等养好伤然后就春节啦。。 所以,基本继续断更,毕竟我不是妹子,我的菊花没人想看。

blog做不好是有原因的。

ovh.jpg