kk Blog —— 通用基础


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

perf 火焰图分析程序性能

https://www.cnblogs.com/happyliu/p/6142929.html

使用火焰图展示结果

1、Flame Graph项目位于GitHub上:https://github.com/brendangregg/FlameGraph

2、可以用git将其clone下来:git clone https://github.com/brendangregg/FlameGraph.git

我们以perf为例,看一下flamegraph的使用方法:

1、第一步

1
sudo perf record -e cpu-clock -g -p 28591

Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data.

2、第二步

用perf script工具对perf.data进行解析

1
perf script -i perf.data &> perf.unfold

3、第三步

将perf.unfold中的符号进行折叠:

1
./stackcollapse-perf.pl perf.unfold &> perf.folded

4、最后生成svg图:

1
./flamegraph.pl perf.folded > perf.svg

Ubuntu+SS

Shadows启动报错undefined symbol EVP_CIPHER_CTX_cleanup

vim /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py

cleanup替换为reset

测试socks5命令:

curl –socks5 192.168.8.107:8388 http://www.baidu.com/


https://www.codetd.com/article/1418936

1 安装

1
2
sudo apt-get install python-pip
pip install shadowsocks

2 配置

vim config.json

1
2
3
4
5
6
7
8
9
10
{
	"server":"0.0.0.0",
	"port_password": {
		"8388": "your_password1",
		"8389": "your_password2"
	},
	"timeout":600,
	"method":"aes-256-cfb",
	"fast_open": false
}

3. 启动

1
2
3
4
ssserver -c config.json start

ssserver -c config.json -d start
ssserver -c config.json -d stop

4. server

vim /etc/systemd/system/shadowsocks.service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Shadowsocks
After=network.target

[Service]
Type=forking
PIDFile=/run/shadowsocks/server.pid
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /run/shadowsocks
ExecStartPre=/bin/chown root:root /run/shadowsocks
ExecStart=/usr/local/bin/ssserver --pid-file /var/run/shadowsocks/server.pid -c /etc/shadowsocks/config.json -d start
Restart=on-abort
User=root
Group=root
UMask=0027

[Install]
WantedBy=multi-user.target

设置文件权限:

1
chmod 755 /etc/systemd/system/shadowsocks.service

启动服务:

1
2
systemctl start shadowsocks
systemctl enable shadowsocks

5. 客户端

https://github.com/shadowsocks/shadowsocks-qt5/releases

ShadowSocks原理

https://my.oschina.net/moziBlog/blog/3190520

ssh tunnel

1、首先用户和服务器基于 ssh 建立起一条加密的通道

2、用户通过建立起的隧道进行代理,通过 ssh server 向真实的服务发起请求

3、服务通过 ssh server,再通过创建好的隧道返回给用户

ssh 本身就是基于RSA 加密技术,无法获取数据传输的过程中的加密数据内容。但由于ssh本身的特征是明显的,所以通过分析连接的特征能得出是ss。

shadowsocks

shadowsocks将原来ssh创建的 Socks5协议拆开成 server 端和 client 端

1、客户端发出的请求基于Socks5协议跟 ss-local 端进行通讯,返个 ss-local 一般是本机或是代理服务器

2、ss-local 和 ss-server两端通过多种可选的加密方法进行通讯,用常规的 TCP包。

3、ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获得响应原路返回