0


Centos搭建ss5(socks5)代理服务器

SOCKS5代理是一种网络协议,它在客户端和服务器之间充当中介,允许数据包通过一个安全的隧道传输。与前一代SOCKS4相比,SOCKS5支持更广泛的认证方法和更多的网络协议,包括IPv6和UDP。

SOCKS5代理的优势

• 增强的安全性:SOCKS5代理提供了一层额外的安全保护,使你的网络活动难以被追踪。

• 支持多种协议:SOCKS5代理支持各种网络协议,包括HTTP、FTP和SMTP,使其适用于多种网络应用。

• 减少错误和性能问题:由于SOCKS5代理不重新封装数据包,它能够减少错误率,提高传输效率。

安装准备工作
首先要保证服务上能正常使用wget tar make vim,如果正常就直接进入【第一步】

#安装wget的命令
yum installwget#安装tar解压工具
yum install-ytar#安装make的命令
yum groupinstall "Development Tools"#安装vim的命令
yum install-yvim

第一步
使用yum安装gcc、OpenLDAP开发库、PAM开发库和OpenSSL开发库等依赖

yum install-y gcc openldap-devel pam-devel openssl-devel

第二步
使用wget 下载SS5安装包

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

如果下载后解压出错,先用浏览器下载好,,下载地址:http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz,然后上传到服务器

第三步
解压安装包

tar-vzx-f ss5-3.8.9-8.tar.gz

第四步
进入ss5目录安装ss5服务,依次执行一下命令,也可以全复制一起执行

cd ss5-3.8.9/;
./configure;make;makeinstall

第五步
给/etc/init.d/ss5文件添加执行权限

chmod a+x /etc/init.d/ss5

第六步
测试一下ss5服务是否能正常运行,如果不能正常运行,就根据错误解决问题

systemctl start ss5

如果出现以下提示,请运行“service ss5 start”
在这里插入图片描述

如果能正常运行了,就执行以下命令,先关闭ss5服务,以便接下来做其他配置

systemctl stop ss5

第七步
修改ss5配置文件,先进行备份

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

然后使用vim打开ss5的配置文件 提示:按 i 键开启编辑模式

vim /etc/opt/ss5/ss5.conf

找到auth的配置,默认是注释了的,先放开注释(就是把首行的#去掉),然后把Authentication这列改为u,

 auth 0.0.0.0/0 - u

以下为修改后的截图
在这里插入图片描述
找到permit的配置,放开注释,把auth这列改为u,

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

以下是修改后的截图
在这里插入图片描述
最后保存配置 提示:按Esc退出编辑模式,:wq 保存并且退出

第八步
修改ss5的用户配置文件

vim /etc/opt/ss5/ss5.passwd

打开后是空文件,在这里面添加自己的代理账号和密码,格式:账号+英文空格+密码,以下是例子,自己配置自己的账号

user001 123456
user002 123456
user003 123456

记得保存配置
然后再走一次【第六步】测试一下是否能正常运行

第九步
查看系统是否开启了IP转发功能

sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 0 就是未开启 net.ipv4.ip_forward = 1 就是已经开启了

接下来开启系统的IP转发功能功能,打开系统配置文件

vim /etc/sysctl.conf

找到一行类似于net.ipv4.ip_forward=0的配置项。如果没有找到该配置项,可以在文件的末尾添加一行net.ipv4.ip_forward=1,如下
在这里插入图片描述
使新的配置生效

sysctl-p

检查是否已经成功设置为1

sysctl net.ipv4.ip_forward

第十步
把刚才配置的账号密码添加到系统用户,执行以下命令(就是ss5.passwd里的账号,如果要批量添加,每一行命令要加分号)

useradd user001 -p123456;useradd user002 -p123456;useradd user003 -p123456;

查看用户的uid

id user001;id user002;id user003;

会给你显示以下内容,这里的1000、1001、1002就是用户的uid,【第十一步】会用到这个uid

uid=1000(user001)gid=1000(user001)groups=1000(user001)uid=1001(user002)gid=1001(user002)groups=1001(user002)uid=1002(user003)gid=1002(user003)groups=1002(user003)

第十一步
配置iptables规则,限制用户的出口IP,这里是根据用户的uid去限制的,比如user001用户的uid是1000,配置user001用户的出口IP就是172.17.22.1,以下是示例,根据自己情况修改uid和出口IP

#配置用户user001
iptables -t mangle -A OUTPUT -m owner --uid-owner 1000-j MARK --set-mark 1000;
iptables -t nat -A POSTROUTING -m mark --mark1000-j SNAT --to-source 172.17.22.1;#配置用户user002
iptables -t mangle -A OUTPUT -m owner --uid-owner 1001-j MARK --set-mark 1001;
iptables -t nat -A POSTROUTING -m mark --mark1001-j SNAT --to-source 172.17.22.2;#配置用户user003
iptables -t mangle -A OUTPUT -m owner --uid-owner 1002-j MARK --set-mark 1002;
iptables -t nat -A POSTROUTING -m mark --mark1002-j SNAT --to-source 172.17.22.3;

第一行命令的作用是,当属主为uid 1000的用户发出数据包时,会给这些数据包打上标记为1000的标志

第二条命令的作用是,当数据包被标记为1000时,会将这些数据包的源地址转换为172.17.22.1,然后再发送到外部网络。

第十二步
确保ss5的服务是关闭的状态或执行以下命令关闭SS5服务

systemctl stop ss5

配置ss5用户的出口IP,这里是根据用户名去限制的,注意用户名对应的IP对应iptables里uid配置的IP

ss5 -u user001 -b172.17.22.1;
ss5 -u user002 -b172.17.22.2;
ss5 -u user003 -b172.17.22.3;

配置完成后重新启动ss5

systemctl start ss5

至此恭喜你,完成了所有配置!可以使用SocksCap64测试一下
在这里插入图片描述

SS5的默认端口是1080.如果需要更改端口,请执行

vi /etc/sysconfig/ss5

改为自己需要的端口,默认端口为1080

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

重启服务即可

systemctl restart ss5

注意事项
如果出现以下错误

Can’t create pid file /var/run/ss5/ss5.pid 
Can’t unlink pid file /var/run/ss5/ss5.pid 

需要先创建 /var/run/ss5 目录后再启动 ss5,但写次文章时每次重启电脑后会文件夹会被删除。
临时解决办法:

vim /etc/rc.d/rc.local
mkdir-p /var/run/ss5

保存退出后,增加文件的执行权限

chmod a+x /etc/rc.d/rc.local

配置说明-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里面配置 [下文讲]

配置说明-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

先创建 grouo 目录,在创建 users 文件

user1
user2
user3

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

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

标签: centos linux 运维

本文转载自: https://blog.csdn.net/tiger57/article/details/136528864
版权归原作者 tiger57 所有, 如有侵权,请联系我们删除。

“Centos搭建ss5(socks5)代理服务器”的评论:

还没有评论