肇鑫的日常博客

日常

生活到处是陷阱之工商银行信用卡

大约两周前,工商银行客服给我打来电话,推荐我办理他家的信用卡。我想,那就办一张吧。一周后,收到了卡。又过了几天,我收到一条短信,说是工商银行的卡绑定微信会有优惠券。我想到我还有张信用卡没激活呢。那就激活看看吧。

按照提示下载了“工银e生活”App。我其实很不爽这些银行,干嘛银行卡和信用卡非要用不同的App。然后按照步骤激活,结果发现不能激活。看到说明下面有一行字,说是电话或者网上申请的信用卡,首次激活,必须去营业网点。真是坑!

17号到了营业网点,终于激活了。回家!

我这个人,不太习惯带钱包。都是把银行卡和身份证、公交卡、零钱之类的用一个小夹子夹起来就完事了。那天坐的是公交车。上车之后,第一遍刷卡,没响;又刷一遍,还是没响。公交司机说你的卡没钱了。我说还有好几百呢啊。他让我把公交卡拿出来单独刷,这次终于机器响了。大家记住这一幕。我一共刷了3次。这里有大坑!

回到家,打开信用卡App,发现已经产生了3.6元的费用。但是这个信用卡App却看不到明细。这个3.6元到底是怎么产生的呢?

今天,我想我可以去工商银行的网站上看明细。登录官网需要用手机银行刷码。结果刷完码我发现可以直接用手机银行查看信用卡的明细。信用卡推荐的信用卡App不能看明细,但是信用卡没推荐的手机银行可以。太坑了!

IMG_0201

根据说明,这3.6元是两笔1.8元的地铁扣费。当然我那天没坐地铁,坐的是公交车。也就是说,我那天划卡时,虽然机器没响,但是钱扣了。所以我那天付了3份钱,信用卡扣了两次,公交卡又扣了一次。实在是坑!

于是,我打电话给工商银行客服。第一个客服,在知晓了我的情况之后,和我说她没权限给我拒付,需要要转到上一级的客服。第二个客服和我说,他可以帮我拒付。但是银行拒付周期长,而且还需要调查。调查之后如果认为我不符合,不仅不能拒付,而且每一笔还有收取10元的调查费用。问我是否能接受。我当然不能接受了。这也太坑了。

我和他说,首先,我根本不知道你们这个信用卡有这个公交卡的功能。上一个客服还和我说,公交卡需要绑定才能具备这个功能。但是我什么也没绑就自动开通了。其次,你们这个卡扣费了,但是机器不响。机器不响,人家公交司机就不认扣费成功。那我就需要再次划卡。这才是导致这次问题产生的原因。问题的产生根本不在我,而你们还要我付这个调查的费用。我当然不能接受。

银行客服于是承诺要向上反映这个问题。说是3天之内给我答复。我真是挺无语的。不过是接个电话,办了张卡。结果多出这么多麻烦事。真是太坑了!

小米AX3600路由在Mac下安装Clash

之前一直我在Mac上一直使用的是ClashX,然后在手机上使用的是小火箭。这次为了调试新应用的功能,我需要在路由器上安装Clash。

步骤

小米的官方固件是不支持Clash的。但是由于它的官方固件基于OpenWRT,所以只要我们获得了SSH权限,就可以通过远程登录来安装自己需要的软件。获取SSH权限的操作,是通过特定版本的官方固件的漏洞来实现的。而最新的官方固件已经没有这个漏洞了,因此我们的第一步就是检查路由当前安装的固件版本。

  1. 检查固件版本。如果不是1.0.17,那么就需要刷这个版本的固件。(目前最新的官方固件是1.1.19,所以大部分人应该都是需要降级固件。)如果是降级,建议刷新固件时,将路由的设置重置。
    1. 备份当前固件设置。
    2. 记录当前路由上网拨号的用户名和密码,等下会用到。
    3. 手动选择下载好的固件。点开始升级。
  2. 重新进入路由并设置,可以正常上网后。
  3. 获取SSH权限。
  4. 固化SSH权限。
  5. 升级系统到最新固件。
  6. 通过Telnet获取SSH权限。
  7. 安装Clash。
    1. 配置Clash
    2. 获得yaml配置
    3. 设置开机自启。
    4. 访问UI界面。

Ubuntu 20.04下安装Nginx与Trojan,并使用HTTP/2

原以为20.04的安装会比18.04方便很多。但是没想到坑也不少。

安装Nginx

Ubuntu 18.04自带的Nginx本身没有开启ngx_stream_ssl_preread_module。我们安装Nginx官方提供的版本,这个版本开启了所有的可开启扩展。

sudo vi /etc/apt/sources.list

在文件最下面添加并保存

# for latest nginx
deb http://nginx.org/packages/mainline/ubuntu/ focal nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ focal nginx

添加服务器签名,签名在这里nginx_signing.key

wget http://web.archive.org/web/20180805232520/http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key

安装Nginx并开启防火墙端口

