A-A+

CentOS 7命令行使用shadowsocks客户端(和服务的)代理的方法

2018年09月19日 21:23 学习笔记 暂无评论 共7993字 (阅读7,740 views次)

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

-----------方案一 centos使用SS翻墙 -------------

socks5 全局代理
安装 sslocal


pip install shadowsocks # pip安装ss客户端
#如果提示 -bash: pip: command not found
#运行 yum -y install python-pip

#第二步shadowsocks.json
vim /etc/shadowsocks.json
--- shadowsocks.json ---
{
    "server":"SERVER-IP",   # 你的服务器ip
    "server_port":PORT,    # 服务器端口
    "local_address": "127.0.0.1",
    "local_port":1080,
    "password":"PASSWORD",    # 密码
    "timeout":300,
    "method":"aes-128-cfb", # 加密方式
    "fast_open": false,
    "workers": 1
}

--- shadowsocks.json ---
运行 sslocal


nohup sslocal -c /etc/shadowsocks.json &>> /var/log/sslocal.log &

privoxy篇
安装 privoxy


yum -y install privoxy

配置 socks5 全局代理


echo 'forward-socks5 / 127.0.0.1:1080 .' >> /etc/privoxy/config

设置 http/https 代理


export http_proxy=http://127.0.0.1:8118 # privoxy默认监听端口为8118
export https_proxy=http://127.0.0.1:8118

运行 privoxy


service privoxy start

测试 socks5 全局代理


curl www.google.com

## 如果出现下面这段输出则代理成功!
------------------------------------------------------------------------------



302 Moved

302 Moved

The document has moved here.

------------------------------------------------------------------------------
简化使用
进过上面的步骤我们的确代理成功了。。但是每次都要输入这么多命令太麻烦
这时我们可以利用 命令别名 来简化我们的操作


alias ssinit='nohup sslocal -c /etc/shadowsocks.json &>> /var/log/sslocal.log &'
alias sson='export http_proxy=http://127.0.0.1:8118 && export https_proxy=http://127.0.0.1:8118 && systemctl start privoxy'
alias ssoff='unset http_proxy && unset https_proxy && systemctl stop privoxy && pkill sslocal'

使用方法
### 开启ss代理
ssinit
sson
## 关闭ss代理
ssoff

------------------------方案二-----------------------

安装客户端shadowsocks

其实shadowsocks安装时是不分客户端还是服务器端的,只不过安装后有两个脚本一个是sslocal代表以客户端模式工作,一个是ssserver代表以服务器端模式工作。(注意下方所有命令,如果你已经是root超级管理员,则不用加sudo)

首先执行命令:


sudo yum install python-pip

在使用centos7的软件包管理程序yum安装python-pip的时候会报一下错误:

No package python-pip available.

Error: Nothing to do

说没有python-pip软件包可以安装。

这是因为像centos这类衍生出来的发行版,他们的源有时候内容更新的比较滞后,或者说有时候一些扩展的源根本就没有。

所以在使用yum来search  python-pip的时候,会说没有找到该软件包。因此为了能够安装这些包,需要先安装扩展源EPEL。

EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。

首先安装epel扩展源:


sudo yum -y install epel-release

然后再次执行命令:


sudo yum -y install python-pip

安装完之后别忘了清除一下cache:


sudo yum clean all

安装Shadowsocks客户端:


sudo pip install shadowsocks

配置Shadowsocks连接

新建配置文件、默认不存在


sudo mkdir /etc/shadowsocks
sudo vi /etc/shadowsocks/shadowsocks.json

添加配置信息:前提是需要有ss服务器的地址、端口等信息:


{
    "server":"x.x.x.x",  # Shadowsocks服务器地址
    "server_port":1035,  # Shadowsocks服务器端口
    "local_address": "127.0.0.1", # 本地IP
    "local_port":1080,  # 本地端口
    "password":"password", # Shadowsocks连接密码
    "timeout":300,  # 等待超时时间
    "method":"aes-256-cfb",  # 加密方式
    "fast_open": false,  # true或false。开启fast_open以降低延迟,但要求Linux内核在3.7+
    "workers": 1  #工作线程数 
}

 

配置自启动

