不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2023-11-05 20:21:24  修改时间:2024-05-08 17:57:00  分类:Linux软件安装/参数优化  编辑

常用配置文件:

#文件1:端口文件
vim /etc/sysconfig/ss5

#文件2:路由规则文件
vim /etc/opt/ss5/ss5.conf

#文件3:用户密码文件
vim /etc/opt/ss5/ss5.passwd

#重启ss5
service ss5 restart

 


socks5协议

目前三大主流的代理协议包括Socks5代理,HTTP代理,HTTPS代理,由于socks5协议工作在传输层和应用层之间,采用TCP/IP协议进行通信,对应用层的多种协议有较好的兼容性,因此应用的十分广泛。

1、安装ss5

安装依赖

yum -y install gcc gcc-c++ automake make pam-devel openldap-devel cyrus-sasl-devel
yum -y install pam-devel openldap-devel cyrus-sasl-devel gcc automake make openssl openssl-devel

创建好一个目录,进入该目录后,wget下载好ss5安装文件

wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz

进入目录后进行编译。依次运行以下三个命令:

tar -xzvf ./ss5-3.8.9-8.tar.gz
cd ss5-3.8.9
./configure
make && make install

2、修改配置文件

先进行备份

cp /etc/opt/ss5/ss5.conf /etc/opt/ss5/ss5.conf.bak

修改配置

vim /etc/opt/ss5/ss5.conf

这里需要注意:必须把配置文件/etc/opt/ss5/ss5.conf备份后清空,否则会报错socks method unknown or bad request

清空后ss5.conf只写两行:

auth 0.0.0.0/0 - u
permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - -

2.1、配置说明-auth

auth为认证配置,可以设置多行

# auth配置      SHost           SPort           Authentication
#[auth配置      来源IP          来源端口           模式]
auth    0.0.0.0/0               -               -

①SHost

设置监听ip,0.0.0.0/0为监听所有请求

②SPort

设置监听端口,端口如果不需要设置的话,用”-“标识,表示监听所有端口

③Authentication

模式设置,取值为n或u:

  • n:为不使用用户密码[不推荐,因为机器很容易就变成肉鸡了],
  • u:为使用用户密码,用户密码需要在ss5.passwd里面配置 [下文讲]

2.2、配置说明-permit

permit为允许(授权)设置项,可以设置多行

#permit设置  auth    SHost    SPort    DHost    Dport    Fixup    Group    Band    ExpDate
[permit设置  认证模式  来源IP  来源端口  目的IP(域名)  目的端口  协议     用户组   带宽设置  过期时间]

①auth

认证模式开关,开启用u标识,如果关闭认证模式可以用-标识

②SHost和Sport

SHost和Sport和auth一栏一样,设置来源的端口;DHost和Dport设置通过socks5代理后可以访问的ip(域名)和端口,每个permit设置一个ip(域名)或端口

如果要使用不同的端口,而ip也可以添加网段

permit u - - 192.168.1.1 443 - - - -
permit u - - 192.168.1.1 80  - - - -
permit u - - 192.168.1.2 443 - - - -

③Fixup

设置smtp,http等允许的协议;

④Group

设置允许的用户或用户组,需要配合ss5.passwd使用,ss5.passwd是储存用户认证的文件,(格式为用户名 用户密码,中间要有空格,然后一行设置一个用户);在v1.0r11版本中,多个用户可以使用逗号隔开,但是经过个人测试,在新版本的socks5中不允许这样填写配置,这也是设置失败的主要原因,在新版本中如果要允许多个用户就要先定义好用户组,在ss5.conf所在的目录下建立group文件夹,在文件夹下添加对应的组员信息文件,但这个组员必须存在于ss5.passwd中[group文件夹不是必须,也可以直接将组员信息文件放在ss5.conf同级目录下,不过当设置组多到一定程度时,存放位置和规范就比较重要了]

[具体的例子就是,如果某个permit需要允许user1,user2,user3访问,那么首先要在ss5.passwd中配置好3个user,然后建立文件users,分别每一行填写一个用户名;比如某个permit设置为:

permit u 0.0.0.0/0 - 0.0.0.0/0 - - group/users - -

即表示为允许group/users文件中用户直接通过代理访问网络,对应文件内容如下]

ss5.conf

auth 0.0.0.0/0 - u
permit u 0.0.0.0/0 - 192.168.0.0/0 - group/users - - #设置用户只可以通过socks5代理访问内网

ss5.passwd

user1 123
user2 123
user3 123

group/users

先创建 group 目录,再创建 users 文件,文件内容为:

user1
user2
user3

⑤Band

带宽设置,以byte做单位,最低可以设置256(最高没试过,不设置就好了),设置1Mb就是10240;

⑥ExpDate

过期时间,格式为日-月-年:01-05-2017

3、添加用户密码

/etc/opt/ss5/ss5.passwd文件中可以添加用户名和密码:

vim /etc/opt/ss5/ss5.passwd

每行写一个用户名和密码,用户名和密码用空格隔开,例如:

#用户名   密码
albert   WrXZq0Xn3Ysby8R3bqZp1VKMmGBdgYmR

