> 科学上网是一个互联网工作者必备的求知途径 > 本文将记录博主安装科学上网服务器的过程 > 本次部署环境:国外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客户端 - [Github下载地址](https://github.com/shadowsocks/shadowsocks-windows/releases) - [本站下载地址](https://download.kkwen.cn/pkg/shadowsocks-winodws/ss-4.1.6.zip) - 若运行报错可需要安装当前系统支持的最新.NET Framework #### 配置 填写对应配置  右击shadowsock图标选择启动即可 ## 2. 使用Docker部署shadowsocks 本次使用了dockerhub上[mritd/shadowsocks](https://hub.docker.com/r/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 ```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 ``` Last modification:June 14th, 2019 at 02:35 pm © 允许规范转载 Support 如果觉得我的文章对你有用 ×Close Appreciate the author Sweeping payments