运维百科

linux配置shadowsocks客户端代理全局模式

客户端为CentOS(一般 Linux 环境)时,(尤其是命令行里的命令)使用shadowsocks 搭配Privoxy上网的方法。

安装客户端shadowsocks。其实 shadowsocks 安装时是不分客户端还是服务器端的,只不过安装后有两个脚本一个是sslocal代表以客户端模式工作,一个是ssserver代表以服务器端模式工作。

依次执行上述两个命令,先安装 Python 的 pip,然后安装 shadowsocks。

yum install epel-release –y
yum install autoconf automake libtool     #安装依赖包
yum groupinstall -y "Development Tools"  #安装开发工具组,可能无法使用。
yum install vim gcc wget ntpdate -y
yum install python python-pip
pip install --upgrade pip
curl --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python
pip install shadowsocks
/usr/bin/ssserver
/usr/bin/sslocal

 然后执行下述命令后台启动:

执行前请更改命令中的默认参数

nohup sslocal -s your_server_ip -p your_server_port -l 1080 -k your_server_passwd -t 600 -m rc4-md5 > /dev/null

示例:nohup sslocal -s 1.1.1.1 -p 12888 -l 1080 -k passwd123 -t 600 -m aes-256-cfb > /dev/null 2>&1 &

注意
1, 使用的是 sslocal 这个命令,表示 shadowsocks 以客户端模式工作
2, 将上述命令里的 your_server_ip,your_server_port,your_server_passwd 换成自己的,这三个分别代表服务器 ip,服务器上 shadowsocks 的端口以及密码。后面的 rc4-md5 加密方式也要换成跟 server 端一致。
3, 前面的 nohub 表示后台执行,否则将会阻塞 shell 端口.
为了更方便,建议新建一个.json 的文件,将上述信息放里面,如新建 /etc/shadowsocks.json 文件,内容为:

ps : 用的时候把注释删除

vi /etc/shadowsocks.json
配置如下:
{
    "server":"your_server_ip",    #ss服务器IP
    "server_port":your_server_port,    #端口
    "local_address": "127.0.0.1",    #本地ip
    "local_port":1080,    #本地端口
    "password":"your_server_passwd",    #连接ss密码
    "timeout":300,    #等待超时
    "method":"rc4-md5",    #加密方式
    "fast_open": false,    # true 或 false。如果你的服务器 Linux 内核在3.7+,可以开启 fast_open 以降低延迟。开启方法: echo 3 > /proc/sys/net/ipv4/tcp_fastopen 开启之后,将 fast_open 的配置设置为 true 即可
    "workers": 1    # 工作线程数
}

然后运行

nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &

启动 shadowsocks。
如果想增加开启自动启动,执行:

echo "nohup sslocal -c /etc/shadowsocks.json/dev/null 2>&1 &" /etc/rc.local 执行
ps aux |grep sslocal |grep -v "grep" 查看后台 sslocal 是否运行。

安装 Privoxy

    安好了 shadowsocks 后,但它是 socks5 代理,我门在 shell 里执行的命令,发起的网络请求现在还不支持 socks5 代理,只支持 http/https 代理。为了我门需要安装 privoxy 代理,它能把电脑上所有 http 请求转发给 shadowsocks。

    访问官网 http://www.privoxy.org/或https://directory.fsf.org/wiki/Privoxy获得 Privoxy 的源码:privoxy-3.0.24-stable-src.tar.gz

tar -vxf privoxy-3.0.26-stable-src.tar.gz
useradd privoxy -s /sbin/nologin
autoheader && autoconf
./configure
make && make install
vim +783 /usr/local/etc/privoxy/config
注释掉703行的 127.0.0.1:8118
在最后添加如下
listen-address  127.0.0.1:8118             #在8118端口监听
forward-socks5  /   127.0.0.1:1080  .    #后面有点,转发请求到1080端口
执行如下命令启动 privoxy
systemctl enable privoxy
service privoxy restart
systemctl status privoxy
配置 /etc/profile
执行 vim /etc/profile, 添加如下三句:
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export ftp_proxy=http://127.0.0.1:8118 #第三句 ftp 的代理根据需要,不需要的话可以不添加。
source /etc/profile
curl --socks5 127.0.1:1080 http://httpbin.org/ip  #测试

如果不能访问,请重启机器,依次打开 shadowsocks 和 privoxy 再测试.

至此,完成配置。


参数

 Usage: ss [ OPTIONS ]

       ss [ OPTIONS ] [ FILTER ]

   -h, --help           this message      #显示帮助菜单

   -V, --version        output version information      #输出版本信息

   -n, --numeric        don't resolve service names    #不解析服务名

   -r, --resolve       resolve host names   #解析主机名

   -a, --all            display all sockets     #显示所有的套接字

   -l, --listening      display listening sockets   #显示监听状态的socket

   -o, --options       show timer information   #显示计时器信息

   -e, --extended      show detailed socket information #展示详细的socket信息

   -m, --memory        show socket memory usage #展示socket的内存使用

   -p, --processes      show process using socket   #展示使用socket的进程

   -i, --info           show internal TCP information   #展示tcp内部信息

   -s, --summary        show socket usage summary   #展示socket使用汇总

   -4, --ipv4          display only IP version 4 sockets    #只显示ipv4的sockets

   -6, --ipv6          display only IP version 6 sockets    #只显示ipv6的sockets

   -0, --packet display PACKET sockets  #显示包经过的网络接口

   -t, --tcp            display only TCP sockets    #显示tcp套接字

   -u, --udp            display only UDP sockets    #显示udp套接字

   -d, --dccp           display only DCCP sockets   #显示dccp套接字

   -w, --raw            display only RAW sockets    #显示raw套接字

   -x, --unix           display only Unix domain sockets    #显示unix套接字

   -f, --family=FAMILY display sockets of type FAMILY   #显示指定类型的套接字

   -A, --query=QUERY, --socket=QUERY    #查看某种类型

       QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

   -D, --diag=FILE      Dump raw information about TCP sockets to FILE  #将关于TCP套接字的原始信息转储到文件中

   -F, --filter=FILE   read filter information from FILE #使用此参数指定的过滤规则文件,过滤某种状态的连接

       FILTER := [ state TCP-STATE ] [ EXPRESSION ]

 

用法

1 . 常用ss命令

ss -l 显示本地打开的所有端口

ss -pl 显示每个进程具体打开的socket

ss -t -a 显示所有tcp socket

ss -u -a 显示所有的UDP Socekt

ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接

ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接

ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程

ss -s 列出当前socket详细信息

 


本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!

2
分享到:

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址