4、修改ss5端口

修改端口配置文件

vim /etc/sysconfig/ss5

第2行取消注释,同时修改为自己需要的端口,默认端口为1080

SS5_OPTS=" -u root -b 0.0.0.0:9988"

5、调整ss5性能

这里依据实际需求调整,主要在修改系统资源配置,如果ss5不影响正常使用或使用人数较少可以不修改

ulimit -SHn 10240
ulimit -SHs unlimited
echo 100000 >/proc/sys/net/nf_conntrack_max

6、修改ss5启动权限

修改执行权限

chmod u+x /etc/rc.d/init.d/ss5
chmod +x /etc/init.d/ss5

7、开机自启

chkconfig --add ss5

8、启动应用

#创建进程pid所需的目录
mkdir -pv /var/run/ss5

常用命令

#启动
service ss5 start
#停止
service ss5 stop
#重启
service ss5 restart
#查看状态
service ss5 status 

9、查看ss5日志

tail -f /var/log/ss5/ss5.log

10、查看ss5进程是否存在?

ps -ef | grep ss5
#或者 查看端口
netstat -ntlp | grep 9988

调试:手动启动ss5  (有时候会启动失败,可通过以下命令行方式启动调试)

/usr/sbin/ss5 -t $SS5_OPTS -u root -b 0.0.0.0:9988

11、报错

问题1:如果您看到如下所示的错误:Can't create pid file /var/run/ss5/ss5.pid

[root@CentOS7-A ~]# /usr/sbin/ss5 -t $SS5_OPTS -u root -b 0.0.0.0:9988
[root@CentOS7-A ~]# Can't create pid file /var/run/ss5/ss5.pid
Can't unlink pid file /var/run/ss5/ss5.pid

创建目录/var/run/ss5并再次启动ss5,问题解决!

mkdir -pv /var/run/ss5

但是:服务器重启后,目录/var/run/ss5会被系统自动删除掉,也就是说随机启动的ss5会因为没有该目录,而启动失败!

解决方案:修改启动脚本,增加创建目录/var/run/ss5的逻辑代码

[root@CentOS7-A ~]# vim  /etc/init.d/ss5

结合文章:【Socks5服务端】解决socket-ss5日志文件过大的问题

【最终的版本】/etc/init.d/ss5 文件内容:

#!/bin/sh
#
# chkconfig: 345 20 80
# description: This script takes care of starting \
#              and stopping ss5
#

OS=`uname -s`
if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
 
# Source function library.
 . /etc/rc.d/init.d/functions

# Source networking configuration.
 . /etc/sysconfig/network

# Check that networking is up.
 [ ${NETWORKING} = "no" ] && exit 0

 [ -f /usr/sbin/ss5 ] || exit 0
fi

# Test custom variables
test -f /etc/sysconfig/ss5 && . /etc/sysconfig/ss5

# See how we were called.
case "$1" in
  start)
        # Start daemon.
        echo -n "Starting ss5... "
	if [ $OS = "Linux" ]; then
            mkdir /var/run/ss5
            daemon /usr/sbin/ss5 -m -t $SS5_OPTS
            touch /var/lock/subsys/ss5
	else
	  if [ $OS = "SunOS" ]; then
              mkdir /var/run/ss5
              /usr/sbin/ss5 -m -t 
              touch /var/lock/subsys/ss5
	  else
              mkdir /var/run/ss5
              /usr/local/sbin/ss5 -m -t 
	  fi
	fi
	echo "done"
        ;;
  stop)
        # Stop daemon.
        echo "Shutting down ss5... "
	if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
	killproc ss5
        rm -f /var/lock/subsys/ss5
	else
		killall ss5
	fi
        rm -f /var/run/ss5/ss5.pid
	echo "done"
        ;;
  reload)
        # Reload configuration
	if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
        echo -n "Reloading ss5... "
	killproc ss5 -1
	else
		pkill -HUP ss5
	fi
	echo "done reload"
	;;
  restart)
        # Restart daemon
        echo -n "Restarting ss5... "
	$0 stop
	$0 start
	;;
  status)
	if [ $OS = "Linux" ] || [ $OS = "SunOS" ]; then
	  status ss5
	fi
	;;
  *)
        echo "Usage: ss5 {start|stop|status|restart|reload}"
        exit 1
	;;
esac

exit 0

问题2:在CentOS8上编译安装报错

解决方案:改用优化后的源码包:

 


附:客户端简单使用方法

# 通过socks5访问百度,ip:port分别为socks5 部署服务器的IP以及对应的端口
curl --socks5 192.168.1.51:9988 --proxy-user albert:albert@2023 https://www.baidu.com

注意:有些应用软件填写的代理地址,格式为:socks://user:pass@host:port

配置socks全局使用

vim ~/.bashrc
新增以下两行命令
export http_proxy=socks5://ip:port
export https_proxy=$http_proxy
 
退出编辑之后执行一下命令
source ~/.bashrc

 

 


 

无用户认证模式

vim /etc/opt/ss5/ss5.conf

清空后,只保留以下配置信息:

auth 0.0.0.0/0 - -
permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - - 

重启ss5

service ss5 restart