From 25ecc8a602d040745d3e366f51d4dd5a849fbacc Mon Sep 17 00:00:00 2001 From: mengyxu Date: Fri, 13 May 2022 11:09:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{android studio.md => 1.android studio.md} | 0 3.C端/9.android开发问题记录.md | 21 ++ 5.linux环境/11.RustDest.md | 16 ++ 5.linux环境/12.mongodb.md | 81 +++++++ 5.linux环境/13.trojan-go.md | 48 ++++ 5.linux环境/14.shadowsocks-r.md | 205 ++++++++++++++++++ 5.linux环境/3.nginx.md | 11 +- 4.shell/4.mysql.md => 6.数据库/1.mysql.md | 0 8 files changed, 376 insertions(+), 6 deletions(-) rename 3.C端/{android studio.md => 1.android studio.md} (100%) create mode 100644 3.C端/9.android开发问题记录.md create mode 100644 5.linux环境/11.RustDest.md create mode 100644 5.linux环境/12.mongodb.md create mode 100644 5.linux环境/13.trojan-go.md create mode 100644 5.linux环境/14.shadowsocks-r.md rename 4.shell/4.mysql.md => 6.数据库/1.mysql.md (100%) diff --git a/3.C端/android studio.md b/3.C端/1.android studio.md similarity index 100% rename from 3.C端/android studio.md rename to 3.C端/1.android studio.md diff --git a/3.C端/9.android开发问题记录.md b/3.C端/9.android开发问题记录.md new file mode 100644 index 0000000..d17420a --- /dev/null +++ b/3.C端/9.android开发问题记录.md @@ -0,0 +1,21 @@ +# 构建失败 + + + +# APP崩溃 + +## Failed resolution of: Landroidx/databinding/DataBinderMapperImpl + +当依赖的第三方库添加了`dataBinding`支持,所有子lib模块module和主app的module都需要添加`dataBinding`支持 + +在`build.gradle`文件中添加 + +```properties +android { + .... + dataBinding { + enabled = true + } +} +``` + diff --git a/5.linux环境/11.RustDest.md b/5.linux环境/11.RustDest.md new file mode 100644 index 0000000..db1e52d --- /dev/null +++ b/5.linux环境/11.RustDest.md @@ -0,0 +1,16 @@ +# 服务端 + +## 使用docker安装 + +```shell +sudo docker image pull rustdesk/rustdesk-server +sudo docker run --name hbbs -p 21114:21114 -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v /home/rustDesk:/root -itd --rm rustdesk/rustdesk-server hbbs -r hbbr.xumy.vip -m demo + +docker run --name hbbr -p 21117:21117 -p 21119:21119 -v /home/rustDesk:/root -itd --rm rustdesk/rustdesk-server hbbr -m demo + +``` + +```tex +默认情况下,hbbs 监听21114(tcp), 21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)。务必在防火墙开启这几个端口, 请注意21116同时要开启TCP和UDP。其中21114是网页控制台+API,21115是hbbs用作NAT类型测试,21116/UDP是hbbs用作ID注册与心跳服务,21116/TCP是hbbs用作TCP打洞与连接服务,21117是hbbr用作中继服务, 21118和21119是为了支持网页客户端。如果您不需要网页控制台+API(21114)或者网页客户端(21118,21119)支持,对应端口可以不开。 +``` + diff --git a/5.linux环境/12.mongodb.md b/5.linux环境/12.mongodb.md new file mode 100644 index 0000000..2c68dfa --- /dev/null +++ b/5.linux环境/12.mongodb.md @@ -0,0 +1,81 @@ +# 服务端 + +## 使用docker安装 + +- 查找下载镜像 + + ```shell + #查询mongo镜像 + docker search mongo + #下载最新版本镜像 + docker pull mongo:latest + ``` + +- 运行容器 + + ```shell + docker run -itd --name mongo -p 27017:27017 mongo --auth + ``` + + - **-p 27017:27017** :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。 + - **--auth**:需要密码才能访问容器服务。 + +- 添加用户和设置密码 + + ```shell + docker exec -it mongo mongo admin + #创建一个名为 admin,密码为 123456 的用户。 + > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); + # 尝试使用上面创建的用户信息进行连接。 + > db.auth('admin', '123456') + ``` + + + +## 官网下载文件方式 + +- [官方下载地址](https://www.mongodb.com/download-center#community) + + 选择**On-premises MongoDB locally -> MongoDB Community Server ** + + 右边窗口选择版本与系统,类型为tgz,点击 **Copy Link** + +- 下载安装包 + + ```shell + wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.7.tgz + ``` + +- 安装与配置 + + ```shell + tar -zxvf mongodb-linux-x86_64-rhel70-5.0.7.tgz + mv mongodb-linux-x86_64-rhel70-5.0.7 mongo5.0.7 + ``` + +- 配置 + + 配置环境变量 + + ```tex + export MONGO_HOME=/home/work/mengyxu/mongo5.0.7 + export PATH=$MONGO_HOME/bin:$PATH + ``` + + 创建数据和日志目录,默认情况下 + + - 数据存储目录:/var/lib/mongodb + - 日志文件目录:/var/log/mongodb + + ```shell + mkdir /home/work/mengyxu/mongo5.0.7/data + mkdir /home/work/mengyxu/mongo5.0.7/log + ``` + +- 启动 + + ```shell + mongod --dbpath /home/work/mengyxu/mongo5.0.7/data --logpath /home/work/mengyxu/mongo5.0.7/log/mongod.log --fork + ``` + + diff --git a/5.linux环境/13.trojan-go.md b/5.linux环境/13.trojan-go.md new file mode 100644 index 0000000..d2206e0 --- /dev/null +++ b/5.linux环境/13.trojan-go.md @@ -0,0 +1,48 @@ +# 服务端 + +## 使用docker安装 + +- 下载镜像 + +```shell +docker pull teddysun/trojan-go + +sudo docker run --name hbbs -p 21114:21114 -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v /home/rustDesk:/root -itd --rm rustdesk/rustdesk-server hbbs -r hbbr.xumy.vip -m demo + +docker run --name hbbr -p 21117:21117 -p 21119:21119 -v /home/rustDesk:/root -itd --rm rustdesk/rustdesk-server hbbr -m demo + +``` + +- 添加配置 + + ```shell + mkdir /home/trojan-go + vim /home/trojan-go/config.json + ``` + + ```tex + { + "run_type": "server", + "local_addr": "172.17.0.1", + "local_port": 443, + "remote_addr": "172.17.0.1", + "remote_port": 80, + "password": [ + "iaminlove.20." + ], + "ssl": { + "cert": "/etc/trojan-go/go.xumy.vip_bundle.crt", + "key": "/etc/trojan-go/go.xumy.vip.key", + "sni": "go.xumy.vip" + } + } + ``` + + + +- 创建并运行容器 + +```tex +docker run -itd --name trojan-go --restart=always --net host -v /home/trojan-go:/etc/trojan-go teddysun/trojan-go +``` + diff --git a/5.linux环境/14.shadowsocks-r.md b/5.linux环境/14.shadowsocks-r.md new file mode 100644 index 0000000..be98add --- /dev/null +++ b/5.linux环境/14.shadowsocks-r.md @@ -0,0 +1,205 @@ +# 服务端 + +## 开启系统自带BBR加速 + +- 开启BBR + + ```shell + echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf + echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf + ``` + +- 生效更改 + + ```shell + sysctl -p + ``` + +- 查询是否开启 + + ```shell + sysctl net.ipv4.tcp_available_congestion_control + ``` + + 结果带有bbr则开启成功 + +## 域名准备 + +- 注册域名 +- 配置域名DNS解析 +- 申请SSL证书 + +## 配置nginx伪装服务器 + +- 安装nginx + +- 配置伪装服务 + + 普通英文静态页面即可,建议开启SSL + +## 使用docker安装SSR + +- 下载镜像 + + ```shell + docker pull teddysun/shadowsocks-r + ``` + +- 创建配置文件 + + ```shell + mkdir /home/shadowsocks + cd /home/shadowsocks + vim config.json + ``` + + + + ```json + { + "server":"0.0.0.0", + "server_ipv6":"::", + "server_port":443, + "local_address":"127.0.0.1", + "local_port":1080, + "password":"your password", + "timeout":120, + #加密方式 + "method":"aes-256-cfb", + #插件协议 + "protocol":"origin", + "protocol_param":"", + #混淆算法 + "obfs":"tls1.2_ticket_auth", + "obfs_param":"", + #配置未通过验证请求转发到伪装服务 + "redirect":["*:443#127.0.0.1:8443"], + "dns_ipv6":false, + "fast_open":true, + "workers":3 + } + ``` + +- 运行容器 + + ```shell + docker run -d --net host --name ssr --restart=always -v /home/shadowsocks:/etc/shadowsocks-r teddysun/shadowsocks-r + ``` + + + +# 客户端 + +- [github下载地址(windows)](https://github.com/shadowsocksrr/shadowsocksr-csharp/releases) + + + + + +# 附录 + +## 协议插件-protocol + +此类插件用于定义加密前的协议,通常用于长度混淆及增强安全性和隐蔽性,部分插件能兼容原协议。 + +`origin`:表示使用原始 SS 协议,此配置速度最快效率最高,适用于限制少或审查宽松的环境,否则不建议使用。 + +`verify_deflate`(不推荐):对每一个包都进行 deflate 压缩,数据格式为:包长度(2 字节)|压缩数据流|原数据流 Adler-32,此格式省略了 0x78,0x9C 两字节的头部。另外,对于已压缩过或加密过的数据将难以压缩(可能会增加 1 ~ 20 字节),而对于未加密的 html 文本会有不错的压缩效果。因为压缩及解压缩较占 CPU,不建议较多用户同时使用此混淆插件。此插件**不能兼容原协议**,千万不要添加`_compatible`的后缀。 + +`verify_sha1`(即原版 OTA 协议,已废弃):对每一个包都进行 SHA-1 校验,握手数据包增加 10 字节,其它数据包增加 12 字节。此插件能兼容原协议(需要在服务端配置为`verify_sha1_compatible`)。 + +`auth_sha1`(已废弃):对首个包进行 SHA-1 校验,同时会发送由客户端生成的随机客户端 id(4byte)、连接 id(4byte)、unix 时间戳(4byte),之后的通讯使用 Adler-32 作为效验码。此插件提供了能抵抗一般的重放攻击的认证,默认同一端口最多支持 64 个客户端同时使用,可通过修改此值限制客户端数量,使用此插件的服务器与客户机的 UTC 时间差不能超过 1 小时,通常只需要客户机校对本地时间并正确设置时区就可以了。此插件与原协议握手延迟相同,能兼容原协议(需要在服务端配置为`auth_sha1_compatible`),支持服务端自定义参数,参数为十进制整数,表示最大客户端同时使用数。 + +`auth_sha1_v2`(已废弃):与`auth_sha1`相似,去除时间验证,以避免部分设备由于时间导致无法连接的问题,增长客户端 id 为 8 字节,使用较大的长度混淆。能兼容原协议(需要在服务端配置为`auth_sha1_v2_compatible`),支持服务端自定义参数,参数为十进制整数,表示最大客户端同时使用数。 + +`auth_sha1_v4`(不推荐):与`auth_sha1`对首个包进行 SHA-1 校验,同时会发送由客户端生成的随机客户端 id(4byte)、连接 id(4byte)、 unix 时间戳(4byte),之后的通讯使用 Adler-32 作为效验码,对包长度单独校验,以抵抗抓包重放检测,使用较大的长度混淆,使用此插件的服务器与客户机的 UTC 时间差不能超过 24 小时,即只需要年份日期正确即可。能兼容原协议(需要在服务端配置为`auth_sha1_v4_compatible`),支持服务端自定义参数,参数为十进制整数,表示最大客户端同时使用数。 + +`auth_aes128_md5`或`auth_aes128_sha1`(均推荐):对首个包的认证部分进行使用 Encrypt-then-MAC 模式以真正免疫认证包的 CCA 攻击,预防各种探测和重防攻击,同时此协议支持单端口多用户。使用此插件的服务器与客户机的 UTC 时间差不能超过 24 小时,即只需要年份日期正确即可,针对 UDP 部分也有做简单的校验。此插件**不能兼容原协议**,支持服务端自定义参数,参数为十进制整数,表示最大客户端同时使用数。 + +`auth_chain_a`(推荐):对首个包的认证部分进行使用 Encrypt-then-MAC 模式以真正免疫认证包的 CCA 攻击,预防各种探测和重防攻击,数据流自带 RC4 加密,同时此协议支持单端口多用户,不同用户之间无法解密数据,每次加密密钥均不相同。使用此插件的服务器与客户机的 UTC 时间差不能超过 24 小时,即只需要年份日期正确即可,针对 UDP 部分也有加密及长度混淆。使用此插件建议加密使用 none,此插件**不能兼容原协议**,支持服务端自定义参数,参数为十进制整数,表示最大客户端同时使用数,最小值支持直接设置为 1,此插件能实时响应实际的客户端数量(你的客户端至少有一个连接没有断开才能保证你占用了一个客户端数,否则设置为 1 时其它客户端一连接别的就一定连不上)。 + +`auth_chain_b`(推荐):与`auth_chain_a`几乎一样,但 TCP 部分采用特定模式的数据包分布(模式由密码决定),使得看起来像一个实实在在的协议,使数据包分布分析和熵分析难以发挥作用。如果你感觉当前的模式可能被识别,那么你只要简单的更换密码就解决问题了。此协议为测试版本协议,**不能兼容原协议**。 + +`auth_chain_c`(推荐):与`auth_chain_b`相比,尽力使得数据包长度分布归属到模式中,让包分布看起来更规整。但此版本与`auth_chain_b`相比对带宽有更多的浪费。 + +`auth_chain_d`(推荐):与`auth_chain_c`相比,在一定程度上增加了各种密码生成的模式的最大适用长度,这样就不需要在极端情况下再临时生成随机数,降低大包传输时的计算量,提高下载极限速度。 + +推荐使用`auth_chain_*`系列插件,在以上插件里混淆能力较高,抗检测能力最高,即使多人使用也难以识别封锁。同时如果要发布公开代理,以上auth 插件均可严格限制使用客户端数(要注意的是若为`auth_sha1_v4_compatible`,那么用户只要使用原协议就没有限制效果),而`auth_chain_*`协议的限制最为精确。 + +## 混淆插件-obfs + +此类型的插件用于定义加密后的通信协议,通常用于协议伪装,部分插件能兼容原协议。 + +`plain`:表示不混淆,直接使用协议加密后的结果发送数据包。 + +`http_simple`:并非完全按照 http1.1 标准实现,仅仅做了一个头部的 GET 请求和一个简单的回应,之后依然为原协议流。使用这个混淆后,已在部分地区观察到似乎欺骗了 QoS 的结果。对于这种混淆,它并非为了减少特征,相反的是提供一种强特征,试图欺骗 GFW 的协议检测。要注意的是应用范围变大以后因特征明显有可能会被封锁。此插件可以兼容原协议(需要在服务端配置为`http_simple_compatible`),延迟与原协议几乎无异(在存在QoS的地区甚至可能更快),除了头部数据包外没有冗余数据包,客户端支持自定义参数,参数为 http 请求的 host,例如设置为`cloudfront.com`伪装为云服务器请求,可以使用逗号分隔多个 host 如`a.com,b.net,c.org`,这时会随机使用。注意,错误设置此参数可能导致连接被断开甚至导致 ip 被封锁,如不清楚如何设置那么请留空。服务端也支持自定义参数,意义为客户端仅能填写的参数列表,以逗号分隔。 + +本插件的高级设置(C# 版、python 版及 ssr-libev 版均支持):可以自定义几乎完整的 http header,其中前两行的 GET 和 host 不能修改,可自定义从第三行开始的内容。例如: `baidu.com#User-Agent: abc\nAccept: text/html\nConnection: keep-alive` +这是填于混淆参数的内容,在 # 号前面的是上文所说的 host,后面为自定义 header,所有的换行使用`\n`表示(写于配置文件时也可直接使用`\n`而不必写成`\\n`,换行符亦会转换),若需要使用单独的`\`号,可写为`\\`,最末尾不需要写`\n`,程序会自动加入连续的两个换行。 + +`http_post`:与`http_simple`绝大部分相同,区别是使用 POST 方式发送数据,符合 http 规范,欺骗性更好,但只有 POST 请求这种行为容易被统计分析出异常。此插件可以兼容`http_simple`,同时也可兼容原协议(需要在服务端配置为`http_post_compatible`),参数设置等内容参见`http_simple`,密切注意如果使用自定义 http header,请务必填写 boundary。 + +`random_head`(不推荐):开始通讯前发送一个几乎为随机的数据包(目前末尾 4 字节为 CRC32,会成为特征),之后为原协议流。目标是让首个数据包根本不存在任何有效信息,可以抵抗统计学习机制。此插件可以兼容原协议(需要在服务端配置为`random_head_compatible`),比原协议多一次握手导致连接时间会长一些,除了握手过程之后没有冗余数据包,不支持自定义参数。 + +`tls1.2_ticket_auth`(推荐):模拟 TLS1.2 在客户端有 session ticket 的情况下的握手连接。目前为完整模拟实现,经抓包软件测试完美伪装为 TLS1.2。因为有 ticket 所以没有发送证书等复杂步骤,因而防火墙无法根据证书做判断。同时自带一定的抗重放攻击的能力,以及包长度混淆能力。如遇到重放攻击则会在服务端 log 里搜索到,可以通过`grep "replay attack"`搜索,可以用此插件发现你所在地区线路有没有针对 TLS 的干扰。防火墙对 TLS 比较无能为力,抗封锁能力应该会较其它插件强,但遇到的干扰也可能不少,不过协议本身会检查出任何干扰,遇到干扰便断开连接,避免长时间等待,让客户端或浏览器自行重连。此插件可以兼容原协议(需要在服务端配置为`tls1.2_ticket_auth_compatible`),比原协议多一次握手导致连接时间会长一些,使用 C# 客户端开启自动重连时比其它插件表现更好。客户端**支持自定义参数,参数为 SNI,即发送 host 名称的字段**,此功能与 TOR 的 meek 插件十分相似,例如设置为`cloudfront.net`伪装为云服务器请求,可以使用逗号分隔多个 host 如`a.com,b.net,c.org`,这时会随机使用。注意,错误设置此参数可能导致连接被断开甚至导致 ip 被封锁,如不清楚如何设置那么请留空。推荐自定义参数设置为`cloudflare.com`或`cloudfront.net`,服务端暂不支持自定义参数。 + +## 协议特性 + +假设 method = "aes-256-cfb" +以下所有协议与均 anti CPA + +| name | RTT | encode speed | bandwidth | anti CCA | anti replay attack | anti MITM detect | anti packet length analysis | +| ---------------- | ---- | ------------ | ---------- | -------- | ------------------ | ---------------- | --------------------------- | +| origin | 0 | 100% | 99% | No | No | No | 0 | +| verify_deflate | 0 | 30% | 97% ~ 110% | No | No | No | 6 | +| verify_sha1 (X) | 0 | 85% | 98% / 99% | No | No | No | 0 | +| auth_sha1 (X) | 0 | 95% | 97% | No | Yes | No | 4 | +| auth_sha1_v2 (X) | 0 | 94% | 80% /97% | No | Yes | No | 10 | +| auth_sha1_v4 | 0 | 90% | 85%/ 98% | No | Yes | No | 10 | +| auth_aes128_md5 | 0 | 80% | 70% /98% | Yes | Yes | Yes | 10 | +| auth_aes128_sha1 | 0 | 70% | 70% / 98% | Yes | Yes | Yes | 10 | +| auth_chain_a | 0 | 70% | 75% / 98% | Yes | Yes | Yes | 15 | +| auth_chain_b | 0 | 68% | 70% / 98% | Yes | Yes | Yes | 20 | +| auth_chain_c | 0 | 69% | 70% / 98% | Yes | Yes | Yes | 20 | +| auth_chain_d | 0 | 70% | 70% / 98% | Yes | Yes | Yes | 20 | + +### 说明 + +- 以上为浏览普通网页(非下载非看视频)的平均测试结果,浏览不同的网页会有不同的偏差。 +- encode speed 仅用于提供相对速度的参考,不同环境下代码执行速度不同。 +- verify_deflate 的 bandwidth(有效带宽)上限 110% 仅为估值,若数据经过压缩或加密,那么压缩效果会很差。 +- verify_sha1 的 bandwidth 意为上传平均有效带宽 98%,下载 99%。 +- auth / _aes128 / _md5 的 bandwidth 在浏览普通网页时较低(为了较强的长度混淆,但单个数据包尺寸会保持在 TCP MSS 以内,所以其实对网速影响很小),而看视频或下载时有效数据比率比 auth_sha1 要高,可达 97%,所以不用担心下载时的速度。auth / _chain / _a及auth / _aes128 / _md5 类似。 +- 如果同时使用了其它的混淆插件,会令 bandwidth 的值降低,具体由所使用的混淆插件及所浏览的网页共同决定。 +- 对于抗包长度分析一列,满分为 100,即 0 为完全无效果,5 以下为效果轻微,具体分析方法可参见方校长等人论文。 +- 对于抗包时序分析一列,方校长的论文表示虽然可利用,但利用难度大(也即他们还没能达到实用级),目前对此也不做处理。 + +## 混淆特性 + +| name | RTT | encode speed | bandwidth | anti replay attack | cheat QoS | anti analysis | +| ------------------ | ---- | ------------ | --------- | ------------------ | --------- | ------------- | +| plain | 0 | 100% | 100% | No | 0 | / | +| http_simple | 0 | 20%/100% | 20%/100% | No | 90 | 70 | +| http_post | 0 | 20%/100% | 20%/100% | No | 100 | 70 | +| random_head (X) | 1 | 100% | 85%/100% | No | 0 | 10 | +| tls1.2_ticket_auth | 1 | 98% | 75%/ 95% | Yes | 100 | 90 | + +### 说明 + +- 20% / 100% 表示首包为 20%,其余为 100% 速度(或带宽),其它的 RTT 大于 0 的混淆,前面的表示在浏览普通网页的情况下平均有效利用带宽的估计值,后一个表示去除握手响应以后的值,适用于大文件下载时。 +- RTT 表示此混淆是否会产生附加的延迟,1 个 RTT 表示通讯数据一次来回所需要的时间。 +- RTT 不为 0 且没有 anti replay attack 能力的混淆,不论协议是什么,都存在**被主动探测的风险**,即不建议使用`random_head`。 RTT 为 0 的,只要协议不是 origin,就没有被主动探测的风险。当然由于原协议本身也存在被主动探测的风险,在目前没有观察到主动探测行为的情况下,暂时不需要太担心。 +- cheat QoS 表示欺骗路由器 QoS 的能力,100 表示能完美欺骗,0 表示没有任何作用,50 分左右表示较为严格的路由能识别出来。 +- anti analysis 表示抗协议分析能力,plain 的时候依赖于协议,其它的基于网友反馈而给出的分值。值为 100 表示完美伪装。 + +## 协议于混淆配置建议 + +- 协议:协议用`auth_chain_*`最佳,此时推荐不使用加密(设置为 none),混淆随意。 +- 加密:若协议用`auth_chain_*`,那加密用 none(但不代表密码可以不写或两边不匹配),若协议不是`auth_aes128_md5`或`auth_aes128_sha1`,那么不能使用 rc4 加密(可用 rc4-md5)。这时加密可以在 rc4-md5、salsa20、chacha20-ietf 三个里面选择(rc4-md5可换为 aes 系列,salsa20 可换为 chacha20 或 bf-cfb),如果使用 SSR 还可特别选择 rc4-md5-6。 +- 混淆:如果 QoS 在你的地区明显,混淆建议在`http_simple`与`tls1.2_ticket_auth`中选择,具体选择可以通过自己的试验得出。如果选择混淆后反而变慢,那么混淆请选择`plain`。如果你不在乎 QoS,但担心你的个人 vps 能不能持久使用,那么混淆选择`plain`或`tls1.2_ticket_auth`,协议选择`auth_chain_*`或`auth_aes128_*`。 +- 如果你用于玩游戏,或对连接延迟有要求的情况下,建议不要使用`tls1.2_ticket_auth`混淆,用其它混淆或`plain`。 +- 服务端里,`http_simple`与`http_post`是相互兼容的,没有使用上的区别。 +- 如果你在公司,或学校,或某些环境下,发现原版 SS 协议不可用,建议你启用`http_simple`、`http_post`或`tls1.2_ticket_auth`混淆,同时端口相应使用 80 或 443,通常能解决问题。同时能躲避你所在环境下的网络封锁(如禁止访问网盘禁止上传等等)。 +- 如果使用`tls1.2_ticket_auth`混淆或不开启混淆,那么协议最好不要使用`origin`或`verify_sha1`。 +- 如果使用二重代理,一般你只需要考虑越过防火墙的那一段使用混淆或加强协议,除非为了匿名。 +- **混淆不总是有效果**,看各地区策略,有时候不混淆让其看起来像随机数据更好。 \ No newline at end of file diff --git a/5.linux环境/3.nginx.md b/5.linux环境/3.nginx.md index b99a1d5..1b8e790 100644 --- a/5.linux环境/3.nginx.md +++ b/5.linux环境/3.nginx.md @@ -66,20 +66,19 @@ - 创建并运行容器 ```shell - docker run -d --name nginx --restart=always \ - -p 80:80 -p 443:443 \ + docker run -d --name nginx --restart=always --net host \ -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /home/nginx/conf.d:/etc/nginx/conf.d \ -v /home/nginx/log:/var/log/nginx \ -v /home/nginx/data:/home nginx ``` - + 容器配置文件位置:`/etc/nginx/nginx.conf` - + 容器日志目录:`/var/log/nginx` - + 容器数据目录:`/home` - + - 运行与重启 ```shell diff --git a/4.shell/4.mysql.md b/6.数据库/1.mysql.md similarity index 100% rename from 4.shell/4.mysql.md rename to 6.数据库/1.mysql.md