Centos7挂载硬盘

以root身份登录系统进行以下操作。

一. 查看磁盘信息

注意:在没有分区和格式化数据盘之前,使用 df-h 命令是无法看到数据盘的。

fdisk -l
[root@ecs-CwM ~]# fdisk -l

Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0000425c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200    41943039    19921920   8e  Linux LVM

Disk /dev/vdb: 139.6 GB, 139586437120 bytes, 272629760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-root: 18.2 GB, 18249416704 bytes, 35643392 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

二. 新建分区

fdisk /dev/vdb  //这里的vdb是要挂载的新硬盘
n //添加新分区
p //创建主分区
1 分区号1
按回车 //起始扇区选择默认
也是回车默认 //为了不浪费空间
p //查看创建出来的分区
w //保存
[root@ecs-CwM ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x7adc4797.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-272629759, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-272629759, default 272629759): 
Using default value 272629759
Partition 1 of type Linux and of size 130 GiB is set

查看创建出来的分区

Command (m for help): p

Disk /dev/vdb: 139.6 GB, 139586437120 bytes, 272629760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7adc4797

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048   272629759   136313856   83  Linux

保存并退出fdisk工具命令行

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

三. 格式化分区

可格式为ext4或xfs

注:若选择xfs,需要匹配docker默认overlay2存储驱动,建议使用命令:    mkfs.xfs -n ftype=1 /dev/vdb1

[root@ecs-CwM ~]# mkfs.xfs -n ftype=1 /dev/vdb1
meta-data=/dev/vdb1              isize=512    agcount=4, agsize=8519616 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=34078464, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=16639, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

四. 将新添加硬盘分区挂载到指定文件目录

mkdir /datavol
mount /dev/vdb1 /datavol

五. 编辑配置文件,实现开机自动挂载

vi /etc/fstab

在末尾添加如下:

/dev/vdb1    /datavol    xfs    defaults    1    2

使用vi命令:wq保存退出,查看/etc/fstab配置文件

cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Jun 10 14:18:53 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=8223c1d3-9644-4885-80b9-f24158ea6013 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/vdb1    /datavol    xfs    defaults    1    2

六. 重启之后,验证是否成功

df -T
[root@ecs-CwM ~]# df -T
Filesystem              Type     1K-blocks    Used Available Use% Mounted on
devtmpfs                devtmpfs   4064316       0   4064316   0% /dev
tmpfs                   tmpfs      4077448       0   4077448   0% /dev/shm
tmpfs                   tmpfs      4077448    8696   4068752   1% /run
tmpfs                   tmpfs      4077448       0   4077448   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       17811456 2175180  15636276  13% /
/dev/vda1               xfs        1038336  289548    748788  28% /boot
tmpfs                   tmpfs       815492       0    815492   0% /run/user/0
/dev/vdb1               xfs      136247300   32992 136214308   1% /datavol

七. 跨分区跨文件系统创建软链接目录

mv /var /datavol/
ln -s /datavol/var /var

联通劫持用户请求加入广告代码的解决。

这个问题虽然问的是联通,不过在中国,网页劫持的现象实在是太普遍了,不仅仅是联通等运营商会劫持网页,连一些网络设备和软件也会给你搞劫持。网页劫持会让上网多出很多额外的广告,甚至让你访问不了正确的页面。要如何对付网页劫持?针对所有的网页劫持现象,这就给大家分享一些思路和方法。

https://www.youtube.com/watch?v=Tx7Vwx_YSY4&t=9s

选择可靠的DNS

在“用户点击→网页正常显示”过程中,最容易被下手的莫过是DNS解析这一环节。输入网址后,要访问到相应的IP,需要专门的DNS服务器来进行跳转。如此一来,这个DNS服务器的人品,就很关键了。如果你没有指定专门的DNS服务器,那么就会默认使用运营商提供的DNS服务器来进行解析。运营商本该承担起为整个上网流程提供保障的义务,然而现实是,运营商提供DNS服务器,人品令人担忧。

运营商目前竞争比较激烈,为了进一步推广业务,或者进行额外的创收,一些管理不严的二线运营商或者运营商的分部,就会在DNS解析上动歪脑筋。于是,你常常就能看到运营商会把你给跳转到什么开通上网套餐之类的页面,甚至会出现你输入A购物网但却被跳转到竞争对手B的情况,这些往往就是DNS劫持在作怪。对于这些情况,我们可以手动设置可靠的DNS。目前很多安全厂商或者互联网企业乃至公益组织,都提供了DNS解析服务。例如奇虎360、诺顿、Comodo、百度、阿里、Google等企业,都有提供DNS解析服务,你也可以选择OpenDNS这样的老牌免费DNS服务。这些DNS服务,都可以在网上轻易搜到具体的IP地址,这里就不一一罗列了。当然,并不是说用了这些DNS服务,就一定不会有DNS劫持,万一这些企业人品也不行呢?至于谁靠谱,就得靠你来自个儿筛选了。另外,DNS如果不是运营商所提供的话,速度表现并不一定理想。这里推荐一款名为“DNS jumper”的软件,它能够比较全面得测试DNS的连接速度,并设置DNS。利用DNS jumper,很容易就能够找到适合你网络状况的DNS。