新建启动脚本文件/etc/systemd/system/shadowsocks.service,内容如下:


[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/bin/sslocal -c /etc/shadowsocks/shadowsocks.json
[Install]
WantedBy=multi-user.target

 

启动Shadowsocks服务


# 设置开机自启命令
systemctl enable shadowsocks.service
# 启动命令
systemctl start shadowsocks.service
#查看状态命令
systemctl status shadowsocks.service

依次执行上面的三条命令,如下:


[root@ssserver ~]# vi /etc/shadowsocks.json
[root@ssserver ~]# 
[root@ssserver ~]# 
[root@ssserver ~]# vi /etc/systemd/system/shadowsocks.service
[root@ssserver ~]# 
[root@ssserver ~]# 
[root@ssserver ~]# 
[root@ssserver ~]# systemctl enable shadowsocks
Created symlink from /etc/systemd/system/multi-user.target.wants/shadowsocks.service to /etc/systemd/system/shadowsocks.service.
[root@ssserver ~]# systemctl start shadowsocks
[root@ssserver ~]# systemctl status shadowsocks
● shadowsocks.service - Shadowsocks
   Loaded: loaded (/etc/systemd/system/shadowsocks.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-08-28 13:27:53 UTC; 7s ago
 Main PID: 1259 (ssserver)
   CGroup: /system.slice/shadowsocks.service
           └─1259 /usr/bin/python /usr/bin/ssserver -c /etc/shadowsocks.json

Aug 28 13:27:53 ssserver systemd[1]: Started Shadowsocks.
Aug 28 13:27:53 ssserver systemd[1]: Starting Shadowsocks...
Aug 28 13:27:54 ssserver ssserver[1259]: INFO: loading config from /etc/shadowsocks.json
Aug 28 13:27:54 ssserver ssserver[1259]: 2018-08-28 13:27:54 INFO     loading libcrypto from libcrypto.so.10
Aug 28 13:27:54 ssserver ssserver[1259]: 2018-08-28 13:27:54 INFO     starting server at 0.0.0.0:50013

 

验证Shadowsocks客户端服务是否正常运行


curl --socks5 127.0.0.1:1080 http://httpbin.org/ip
  • Shadowsock客户端服务已正常运行,则结果如下:
  • {"origin": "x.x.x.x" #你的Shadowsock服务器IP}

安装配置privoxy

安装privoxy


yum install privoxy -y
systemctl enable privoxy
systemctl start privoxy
systemctl status privoxy

 

配置privoxy  修改配置文件/etc/privoxy/config


listen-address 127.0.0.1:8118 # 8118 是默认端口,不用改
forward-socks5t / 127.0.0.1:1080 . #转发到本地端口,注意最后有个点

 

设置http、https代理:


# vi /etc/profile 在最后添加如下信息
PROXY_HOST=127.0.0.1
export all_proxy=http://$PROXY_HOST:8118
export ftp_proxy=http://$PROXY_HOST:8118
export http_proxy=http://$PROXY_HOST:8118
export https_proxy=http://$PROXY_HOST:8118
export no_proxy=localhost,172.16.0.0/16,192.168.0.0/16.,127.0.0.1,10.10.0.0/16

# 重载环境变量
source /etc/profile

 

测试代理

[root@aniu-k8s ~]# curl -I www.google.com
HTTP/1.1 200 OK
Date: Fri, 26 Jan 2018 05:32:37 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2018-01-26-05; expires=Sun, 25-Feb-2018 05:32:37 GMT; path=/; domain=.google.com
Set-Cookie: NID=122=PIiGck3gwvrrJSaiwkSKJ5UrfO4WtAO80T4yipOx4R4O0zcgOEdvsKRePWN1DFM66g8PPF4aouhY4JIs7tENdRm7H9hkq5xm4y1yNJ-sZzwVJCLY_OK37sfI5LnSBtb7; expires=Sat, 28-Jul-2018 05:32:37 GMT; path=/; domain=.google.com; HttpOnly
Transfer-Encoding: chunked
Accept-Ranges: none
Vary: Accept-Encoding
Proxy-Connection: keep-alive

 

取消使用代理


while read var; do unset $var; done < <(env | grep -i proxy | awk -F= '{print $1}')

 

查看后台进程
[root@kcw ~]# ps aux |grep sslocal |grep -v "grep"
root 7587 0.1 0.1 184180 8624 pts/0 S 08:44 0:03 /usr/bin/python /usr/bin/sslocal -c /etc/shadowsocks.json /dev/null

---------------------------服务端------------------------------
CentOS7下安装配置shadowsocks
服务器基本操作
链接服务器:ssh root@xxxx.xxx.xxx.xxx -p XXXX < xxx:ip,XXXX:port 修改密码:passwd 断开链接:close 安装 pip pip是 python 的包管理工具。在本文中将使用 python 版本的 shadowsocks,此版本的 shadowsocks 已发布到 pip 上,因此我们需要通过 pip 命令来安装。 在控制台执行以下命令安装 pip:


curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py

安装epel和pip
安装epel扩展源,并采用Python包管理工pip安装。
pip是 python 的包管理工具。在本文中将使用 python 版本的 shadowsocks,此版本的 shadowsocks 已发布到 pip 上,因此需要通过 pip 命令来安装。


sudo yum -y install epel-release
sudo yum -y install python-pip

安装Shadowsocks
在命令行运行下面的命令安装shadowsocks:


pip install --upgrade pip
pip install shadowsocks

配置
普通配置
安装完成后,需要创建配置文件/etc/shadowsocks.json,内容如下:


{
    "server": "0.0.0.0",
    "server_port": 1111,
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "password": "mypassword",
    "timeout": 300,
    "method": "aes-256-cfb",
    "fast_open": false
}

字段 说明 是否必须
server 服务端监听地址,使用0.0.0.0也可以 是
server_port 服务端端口 是
local_address 本地监听地址,默认即可 否
local_port 本地监听端口,需要跟其他进程不重复 否
password 密码 是
timeout 超时时间(秒) 否
method 加密方法,可选aes-128-cfb, aes-192-cfb, aes-256-cfb, bf-cfb, cast5-cfb, des-cfb, rc4-md5, chacha20, salsa20, rc4, table 是
fast_open 是否启用TCP-Fast-Open,true或者false 否
以上三项信息在配置 shadowsocks 客户端时需要配置一致,具体说明可查看 shadowsocks 的帮助文档。
配置多个用户
除了上面的配置,也可能使用多端口多密码配置,彼此没有干扰,内容如下:


{
    "server":"0.0.0.0",
    "local_address":"127.0.0.1",
    "local_port":1080,
    "port_password": {           --每个端口对应一个密码
        "1111": "password1",
        "1112": "password2",
        "1113": "password3"
    },
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open":false
}

进程管理
启动进程


sudo ssserver -c /etc/shadowsocks.json -d start

关闭进程


sudo ssserver -c /etc/shadowsocks.json -d stop

重启进程


sudo ssserver -c /etc/shadowsocks.json -d restart

检查进程
分别使用ps和netstat命令查看进程和端口


sudo yum -y install net-tools
ps aux |grep shadowsocks
netstat -tunpl|grep 1111

使用Supervisord管理进程
如果未使用Supervisord管理后台进程,可以参考文章下面的连接设置开机自启动等。
管理配置
针对shadowsocks的Supervisord的配置可以参考下面的配置。


[program:shadowsocks]
process_name=%(program_name)s_%(process_num)02d
command=ssserver -c /etc/shadowsocks.json
autostart=true
autorestart=true
user=nobody
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/shdowsocks.out.log
stderr_logfile=/var/log/shdowsocks.err.log

重载配置
重载配置之前请先保证shadowsocks进程未启动。


sudo supervisorctl reread && sudo supervisorctl update

文章来源参考:
https://curder.gitbooks.io/blog/content/centos/installing-configuration-shadowsocks-under-centos-7.html
https://blog.csdn.net/yanzi1225627/article/details/51121507/
https://blog.csdn.net/wh211212/article/details/79165415
https://blog.csdn.net/lell3538/article/details/50812161

在Linode上搭建Shadowsocks服务器


https://i.jakeyu.top/2017/03/16/centos%E4%BD%BF%E7%94%A8SS%E7%BF%BB%E5%A2%99/

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言