kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

lvs fwmark 模式

http://blog.51cto.com/angus717/769577

persistent netfilter marked packet persistence 持久防火墙标记(在pre-routing链上打netfilter marked,而且该标记只在防火墙内部有效通常是0-99)

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@slave ~]# ipvsadm -C
[root@slave ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.8.120 --dport 80 -j MARK --set-mark 80
[root@slave ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.8.120 --dport 443 -j MARK --set-mark 80
[root@slave ~]# ipvsadm -A -f 80 -s rr -p 1000
[root@slave ~]# ipvsadm -a -f 80 -r 172.16.100.7 -g
[root@slave ~]# ipvsadm -a -f 80 -r 172.16.100.6 -g
[root@slave ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  80 rr persistent 1000
  -> 172.16.100.6:0               Route   1      0          0        
  -> 172.16.100.7:0               Route   1      0          0 

nginx https/nginx 配置

curl wget 不验证证书进行https请求

1
2
wget 'https://x.x.x.x/get_ips' --no-check-certificate
curl 'https://x.x.x.x/get_ips' -k

服务端

生成证书和私匙

1
openssl req -newkey rsa:4096 -nodes -keyout test_private.perm -new -x509 -sha512 -days 3650 -subj "/CN=test.com/" -out test.crt

test_private.perm 是私匙, test.crt 是证书

其中CN和nginx.conf中的server_name一样

https://cloud.tencent.com/document/product/400/35244

vim /etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
http {
	server {
		listen  443;
		server_name test.com;
		ssl on;
		# ssl_certificate /root/test.crt;
		# ssl_certificate_key /root/test_private.perm;
		ssl_certificate /root/kk/www.npcable.cn_nginx/www.npcable.cn_bundle.crt;
		ssl_certificate_key /root/kk/www.npcable.cn_nginx/www.npcable.cn.key;
		location / {
			root /var/www/html;
			index index.html;
		}
	}
	...
}

客户端

自建证书得不到信任,所以会提示: curl: (60) Peer’s certificate issuer has been marked as not trusted by the user.

解决方法:

拿服务器证书

1
openssl s_client -showcerts -connect www.baidu.com:443

curl 参数带证书

1
curl -v 'https://test.com/kk' --resolve 'test.com:443:192.168.2.7' --trace-time --cacert /root/test.crt

或者将证书加到信任的证书列表中

1
2
cat /root/test.crt >> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
curl -v 'https://test.com/kk' --resolve 'test.com:443:192.168.2.7' --trace-time

访问的host一定要是证书中CN(commonname), 不然会提示: curl: (51) Unable to communicate securely with peer: requested domain name does not match the server’s certificate.

git tag常用操作

https://blog.csdn.net/albertsh/article/details/63253614

用途

标签可以针对某一时间点的版本做标记,常用于版本发布,这恰恰是我所需要的功能,将本地标签推送到Github上即发布了一个Release版本,下载和查看非常方便。

标签分类

git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象,建议使用附注标签,日后还可以查看标签信息。

创建标签

创建轻量标签

1
$ git tag v0.2.0 -light

解释:创建轻量标签不需要传递参数,直接指定标签名称即可。

创建附注标签

1
$ git tag -a v0.1.0 -m "release 0.1.0 version"

解释:创建附注标签时,参数-a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。

查看标签

列出当前仓库的所有标签

1
$ git tag

列出符合模式的标签

1
$ git tag -l 'v0.1.*'

查看标签版本信息

1
$ git show v0.1.0

切换标签

切换标签与切换分支命令相同

1
$ git checkout [tagname]

解释:切换标签后处于一个空的分支上,即”You are in ‘detached HEAD’ state.”

删除标签

误打或需要修改标签时,需要先将标签删除,再打新标签

1
$ git tag -d v0.1.2

解释:参数-d即delete的缩写,意为删除其后指定的标签。

补打标签

给指定的commit打标签

1
$ git tag -a v0.1.0 49e0cd22f6bd9510fe65084e023d9c4316b446a6

解释:打标签不必要在HEAD之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和,通过git log命令获取。

发布标签

将v0.1.0标签提交到git服务器

1
$ git push origin v0.1.0

解释:通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作。

将本地所有标签一次性提交到git服务器

1
$ git push origin –tags