科学上网是一个互联网工作者必备的求知途径
本文将记录博主安装科学上网服务器的过程
本次部署环境:国外vps为server端,国内linux或windows为客户端

1. 手动原始安装

shadowsocks linux版安装包既有服务端程序,也有客户端程序

基于pip安装

~]# yum install python-setuptools && easy_install pip
~]# pip install shadowsocks

安装后服务端程序为ssserver,客户端程序为sslocal

基于yum安装

yum源如下,参考https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/

[librehat-shadowsocks]
name=Copr repo for shadowsocks owned by librehat
baseurl=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/epel-7-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1
~]# yum -y install shadowsocks-libev

安装后服务端程序为ss-server,客户端程序为ss-local

服务端配置

配置文件

手动新建配置文件,注释要去掉

~]# vim /ss/server/shadowsock.json
{
    "server":"123.123.123.123", #对外提供ss服务的ip,一般为外网ip
    "server_port":8388,         #提供ss服务的端口
    "password":"hello",         #连接ss服务器的密码
    "timeout":300,              #连接等待超时时间
    "method":"aes-256-cfb"      #加密算法
}

启动

~]# ss-server -c /ss/server/shadowsock.json
或
~]# ssserver -c /ss/server/shadowsock.json

后台启动

~]# nohup ss-server -c /ss/server/shadowsock.json & 
或
~]# nohup ssserver -c /ss/server/shadowsock.json &

停止

~]# ps aux | grep shadowsock
~]# kill -9 对应pid

客户端配置

linux客户端

新建配置文件,注释要去掉

~]# vim /ss/client/shadowsocks_client.json
{
    "server":"123.123.123.123",  #服务器ip
    "server_port":8388,          #服务器ss端口
    "local_address": "0.0.0.0",  #本地监听的地址(本地共享,一般为局域网linux客户端的ip地址)
    "local_port":1080,           #本地监听端口
    "password":"hello",          #服务器ss密码
    "timeout":300,               #超时时间
    "method":"aes-256-cfb"       #加密算法,和服务器保持一致
}

连接ss服务器

和服务端启动方式一致,仅需把ss-server(ssserver)换成ss-local(sslocal)

浏览器使用ss

google浏览器使用SwitchyOmega插件,配置ss代理

socks5转http代理(比较简便的软件有privoxy)

安装

centos: yum -y install privoxy
ubuntu: apt-get -y install privoxy

修改配置文件

~]# vim /etc/privoxy/config
    listen-address  127.0.0.1:8118          #监听的地址和端口(浏览器代理需填入的地址)
    forward-socks5t   /    127.0.0.1:1080 . #此行需开启,指定连接的ss地址和端口

linux命令行使用代理(使用http代理)

为当前终端设置代理

~]# export http_proxy='http://127.0.0.1:8118'
~]# export https_proxy='https://127.0.0.1:8118'

取消代理

~]# unset http_proxy
~]# unset https_proxy

windows客户端

配置

填写对应配置
20156184427653750.jpg

右击shadowsock图标选择启动即可

2. 使用Docker部署shadowsocks

本次使用了dockerhub上mritd/shadowsocks的镜像

服务端启动

~]# docker run -dt --name ssserver -p ${server_listen_port}:6443 mritd/shadowsocks -m "ss-server" -s "-s 0.0.0.0 -p 6443 -m chacha20-ietf-poly1305 -k ${shadowsocks_password}"
其中需要替换以下项
${server_listen_port} 服务器监听端口,客户端需要连接此端口,不建议使用8388,容易被和谐
${shadowsocks_password} shadowsocks的密码,客户端连接服务端时需要使用

-m chacha20-ietf-poly1305 为加密算法,默认就行

客户端启动

~]# docker run -dt --name ssclient -p ${local_port}:1080 mritd/shadowsocks -m "ss-local" -s "-s ${server_addr} -p ${server_listen_port} -b 0.0.0.0 -l 1080 -m chacha20-ietf-poly1305 -k ${shadowsocks_password}"
其中需要替换以下项
${local_port} 本地客户端监听的端口,类似局域网共享功能,一般为0.0.0.0
${server_addr} 服务端ip地址
${server_listen_port} Server端设置的参数,服务器监听端口
${shadowsocks_password} Server端设置的参数,shadowsocks的密码

3. Docker部署Privoxy

privoxy能将socks5协议转为HTTP协议

简单使用

要求需要部署的机器上已经部署了ss,因为privoxy使用的是127.0.0.1:1080地址和ss通信,若需要修改通信地址需要自己修改Dockerfile
docker run -d --name=privoxy -p 8118:8118 aik8s/privoxy

Dockerfile

FROM alpine
MAINTAINER kwen



#Default to UTF-8 file.encoding
ENV LANG C.UTF-8
#设置alpine时区
ENV TIMEZONE Asia/Shanghai
#alpine自带的包含dl-cdn的域名非常慢,需要修改后才能下载数据。
#RUN apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone

RUN   echo "http://mirrors.aliyun.com/alpine/v3.9/main/" > /etc/apk/repositories \
        &&  echo "http://mirrors.aliyun.com/alpine/v3.9/community" >> /etc/apk/repositories \
        && rm -rf /var/cache/apk/* \
        && rm -rf /tmp/*  \
        &&  chmod a+x /etc/apk/repositories \
        &&  chmod a+x /etc/apk/arch \
        #&& sed -i -e 's/dl-cdn/dl-4/g' /etc/apk/repositories
        && apk update  \
        && apk add -U tzdata && ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo "${TIMEZONE}" > /etc/timezone  \
        && rm -rf /var/cache/apk/*  \
        && rm -rf /tmp/*

RUN set -xe \
    && apk add -U curl privoxy \
    && curl -sSL https://github.com/tianon/gosu/releases/download/1.9/gosu-amd64 > /usr/sbin/gosu \
    && chmod +x /usr/sbin/gosu \
    && apk del curl \
    && rm -rf /var/cache/apk/*

RUN sed -i -e '/^listen-address/s/127.0.0.1/0.0.0.0/' \
           -e 's@^#[[:space:]]*forward-socks5t.*127.0.0.1.*@forward-socks5t   /     172.17.0.1:1080 .@' \
           -e '/^#debug/s/#//' /etc/privoxy/config

VOLUME /etc/privoxy

EXPOSE 8118

CMD gosu privoxy privoxy --no-daemon /etc/privoxy/config
最后修改:2019 年 06 月 14 日
如果觉得我的文章对你有用,请随意赞赏