centos7 搭建postfix邮件服务器

一、邮件系统的简单介绍
电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些。
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。
一个最基础的电子邮件系统肯定要能提供发件服务和收件服务,为此需要使用基于SMTP协议的Postfix服务程序提供发件服务功能,并使用基于POP3协议的Dovecot服务程序提供收件服务功能。这样一来,用户就可以使用Outlook Express或Foxmail等客户端服务程序正常收发邮件了。

二、准备工作

系统:CentOS 7
软件:postfix,dovecot
域名:拥有自己的域名

三、搭建准备

  1. 域名解析配置

  1. MX记录添加

  1. 开放端口

firewalld 防火墙

firewall-cmd --add-port=25/tcp --permanent
firewall-cmd –-add-port=110/tcp --permanent
firewall-cmd --reload

iptables 防火墙

iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
service iptables save
systemctl restart iptables
  1. 修改主机名
# 语法
hostnamectl  set-hostname   mail.域名

# 例:
hostnamectl  set-hostname   mail.abc.com

四、邮箱软件安装配置

安装并配置postfix

  1. 软件说明

postfix是提供发件服务的(注意:修改配置文件需备份,以下步骤未包含备份。)
postfix服务程序主配置文件中的重要参数。

参数 作用
myhostname 邮局系统的主机名
mydomain 邮局系统的域名
myorigin 从本机发出邮件的域名名称
inet_interfaces 监听的网卡接口
mydestination 可接收邮件的主机名或域名
mynetworks 设置可转发哪些主机的邮件
relay_domains 设置可转发哪些网域的邮件
  1. 安装postfix
yum install postfix
  1. 配置
vim /etc/postfix/main.cf

# 修改内容:

# 75行: 取消注释,设置hostname 
myhostname = mail.abc.com 
# 83行: 取消注释,设置域名 
mydomain = abc.com 
# 99行: 取消注释 
myorigin = $mydomain 
# 116行: 默认是localhost,我们需要修改成all
inet_interfaces = all 
# 119行: 推荐ipv4,如果支持ipv6,则可以为all 
inet_protocols = ipv4 
# 164行: 添加 
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 
# 264行: 取消注释,指定内网和本地的IP地址范围 
mynetworks = 127.0.0.0/8
# 419行: 取消注释,邮件保存目录
 home_mailbox = Maildir/ 
# 571行: 添加 
smtpd_banner = $myhostname ESMTP 
# 添加到最后 
# 规定邮件最大尺寸为10M 
message_size_limit = 10485760 
# 规定收件箱最大容量为1G 
mailbox_size_limit = 1073741824 
# SMTP认证 
smtpd_sasl_type = dovecot 
smtpd_sasl_path = private/auth 
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous 
smtpd_sasl_local_domain = $myhostname 
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
  1. 开启postfix服务并添加到系统自启
systemctl  restart  postfix
systemctl  enable  postfix

安装并配置dovecot

  1. 安装dovecot
yum install dovecot
  1. 配置

编辑文件dovecot.conf

vim /etc/dovecot/dovecot.conf 

# 更改内容:

# 26行: 如果不使用IPv6,请修改为* 
listen = *
#在主配置文件中的第48行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,则不用修改本参数
login_trusted_networks = 192.168.10.0/24更改内容

编辑文件10-auth.conf

vim /etc/dovecot/conf.d/10-auth.conf 

# 更改内容:

# 9行: 取消注释并修改 disable_plaintext_auth = no 
# 97行: 添加 auth_mechanisms = plain login

编辑文件10-mail.conf

vim /etc/dovecot/conf.d/10-mail.conf

# 更改内容:

# 30行: 取消注释并添加 mail_location = maildir:~/Maildir

编辑文件10-master.conf

vim /etc/dovecot/conf.d/10-master.conf

# 更改内容:

# 88-90行: 取消注释并添加 # Postfix smtp验证 
unix_listener /var/spool/postfix/private/auth { 
mode = 0666 
user = postfix
group = postfix
}

注意:如果我们没有使用ssl的话需要进行下面的操作。使用了则不需要。

编辑文件10-ssl.conf

vim /etc/dovecot/conf.d/10-ssl.conf 

# 更改内容:

# 8行: 将ssl的值修改为 ssl = no
  1. 开启dovecot服务并添加到系统自启
systemctl restart dovecot
systemctl enable dovecot

五、收发邮件测试

 

  1. 开启dovecot服务并添加到系统自启
useradd admin
passwd 12345
  1. 使用FOXMAIL登陆


1中我们需要选择我们之前开放端口对应的服务器类型。

2中 我们只需要填入我们的用户名,例如admin,root

