admin 发布的文章

这几天看到疯狂的撸gcp就觉得好笑,人家的$300都无限续杯了这么多年了,现在来个$150就如此疯狂,真的是后生可畏。
总体上来说,这种大厂的云对个人而言就是浮云,各种限制死死的,在同价位下,和普通厂商的vps相比基本属于垃圾。 我是在说同价位,你一个月愿意付几十上百万刀,那当然是优质得很的产品和服务。
下面是$30/月的机器,实测是apt都卡得结巴。看看数据吧。这种机器拿来除了扎自己心,真的没意思。当然,低龄化是现在的主流,找妈妈买一个月几刀确实也有压力,能免费当然好,要什么自行车。这个另当别论。

ISP : Google LLC
ASN : AS396982 Google LLC
Host : Google Cloud (europe-west3)
Location : Frankfurt, Hesse (HE)
Country : Germany

DISK IO,这个比HDD还不如。在NVME当道的年代,难以忍受了。

fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/sda1):

Block Size | 4k (IOPS) | 64k (IOPS)
------ | --- ---- | ---- ----
Read | 6.59 MB/s (1.6k) | 101.46 MB/s (1.5k)
Write | 6.60 MB/s (1.6k) | 102.00 MB/s (1.5k)
Total | 13.20 MB/s (3.2k) | 203.46 MB/s (3.1k)

       |                      |                     

Block Size | 512k (IOPS) | 1m (IOPS)
------ | --- ---- | ---- ----
Read | 142.89 MB/s (279) | 141.09 MB/s (137)
Write | 150.49 MB/s (293) | 150.49 MB/s (146)
Total | 293.38 MB/s (572) | 291.59 MB/s (283)

网络带宽不错。 不过按流量计费的,不小心一晚真的一套房可以没有了。

iperf3 Network Speed Tests (IPv4):

ProviderLocation (Link)Send SpeedRecv SpeedPing
ClouviderLondon, UK (10G)1.87 Gbits/sec5.34 Gbits/sec15.4 ms
EraniumAmsterdam, NL (100G)1.94 Gbits/sec15.0 Gbits/sec8.82 ms

GB6,哈哈,是80486么。。。

Geekbench 6 Benchmark Test:

Test | Value

            |                               

Single Core | 886
Multi Core | 870

前面老板叫我看一下我们的一个app的登录有效期是多久,就不由得想到这个。这个app第一版是用的JWT来管理的登录token,所以就一直延续到现在,屎坑吧。
我对J字头的东西一直怀着深深的恶意,这个J和那个J虽然不是一个意思,但也很有渊源。改天我专门来讨论J的事。
网上已经有不少人批判过JWT了,不过大多有点故作高深,意思是对的,但看起来吃力,我用最简单的话来说。
JWT号称的最大最主要的优点就是,token由客户端管理,不需要占用服务器存储资源。 额。。这个系统架构谁设计的?多一个登录token都要拿出来说事,这系统的计算和储存容量是少得有多可怕?真是打算1C1G来做大气计算地震预测和原爆模拟么?事实上,从来没人担心系统压力大(别拿12306什么说事啦,咱们到不了那个层次),我们担心的是没生意没压力,压力来了,加机器提性能,老板这个钱掏得不要太开心。
上面一点先不议,再说它的不占用系统存储资源,是的,JWT本体确实不占用,然而,token就永远不过期?永远不能注销?允许无穷多点登录?不能修改权限等等? 所以啦,必须再建一个吊销表等,就是需要吊销的token放在表里面,这。。。这不就要存储了吗?JWT的无状态优点何在? 大聪明马上就会说,我会用redis啦,redis+jwt,头孢加酒,棒棒哒。 你都redis了,那session它不香吗?至于再复杂化一个JWT出来?
还有啥JWT支持SSO什么的我就不想说了,上面两点都已经涵括它了。
所以,在用户登录一块,它就是一个妥妥的垃圾。 至于帮它洗的一些应用场景,比如两台服务器间的临时对话的认证。。这个,用IP认证它不香吗?至于捧JWT这臭脚么?

等两天要回国探亲了,即将回到墙的怀抱。
出来这么多年了,已经习惯google了,没有还真不行。
以前是直接用漫游流量,一周折合人民币100多块钱,还是有点肉痛的,而且关键是不够用,看看油管一会就没了。
还是机场吧。。。随便在loc找的,双保险,一个月付10多块,一个年付10块,希望能坚挺住。

