科学上网是一个互联网工作者必备的求知途径
本文将记录博主安装科学上网服务器的过程
本次部署环境:国外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下载地址
- 本站下载地址
- 若运行报错可需要安装当前系统支持的最新.NET Framework
配置
填写对应配置
右击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通信,若需要修改通信地址需要自己修改Dockerfiledocker 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