因为防火墙默认是关闭的,所以ufw的那步可以不做。

sudo apt update
sudo apt install nginx
sudo ufw allow 80
sudo ufw allow 443
sudo systemctl start nginx
sudo systemctl enable nginx

你现在可以打开浏览器,然后输入vps的ip地址,如果看到了nginx的欢迎界面,就代表nginx配置成功了。

配置Nginx多站点

单独安装的nginx,只包含一个最基本的配置,多站点的文件夹默认都没有配置。我们需要手动建立文件夹。

mkdir -p /etc/nginx/sites-available
mkdir -p /etc/nginx/sites-enabled

然后编辑nginx.conf文件,将后者加入其中

vi /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;,之后插入一行,粘贴include /etc/nginx/sites-enabled/*;

保存并退出。

假设你有一个网站叫example.com,网页位置在/var/www/html/example.com/html。新建一个配置文件。

sudo vi /etc/nginx/sites-available/example.com

内容如下

server {
	listen 80;
	listen [::]:80;

	server_name example.com www.example.com;

	root /var/www/html/example.com/html;
	index index.html;

	location / {
		try_files $uri $uri/ =404;
	}
}

我们不用添加443端口,因为等下添加证书的时候,Certbot会帮我们自动生成新的配置文件。

将网站配置生效

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
sudo systemctl reload nginx

参考上面的步骤,添加你所有的站点。之后,再额外添加一个站点,用于Trojan的识别。

最后添加的站点,一定要是一个不需要用的二级域名,而不要使用一级域名。因为我发现Nginx的预读有bug。如果你使用了一级域名,那么它的二级域名也都会匹配。这将导致错误。
一级域名指的是example.com这种,二级指的是mail.example.com这种。

这里我们假设额外配置一个叫tro.example.com的二级域名站点。

为Nginx添加SSL证书

通过浏览器访问网站https://certbot.eff.org,选择Nginx和Ubuntu 20.04,安照网站的提示安装certbot。

sudo apt update
sudo apt install snapd
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

申请证书

sudo certbot --nginx

按照提示进行操作。完成之后,你再通过浏览器访问网站,你会发现已经是https的了。

查看证书

cd /etc/letsencrypt/live/
ls

记住证书所在的文件夹名称,假设是“example.com”。

安装Trojan

虽然20.04自带了trojan,但是经过我的测试,20.04自带的trojan无法与nginx共同运行。trojan无法正常启动。所以,我们还是通过老办法进行安装。
如果你尝试了自带的trojan。自带的安装之后,配置文件在/etc/trojan。而不是/usr/local/etc/trojan。

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"

修改Trojan配置

sudo vi /usr/local/etc/trojan/config.json

找到"local_port",将443,改成4433或者你希望的端口。
找到"password",修改为你想要设置的密码。
找到"ssl",将"cert"设置为“/etc/letsencrypt/live/example.com/fullchain.pem"。将"key"设置为"/etc/letsencrypt/live/example.com/privkey.pem"。

保存并退出。运行Trojan。设置为开机启动。

sudo systemctl start trojan
sudo systemctl enable trojan

检查trojan是否正确启动

sudo systemctl reload trojan

如果命令不返回任何消息。证明trojan正常启动了。如果提示没有在运行的trojan,无法重载,就证明trojan没有启动。

配置Trojan+Nginx共存

sudo vi /etc/nginx/nginx.conf

在events和http两段之间,插入

stream {
    map $ssl_preread_server_name $name {
        tro.example.com trojan;
        default nginx;
    }
    upstream trojan {
        server 127.0.0.1:4433;
    }
    upstream nginx {
        server 127.0.0.1:4443;
    }
    server {
        listen 443;
        listen [::]:443;
        proxy_pass $name;
        ssl_preread on;
    }
}

保存,修改之前设置的所有网站的设置。打开/etc/nginx/sites-enable/中所有的网站的配置,将所有的443端口,改成4443端口,然后保存。

sudo systemctl reload nginx

在好多支持Trojan的客户端中,域名是可选的。但是由于我们需要使用域名来进行跳转,所以在设置客户端时,域名是必填的,必须填写为tro.example.com
Module ngx_stream_ssl_preread_module

开启HTTP/2

进入/etc/nginx/sites-enabled/目录,修改其中的每个文件。

cd /etc/nginx/sites-enabled/
sudo vi example.com

将其中的

listen [::]:4443 ssl; # managed by Certbot
listen 4443 ssl; # managed by Certbot

改为

listen [::]:4443 ssl http2; # managed by Certbot
listen 4443 ssl http2; # managed by Certbot

找到include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot,注释掉,并在下面添加新行。

#    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

保存并关闭。重新加载nginx。

sudo systemctl reload nginx

测试HTTP/2已经生效

退出SSH与服务器的连接。在终端输入

curl -I https://example.com

输出结果如果有“HTTP/2 200”,就代表HTTP/2设置成功了。

其它