proxy.jpg

野卡证书很贵,去年是买的digital cert的,好几十刀,已经算便宜的了。
网上也流传alphassl的证书,只要30块钱,不过这个是利用了人家的漏洞,它的正常价格是100多刀。自己玩玩可以,掉证书就掉,不过生产环境的话三思。虽然没有掉的历史,但谁知道呢。。
免费+稳定,这就必然只能R3了。
一、安装certbot。(当然,用acme也可以,只是certbot简单点)
apt install certbot
二、运行:
certbot certonly --manual --agree-tos -d "*.你的域名" -d 你的域名 --email 你的email --preferred-challenges dns --manual-public-ip-logging-ok --server https://acme-v02.api.letsencrypt.org/directory
域名需要同时申请 *.domain.com 和 domain.com ,因为*不包含空。
三、运行时会提示你二次(因为上面输了两个域名):
Please deploy a DNS TXT record under the name:

_acme-challenge.你的域名.

with the following value:

s_vnp6r1TFPaCrO32hFUqCErUeGxEQ9KNbRwyQkNSW4

Press Enter to Continue

在你的dns管理器里面加入dns的txt记录即可。
在上面的例子中,就是加入 名称 _acme-challenge, 类型 TXT,值 s_vnp6r1TFPaCrO32hFUqCErUeGxEQ9KNbRwyQkNSW4
在没加好之前,一定不要敲回车,最好加好了再休息几分钟回车,如果不急的话。因为不排除有些dns不是立即刷新生效的。(dnspod和cloudflare都是立即生效)
一共重复两次。
四、不出意外,下面就是成功的提示:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/你的域名/fullchain.pem
Key is saved at: /etc/letsencrypt/live/你的域名/privkey.pem
把对应的证书设置到nginx或者cdn就可以了。
五、更新需要重新运行上面的过程,certbot renew不能象单域名那样扔crontab使用,因为需要dns认证,不能自动完成。acme可能可以,不过三个月一次,多大件事呢。 这个是wildcard证书,单域名证书当然不需要这么复杂。

折腾了一个晚上,很失败。想象中很简单,就是对 DOCKER-USER 链加上白名单,然后禁止其余即可。然而,它就是不工作,或者全部允许,或者全部不允许,反正不按照预期中的来。
AI就不消说了,我把GPT老娘操了一万次它也改不对,BARD(老名字,现在叫啥忘了),更是差劲。
最后还是只能看GOOGLE,看上去洋人们很认真的讨论了这个问题,并号称找到了解决方案,还有好几种。。然而,在我这里还是失败。
放弃。也不想再深究了,我是实用主义者,不是科学家。
关闭掉DOCKER的iptables,人工维护规则算了: /etc/default/docker加上 DOCKER_OPTS="--iptables=false"。 还别说,就算这个也是坑,文档都说改 /etc/docker/daemon.json这个文件,然而这个文件并不存在。(文档不会和你说,新建一个即可)

完成后的规则,其实就是以前一直用的规则了,和docker无关。列在这里给有需要的人看看吧。

# Generated by iptables-save v1.8.9 (nf_tables) on Wed May  1 01:06:24 2024
*filter
:INPUT DROP [3816:196637]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2700:502529]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT   #SSH,正常应该白名单,我这个玩具机就开着了。
-A INPUT -p tcp -m tcp --dport 81 -j ACCEPT   #这个是NPM的管理端口
-A INPUT -s 173.245.48.0/20 -p tcp -m tcp --dport 80 -j ACCEPT #CF白名单,IP段几十年不变,写死即可。
-A INPUT -s 103.21.244.0/22 -p tcp -m tcp --dport 80 -j ACCEPT #CF使用灵活模式,就是回源HTTP。回源HTTPS没有意义,除了消耗自己的CPU资源。
-A INPUT -s 103.22.200.0/22 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 103.31.4.0/22 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 141.101.64.0/18 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 108.162.192.0/18 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 190.93.240.0/20 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 188.114.96.0/20 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 197.234.240.0/22 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 198.41.128.0/17 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 162.158.0.0/15 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 104.16.0.0/13 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 104.24.0.0/14 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 172.64.0.0/13 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
COMMIT