3中 我们收件和发件都填入我们的mail.域名。例 mail.abc.com

4 中 我们如果使用了ssl的话就需要勾选,如果没有使用的话就不需要勾选

 

注意事项
我们邮件服务器在设定mynetworks 这个值的时候,一行不要设置all,因为会有很多服务器会将你的服务器作为中转邮件服务器,最终导致的你的邮件服务器发送的邮件被qq,163,gamil,这些邮件服务商标记为垃圾邮件。

当某天我们检查我们的mail日志(/var/log/maillog)时发现很多邮件发送,而且邮件不是我们自己产生的话,那么我们的邮件服务器是出了问题的

这时我们服务器一定有很多邮件堆积,然后自己邮件会发不出去。

我们需要做的操作:检查

du -sh /var/spool/postfix/*

查看目录下的defer和deferred的目录大小,通过postqueue –p来查看队列的邮件,通过postsuper -d ALL 删除所有的队列邮件。

————————————————

本人的经验分享,希望可以帮助到你们,如何不对的地方,可以评论留言,帮我指正一下。

卸载阿里云盾监控

阿里云的vps安装面板上,默认勾选安装“阿里云盾”,稍不注意就“中招”了。顾名思义,云盾的作用就是监视vps的使用、抵御网络攻击等。作为一个对xxxx有特殊需求的人来,云盾其实就是一种“间谍”,监控你的一举一动。在特殊情况下,这甚至会成为“有关部门”将你治罪的“关键证据”,所以卸载云盾就成了使用者第一件要做的事。在这里介绍两种卸载的方式,读者可以任选一种。

1、卸载阿里云盾及其附属程序

卸载阿里云盾监控

wget http://update.aegis.aliyun.com/download/uninstall.sh
sh uninstall.sh
wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh
sh quartz_uninstall.sh

删除目录残留

pkill aliyun-service
rm -fr /etc/init.d/agentwatch /usr/sbin/aliyun-service
rm -rf /usr/local/aegis*

v2-ui,一个全新的多协议多用户 v2ray 面板

一、前言

sprov-ui 从 2 月份发布,到现在也差不多半年了,中间停更了一段时间。之后就不回归 sprov-ui 了,而是重新做一个新的出来,主要原因是 sprov-ui 使用的是 Java 语言,内存占用较高,对低内存的机器不太友好。于是这次用 Python 来写,内存占用会有明显改善,Python 还是比 Java 更适合写这类小工具。

二、功能介绍

使用中出现了问题、BUG 报告及功能建议请前往 Github – issues,请务必先查看别人是否已经提过同样的问题,确认没有再提 issue。

  • 系统状态监控
  • 支持多用户多协议,浏览器可视化操作,无需敲命令
  • 支持的协议:vmess、shadowsocks、dokodemo-door、socks、http
  • vmess 支持的传输配置:tcp(http伪装、tls)、kcp(伪装)、ws(tls)、http(tls)、quic(tls)
  • 支持账号流量统计
  • 支持自定义 v2ray 配置模板
  • 支持 https 访问面板(需自备域名 + ssl 证书)
  • 更多高级配置项,详见面板

三、安装&升级

用户注意事项(必看)

v2-ui 与其它所有关于修改 v2ray 配置文件的工具完全不兼容(包括 sprov-ui),安装 v2-ui 后会导致 v2ray 配置文件被重写,导致原有 v2ray 账号丢失,如有必要,请自行提前做好备份,以免造成不必要的后果。

建议系统

面板建议以下系统安装,建议尽量使用新版的系统:

  • CentOS 7+
  • Ubuntu 16+
  • Debian 8+

一键安装&升级

若出现 bash curl: command not found 等错误,请先安装 curl
CentOS 系统:yum install curl -y
Debian 或 Ubuntu 系统:apt install curl -y

bash <(curl -Ls https://blog.sprov.xyz/v2-ui.sh)

更新与升级都是这条命令,升级不会造成数据丢失,你所做的个性化面板设置也会保留。

全新安装后,在浏览器中打开 http://<服务器IP>:65432 即可访问面板,默认用户名和密码都是 admin。

升级后,仍然使用你升级前的方式进入面板。

四、面板其它操作

v2-ui                  # 显示管理菜单 (功能更多)
v2-ui start            # 启动 v2-ui 面板
v2-ui stop             # 停止 v2-ui 面板
v2-ui restart          # 重启 v2-ui 面板
v2-ui status           # 查看 v2-ui 状态
v2-ui enable           # 设置 v2-ui 开机自启
v2-ui disable          # 取消 v2-ui 开机自启
v2-ui log              # 查看 v2-ui 日志
v2-ui update           # 更新 v2-ui 面板
v2-ui install          # 安装 v2-ui 面板
v2-ui uninstall        # 卸载 v2-ui 面板

重置流量

如图所示,点击【总用量】的标签即可重置对应的流量

重置流量

启用禁用账号

启用禁用账号

配置 https 访问

配置 https 需要域名和对应的证书,如果你连域名都没有的话,需要先买一个,并将一个子域名解析到服务器 IP。

证书申请教程:在 FreeSSL 上为你的域名申请免费 SSL 证书

方式①

域名和证书都搞定后,将证书文件上传至服务器任意位置,并进入面板配置如下两项并重启,配置错误会导致无法启动面板,需参考下面的教程重置面板设置。

配置 ssl 证书

方式②

当然你也可以使用 nginx、caddy 等 web 服务器反向代理面板,并在面板中设置【面板网页根路径】来达到路径分流的效果,我只在此提供思路,具体实施请自行研究。

以下为 nginx 参考配置,面板根路径为 /v2-ui,设置完之后访问路径就变成了 /v2-ui。假设之前的访问网址是:http(s)://xxx.com:65432,那么按照以下设置之后访问网址是:http(s)://xxx.com/v2-ui。总之最后要加个 /v2-ui

location /v2-ui {
    proxy_pass http://127.0.0.1:65432/v2-ui;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
面板配置根路径

面板数据备份与迁移

面板所有数据包括账号信息等都存在 /etc/v2-ui/v2-ui.db 中,只要备份此文件即可。在新服务器安装了面板之后,先关闭面板,再将备份的文件覆盖新安装的,最后启动面板即可。

卸载面板

执行以下命令即可完全卸载面板,如果还需要卸载 v2ray,请自行找相关教程。

systemctl stop v2-ui
systemctl disable v2-ui
rm /usr/local/v2-ui/ -rf
rm /etc/v2-ui/ -rf
rm /etc/systemd/system/v2-ui.service -f
systemctl daemon-reload

jdk11下载安装-环境配置(Win10)

1、JDK11安装

1)下载JDK11

Oracle JDK11: https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

OpenJDK11: http://jdk.java.net/11/

在上面两个地址下载需要的版本。

本文主要是64位win10上安装,文件下载地址:https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_windows-x64_bin.zip

2)解压下载文件

将下载好的.zip文件解压到指定的安装目录,例如,安装到C:\Program Files\Java下,在Java文件夹下新建jdk11文件夹,将文件解压到jdk11文件夹下。

注意:zip文件解压后,JDK中bin文件夹应该在jdk11文件夹下。

如果下载的是exe文件,就选择安装目录为新建好的那个JDK11文件夹下。

2、配置环境变量

1)配置JAVA_HOME

按Windows键+R键,出现运行窗口,在打开文件框中输入sysdm.cpl,点击确定,出现”系统信息”窗口。

在系统信息窗口依次点击,

系统信息窗口 =》高级 =》环境变量-》系统环境变量 , 注意:如果用户环境变量中有对应的环境变量设置,就在用户环境变量中添加。否则会优先读取用户环境,有可能找不到设置的环境变量。如果没有,在系统环境变量或用户环境哪一个都可以,系统环境变量是对所有用户生效的。

点击环境变量->新建->变量名JAVA_HOME,变量值JDK11的安装目录如C:\Program Files\Java\jdk11

2)配置Path环境变量

编辑Path变量


%JAVA_HOME%\bin;
这个变量插入最前面,注意要有分号和后面的变量间隔开。

注意:如果是win10系统,点击编辑后,要点击新建,值为%JAVA_HOME%\bin,win10系统中不用自己加冒包。

效果如下图

3)验证是否安装成功

按windows键+R键,输入cmd,在打开的cmd窗口中输入java -version,安装成功提示如下:

Microsoft Windows [版本 10.0.17134.254]
(c) 2018 Microsoft Corporation。保留所有权利。
C:\Users\Administrator>java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

Mysql 8.x [Err] 1055 only_full_group_by 问题记录

查询时报错 [Err] 1055 – Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘

SELECT c.* ,COUNT(courseId) as cnum FROM center_coursetime c WHERE isDel=0  GROUP BY schoolId ORDER BY c.createTime DESC

解决方法:

登录mysql 后可以查看sql_mode

show variables like ‘%sql_mode%’;

mysql> SELECT @@GLOBAL.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+

其中ONLY_FULL_GROUP_BY 就是引起问题的关键

在 mysql配置文件中/etc/my.cnf中加入

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

重启服务,问题解决

ShadowsocksR 协议插件文档

概要

用于方便地产生各种协议接口。实现为在原来的协议外套一层编码和解码接口,不但可以伪装成其它协议流量,还可以把原协议转换为其它协议进行兼容或完善(但目前接口功能还没有写完,目前还在测试完善中),需要服务端与客户端配置相同的协议插件。插件共分为两类,包括混淆插件和协议定义插件。

现有插件介绍

1.混淆插件

此类型的插件用于定义加密后的通信协议,通常用于协议伪装,部分插件能兼容原协议。

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.comcloudfront.net。服务端暂不支持自定义参数。

2.协议定义插件

此类型的插件用于定义加密前的协议,通常用于长度混淆及增强安全性和隐蔽性,部分插件能兼容原协议。

origin:表示使用原始SS协议,此配置速度最快效率最高,适用于限制少或审查宽松的环境。否则不建议使用。

verify_deflate(不建议):对每一个包都进行deflate压缩,数据格式为:包长度(2字节)|压缩数据流|原数据流Adler-32,此格式省略了0x78,0x9C两字节的头部。另外,对于已经压缩过或加密过的数据将难以压缩(可能增加1~20字节),而对于未加密的html文本会有不错的压缩效果。因为压缩及解压缩较占CPU,不建议较多用户同时使用此混淆插件。此插件不能兼容原协议,千万不要添加_compatible的后缀。

verify_sha1(即原版OTA协议,已废弃):对每一个包都进行SHA-1校验,具体协议描述参阅One Time Auth,握手数据包增加10字节,其它数据包增加12字节。此插件能兼容原协议(需要在服务端配置为verify_sha1_compatible)。

auth_sha1(已废弃):对首个包进行SHA-1校验,同时会发送由客户端生成的随机客户端id(4byte)、连接id(4byte)、unix时间戳(4byte),之后的通讯使用Adler-32作为效验码。此插件提供了能抵抗一般的重放攻击的认证,默认同一端口最多支持64个客户端同时使用,可通过修改此值限制客户端数量,使用此插件的服务器与客户机的UTC时间差不能超过1小时,通常只需要客户机校对本地时间并正确设置时区就可以了。此插件与原协议握手延迟相同,能兼容原协议(需要在服务端配置为auth_sha1_compatible),支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。

auth_sha1_v2(已废弃):与auth_sha1相似,去除时间验证,以避免部分设备由于时间导致无法连接的问题,增长客户端ID为8字节,使用较大的长度混淆。能兼容原协议(需要在服务端配置为auth_sha1_v2_compatible),支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。

auth_sha1_v4(不建议):与auth_sha1对首个包进行SHA-1校验,同时会发送由客户端生成的随机客户端id(4byte)、连接id(4byte)、unix时间戳(4byte),之后的通讯使用Adler-32作为效验码,对包长度单独校验,以抵抗抓包重放检测,使用较大的长度混淆,使用此插件的服务器与客户机的UTC时间差不能超过24小时,即只需要年份日期正确即可。能兼容原协议(需要在服务端配置为auth_sha1_v4_compatible),支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。

auth_aes128_md5auth_aes128_sha1(均推荐):对首个包的认证部分进行使用Encrypt-then-MAC模式以真正免疫认证包的CCA攻击,预防各种探测和重防攻击,同时此协议支持单端口多用户,具体设置方法参见breakwa11的博客。使用此插件的服务器与客户机的UTC时间差不能超过24小时,即只需要年份日期正确即可,针对UDP部分也有做简单的校验。此插件不能兼容原协议,支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数。

auth_chain_a(推荐):对首个包的认证部分进行使用Encrypt-then-MAC模式以真正免疫认证包的CCA攻击,预防各种探测和重防攻击,数据流自带RC4加密,同时此协议支持单端口多用户,不同用户之间无法解密数据,每次加密密钥均不相同,具体设置方法参见breakwa11的博客。使用此插件的服务器与客户机的UTC时间差不能超过24小时,即只需要年份日期正确即可,针对UDP部分也有加密及长度混淆。使用此插件建议加密使用none。此插件不能兼容原协议,支持服务端自定义参数,参数为10进制整数,表示最大客户端同时使用数,最小值支持直接设置为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_*协议的限制最为精确。

混淆特性

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表示完美伪装。

协议特性

假设 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以下为效果轻微,具体分析方法可参阅方校长等人论文
  • 对于抗包时序分析一列,方校长的论文表示虽然可利用,但利用难度大(也即他们还没能达到实用级),目前对此也不做处理

混淆与协议配置建议

  • 协议推荐:协议用auth_chain_*最佳,此时推荐不使用加密(设置为none),混淆随意
  • 加密选择:若协议用auth_chain_*,那加密用none(但不代表密码可以不写或两边不匹配),若协议不是auth_aes128_md5auth_aes128_sha1,那么不能使用rc4加密(可用rc4-md5)。这时加密可以在rc4-md5、salsa20、chacha20-ietf三个里面选择(rc4-md5可换为aes系列,salsa20可换为chacha20或bf-cfb),如果使用SSR还可特别选择rc4-md5-6。
  • 混淆推荐:如果QoS在你的地区明显,混淆建议在http_simpletls1.2_ticket_auth中选择,具体选择可以通过自己的试验得出。如果选择混淆后反而变慢,那么混淆请选择plain。如果你不在乎QoS,但担心你的个人vps能不能持久使用,那么混淆选择plaintls1.2_ticket_auth,协议选择auth_chain_*auth_aes128_*
  • 如果你用于玩游戏,或对连接延迟有要求的情况下,建议不要使用tls1.2_ticket_auth混淆,用其它混淆或plain
  • 服务端里,http_simplehttp_post是相互兼容的,没有使用上的区别
  • 如果你在公司,或学校,或某些环境下,发现原版SS协议不可用,建议你启用http_simplehttp_posttls1.2_ticket_auth混淆,同时端口相应使用80或443,通常能解决问题。同时能躲避你所在环境下的网络封锁(如禁止访问网盘禁止上传等等)
  • 如果使用tls1.2_ticket_auth混淆或不开启混淆,那么协议最好不要使用originverify_sha1
  • 如果使用二重代理,一般你只需要考虑越过防火墙的那一段使用混淆或加强协议,除非为了匿名
  • 如果你发现你的代理突然不能用了,但换一个端口又能用了,或者等15分钟到半小时后又能用了,这种情况下请联系我

配置方法

服务端配置:使用最新SSR的manyuser分支
user-config.json或config.json里有一个protocol的字段,目前的可能取值为:
origin
verify_deflate (不建议)
verify_sha1 (已过时)
verify_sha1_compatible (已过时)
auth_sha1 (已过时)
auth_sha1_compatible (已过时)
auth_sha1_v2 (已过时)
auth_sha1_v2_compatible (已过时)
auth_sha1_v4 (不建议)
auth_sha1_v4_compatible (不建议)
auth_aes128_md5
auth_aes128_sha1
auth_chain_a
auth_chain_b

user-config.json或config.json里有一个obfs的字段,目前的可能取值为:
plain
http_simple
http_simple_compatible
http_post
http_post_compatible
random_head (已过时)
random_head_compatible (已过时)
tls1.2_ticket_auth
tls1.2_ticket_auth_compatible

默认为
"protocol":"auth_aes128_md5",
"obfs":"tls1.2_ticket_auth_compatible",
相应的
协议插件参数默认为"protocol_param":""
混淆插件参数默认为"obfs_param":""
对于protocol,必须服务端与客户端严格匹配
服务端配置为xxabc_compatible时(以compatible为后缀的),即服务端支持使用原版客户端,或使用配置插件为xxabcplain的ssr客户端。

客户端配置:使用本ssr版本,在编辑服务器配置里找到相应节点,最后在protocol选项和obfs选项的列表里选择需要使用的插件,然后填写相应的参数即可

兼容性

目前ssr-libev客户端、ssr-python及ssr-csharp支持全部没有标注为过时或不推荐的协议和混淆。

实现接口

以下以C#语言为例做说明

interface IObfs

成员函数

InitData()
参数:无
返回:一个自定义类型变量,通常用于保存此接口的全局信息,不应返回null,c语言中返回void*
说明:第一次创建实例前调用,同一服务端配置不会重复调用,服务端在建立监听时调用,客户端在第一次连接时调用。

SetServerInfo(ServerInfo serverInfo)
参数:ServerInfo结构,包含成员变量:

  • host: 字符串类型,服务端ip,客户端需要把域名转换为ip,如有前置代理,则直接使用配置时所用的域名也可,服务端需要获取监听ip
  • port: 整数类型,服务端监听端口
  • param: 用户设置的参数,字符串类型
  • data: 由InitData返回的结果,为object类型(c语言中使用void*)
  • iv: 客户端或服务端加密时使用的iv数组(c语言中需要添加额外字段以记录其长度,下同)
  • recv_iv: 客户端或服务端接收到的iv数组
  • key: 加密时使用的key(不是原key,是通过BytesToKey生成的指定长度数组)
  • tcp_mss: 整数类型,TCP分包大小,设置为1460
  • overhead: 整数类型,协议头部大小,需要由调用方设置

返回:无
说明:实例构造的时候(每个连接建立时)调用,调用前iv和key必须已经初始化;而接收到数据后先初始化recv_iv再调用插件。

int GetOverhead() 参数:无
返回:此插件在通信时的附加头部大小

Dispose()
参数:无
返回:无
说明:实例析构时(每个连接关闭时)调用

byte[] ClientPreEncrypt(byte[] plaindata, int datalength, out int outlength)
参数:需要处理的字节数组及其长度
返回:处理后的字节数组及其长度
说明:客户端发送到服务端数据加密前调用此接口

byte[] ClientEncode(byte[] encryptdata, int datalength, out int outlength)
参数:需要编码的字节数组及其长度
返回:编码后的字节数组及其长度
说明:客户端发送到服务端数据加密后调用此接口

byte[] ClientDecode(byte[] encryptdata, int datalength, out int outlength, out bool needsendback)
参数:需要解码的字节数组及其长度
返回:解码后的字节数组及其长度,以及needsendback标记是否立即回发服务端数据。如needsendback为true,则会立即调用ClientEncode,调用时参数是一个长度为0的字节数组
说明:客户端收到服务端数据在解密前调用此接口

byte[] ClientPostDecrypt(byte[] plaindata, int datalength, out int outlength)
参数:需要处理的字节数组及其长度
返回:处理后的字节数组及其长度
说明:客户端收到服务端数据在解密后调用此接口

byte[] ServerPreEncrypt(byte[] plaindata, int datalength, out int outlength)
参数:需要处理的字节数组及其长度
返回:处理后的字节数组及其长度
说明:服务端发送到客户端数据加密前调用此接口

byte[] ServerEncode(byte[] encryptdata, int datalength, out int outlength)
参数:需要编码的字节数组及其长度
返回:编码后的字节数组及其长度
说明:服务端发送到客户端数据加密后调用此接口

byte[] ServerDecode(byte[] encryptdata, int datalength, out int outlength, out bool needdecrypt, out bool needsendback)
参数:需要解码的字节数组及其长度
返回:解码后的字节数组及其长度,以及needdecrypt标记数据是否需要解密(一般都应该为true),以及needsendback标记是否立即回发客户端数据。如needsendback为true,则会立即调用ServerEncode并发送其返回结果,调用时参数是一个长度为0的字节数组
说明:服务端收到客户端数据在解密前调用此接口

byte[] ServerPostDecrypt(byte[] plaindata, int datalength, out int outlength)
参数:需要处理的字节数组及其长度
返回:处理后的字节数组及其长度
说明:服务端收到客户端数据在解密后调用此接口

byte[] ClientUdpPreEncrypt(byte[] plaindata, int datalength, out int outlength)
参数:需要处理的字节数组及其长度
返回:处理后的字节数组及其长度
说明:客户端发送到服务端UDP数据加密前调用此接口

byte[] ClientUdpPostDecrypt(byte[] plaindata, int datalength, out int outlength)
参数:需要处理的字节数组及其长度
返回:处理后的字节数组及其长度
说明:客户端收到服务端UDP数据在解密后调用此接口

byte[] ServerUdpPreEncrypt(byte[] plaindata, int datalength, out int outlength)
参数:需要处理的字节数组及其长度
返回:处理后的字节数组及其长度
说明:服务端发送到客户端UDP数据加密前调用此接口

byte[] ServerUdpPostDecrypt(byte[] plaindata, int datalength, out int outlength)
参数:需要处理的字节数组及其长度
返回:处理后的字节数组及其长度
说明:服务端收到客户端UDP数据在解密后调用此接口

插件编写

有两类插件,一类是协议插件,一类是混淆插件

其中接口InitData, SetServerInfo, Dispose接口必须实现,其它的接口为通讯接口

编写协议插件的话,需要重写ClientPreEncrypt, ClientPostDecrypt, ServerPreEncrypt, ServerPostDecrypt,其它的按原样返回,needdecrypt必须为true,needsendback必须为false

编写混淆插件的话,需要重写ClientEncode, ClientDecode, ServerEncode, ServerDecode,其它的按原样返回。

如果编写的部分仅含客户端部分,那么只需要编写Client为前缀的两个接口,服务端同理。

目前支持此插件接口的,有 ShadowsocksR C# 和 ShadowsocksR Python

一个逗比写的逗比脚本ssr.sh

脚本特点:

目前网上的各个ShadowsocksR脚本基本都是只有 安装/启动/重启 等基础功能,对于小白来说还是不够简单方便。既然是一键脚本,那么就要尽可能地简单,小白更容易接受使用!

  • 支持 限制 用户速度
  • 支持 限制 端口设备数
  • 支持 显示 当前连接IP
  • 支持 显示 SS/SSR连接+二维码
  • 支持 切换管理 单/多端口
  • 支持 一键安装 锐速
  • 支持 一键安装 BBR
  • 支持 一键封禁 垃圾邮件(SMAP)/BT/PT

下载安装:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh

ss面板-ssrpanel-(一键脚本版)

ssr多用户安装脚本


wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/SSR-Bash-Python/master/install.sh && bash install.sh

安装完成后输入 ssr 回车即可使用
卸载脚本

wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/SSR-Bash-Python/master/uninstall.sh && bash uninstall.sh

修改版安装&更新

wget -q -N --no-check-certificate https://raw.githubusercontent.com/hotmop/SSR-duoyonghu/master/install.sh && bash install.sh

卸载

wget -q -N --no-check-certificate https://raw.githubusercontent.com/hotmop/SSR-duoyonghu/master/install.sh && bash install.sh uninstall

BT


yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

改密
cd /www/server/panel && python tools.pyc panel

wget安装

yum -y install wget

BBR

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

测试命令:

uname -r

SS-panel肥羊魔改清爽版


yum install screen wget -y &&screen -S ss 
wget -N --no-check-certificate https://raw.githubusercontent.com/mmmwhy/ss-panel-and-ss-py-mu/master/ss-panel-v3-mod.sh && chmod +x ss-panel-v3-mod.sh && bash ss-panel-v3-mod.sh

十一ssrpanel


一键脚本【仅支持Centos 7.x 64位系统】:

yum install screen wget -y &&screen -S ssrpanel
wget --no-check-certificate https://raw.githubusercontent.com/marisn2017/ssrpanel/master/ssrpanel.sh&&chmod +x ssrpanel.sh&&bash ssrpanel.sh

乱码请使用英文版脚本:

wget --no-check-certificate https://raw.githubusercontent.com/marisn2017/ssrpanel/master/ssrpanel_en.sh&&chmod +x ssrpanel_en.sh&&bash ssrpanel_en.sh

cd shadowsocksr

改user-config.json

vi user-config.json
vi usermysql.json

检查
python server.py
遇到加密方式libsodium not found问题

yum install wget m2crypto git libsodium -y
yum -y groupinstall "Development Tools"
wget https://github.com/jedisct1/libsodium/releases/download/1.0.16/libsodium-1.0.16.tar.gz
tar xf libsodium-1.0.16.tar.gz && cd libsodium-1.0.16
./configure && make -j2 && make install
echo /usr/local/lib > /etc/ld.so.conf.d/usr_local_lib.confldconfig

关于邮件配置:
修改/home/wwwroot/网站文件夹/config/mail.php文件,以阿里云邮件推送为例,修改以下几项配置
‘driver’ => ‘smtp’,

‘host’ => ‘smtpdm.aliyun.com’,

‘port’ => 465,

‘from’ => [

'address' => '阿里云邮件推送的发件地址',
'name' => '重置密码',

‘encryption’ => ‘ssl’,

‘username’ => ‘阿里云邮件的发件地址’, //也就是和上面那个一样

‘password’ => ‘阿里云邮件的smtp密码’,
其他的smtp邮件服务也是一样,host、port、邮件发送地址、密码改成相应的就行了。
改完了以后别忘了在网站后台的设置→系统设置中修改网站地址为你的网站地址

注意,
安装ssr后端的服务器,每次系统重启后需要重新启动ssr后端
代码如下

cd shadowsocksr
sudo sh logrun.sh

006UUDzMgy1fq9btyq84ng30m80gox6p.gif

宝塔ssrpanel


基于宝塔面板一键安装ssrpanel脚本。

前提条件:

1.安装宝塔面面板,PHP版本选择7.1,其他默认,使用Nginx环境。

2.新建站点,记住域名。

3.新建数据库,记住数据库用户和密码,(数据库名同用户名)。

4.运行下面的脚本:

wget https://coding.net/u/cvc/p/ssrpanel/git/raw/master/install.sh &&
bash install.sh

ss-panelmod魔改版


要求centos 7 x64

yum install screen wget -y &&screen -S ss 
wget -N --no-check-certificate https://raw.githubusercontent.com/mmmwhy/ss-panel-and-ss-py-mu/master/ss-panel-v3-mod.sh && chmod +x ss-panel-v3-mod.sh && bash ss-panel-v3-mod.sh

sspanel v3一键魔改ui版


wget -N --no-check-certificate https://raw.githubusercontent.com/echo-marisn/ss-panel-v3-mod_UIChanges-one-click-script/master/ss-panel-v3-mod_UIChanges-one-click-script.sh && chmod +x ss-panel-v3-mod_UIChanges-one-click-script.sh && bash ss-panel-v3-mod_UIChanges-one-click-script.sh

ss-panel v3一键脚本


yum install screen wget -y &&screen -S ss
wget -N --no-check-certificate https://raw.githubusercontent.com/mmmwhy/ss-panel-and-ss-py-mu/master/ss-panel_node.sh && chmod +x ss-panel_node.sh && bash ss-panel_node.sh

输入1安装即可

默认账号:91vps

默认密码:91vps

修改ssh端口
vi /etc/ssh/sshd_config
service sshd restart #重启生效
管理ssr
supervisorctl {start|stop|restart} ssr
修改mysql密码

wget http://soft.vpser.net/lnmp/ext/reset_mysql_root_password.sh
sh reset_mysql_root_password.sh

ssv3一键脚本


系统需要centos7.x版本.

wget 4ker.cc/s/ssv3.sh;bash ssv3.sh
此脚本后端可以更换为ssr后端,用于流控支持ssr,自行更换后端即可。

ss-panel v2 前后端一键安装脚本


仅支持CentOS 6+

wget --no-check-certificate https://raw.githubusercontent.com/echo-marisn/ssv2/master/v2.sh&&chmod +x v2.sh&&bash v2.sh

MS主题


https://github.com/izhangxm/ss-panel-v3-mod

MS一键


wget -N --no-check-certificate https://raw.githubusercontent.com/echo-marisn/ssrv3-one-click-script/master/v3-ms.sh && chmod +x v3-ms.sh && ./v3-ms.sh 2>&1 | tee v3-ms.log

原版带主题


wget -N --no-check-certificate https://raw.githubusercontent.com/echo-marisn/ssrv3-one-click-script/master/ssrv3.sh && chmod +x ssrv3.sh && ./ssrv3.sh 2>&1 | tee ssrv3.log