#linux #proxy server #shadowsocks

搭建私有的代理服务器

简介

当你想要去 google 查询资料时,当你玩某款海外游戏而延时高时,你可能需要使用代理服务来加速你的网络。

你可以购买服务,但懂技术的你为何还要去买其它人提供服务呢?来跟着这个教程轻松搭建私有的代码服务。

背景

最近买了三台服务器,准备近期搭建一套 k8s 集群学习一下,因为其中一步需要去 google 的服务拉取镜像,所以就有了这一篇文章。

准备

你需要准备一台海外的服务器,可以访问国内外网络,延迟不是很高的服务器。

为了便于安装,你需要先安装 Docker

安装 Docker (已安装的忽略)

开始

安装 Shadowsocks 服务端

$ docker run --restart always -dt --name ss -p 8989:8989 -p 8990:8990/udp mritd/shadowsocks -s "-s 0.0.0.0 -p 8989 -m aes-256-cfb -k youpassword --fast-open" -x -e "kcpserver" -k "-t 127.0.0.1:8989 -l :8990 --mode fast2"

命令解释

  • -s "-s 0.0.0.0 -p 8989 -m aes-256-cfb -k youpassword --fast-open" : -s 后面的字符串为 shadowsocks-libev 的参数
    -s 0.0.0.0 编写的 IP, 全 0 表示绑定在所有 IP上,-p 8989 绑定端口,可以改成你想绑定的端,
    -m aes-256-cfb 加密方式,
    -k youpassword 设置密码,youpassword请改成你想设置的密码,
    --fast-open 开启 tcp fast open, 这是一种能够在TCP连接建立阶段传输数据的机制。使用这种机制可以将数据交互提前,降低应用层事务的延迟。
  • -x : 开启 kcptun 支持
  • -e "kcpserver" : 指定 kcptun 命令
  • -k "-t 127.0.0.1:8989 -l :8990 --mode fast2" : kcptun 参数字符串,
    -t 127.0.0.1:8989 绑定的 IP 与端口,
    -l :8990 kcptun 服务器监听地址(默认值:29900),
    --mode fast2 配置文件:fast3,fast2,fast,normal,manual(默认值:“fast”)更多详细的 kcptun 配置可见 kcptun 项目

执行命令成功后

按以上命令启动后,你的代理服务 shadowsocks 将启动在 8989, 你的 kcptun 服务将启动在 8990端口,如果你是以下客户端,可下载相应的客户端进行连接。

其它客户端可自行寻找

Shadowsocks 支持选项

  • -m : 指定 shadowsocks 命令,默认为 ss-server
  • -s : shadowsocks-libev 参数字符串
  • -x : 开启 kcptun 支持
  • -e : 指定 kcptun 命令,默认为 kcpserver
  • -k : kcptun 参数字符串
  • -r : 使用 /dev/urandom 来生成随机数

Shadowsocks 选项描述

  • -m : 参数后指定一个 shadowsocks 命令,如 ss-local,不写默认为 ss-server;该参数用于 shadowsocks 在客户端和服务端工作模式间切换,可选项如下: ss-localss-managerss-natss-redirss-serverss-tunnel
  • -s : 参数后指定一个 shadowsocks-libev 的参数字符串,所有参数将被拼接到 ss-server
  • -x : 指定该参数后才会开启 kcptun 支持,否则将默认禁用 kcptun
  • -e : 参数后指定一个 kcptun 命令,如 kcpclient,不写默认为 kcpserver;该参数用于 kcptun 在客户端和服务端工作模式间切换,可选项如下: kcpserverkcpclient
  • -k : 参数后指定一个 kcptun 的参数字符串,所有参数将被拼接到 kcptun
  • -r : 修复在 GCE 上可能出现的 This system doesn't provide enough entropy to quickly generate high-quality random numbers. 错误

Kcptun 支持选项及解释

  • –listen value, -l value kcp server listen address (default: “:29900”)
  • –target value, -t value target server address (default: “127.0.0.1:12948”)
  • –key value pre-shared secret between client and server (default: “it’s a secrect”) [$KCPTUN_KEY]
  • –crypt value aes, aes-128, aes-192, salsa20, blowfish, twofish, cast5, 3des, tea, xtea, xor, sm4, none (default: “aes”)
  • –mode value profiles: fast3, fast2, fast, normal, manual (default: “fast”)
  • –mtu value set maximum transmission unit for UDP packets (default: 1350)
  • –sndwnd value set send window size(num of packets) (default: 1024)
  • –rcvwnd value set receive window size(num of packets) (default: 1024)
  • –datashard value, –ds value set reed-solomon erasure coding - datashard (default: 10)
  • –parityshard value, –ps value set reed-solomon erasure coding - parityshard (default: 3)
  • –dscp value set DSCP(6bit) (default: 0)
  • –nocomp disable compression
  • –sockbuf value (default: 4194304)
  • –keepalive value (default: 10)
  • –snmplog value collect snmp to file, aware of timeformat in golang, like: ./snmp-20060102.log
  • –snmpperiod value snmp collect period, in seconds (default: 60)
  • –pprof start profiling server on :6060
  • –log value specify a log file to output, default goes to stderr
  • –quiet to suppress the ‘stream open/close’ messages
  • -c value config from json file, which will override the command from shell
  • –help, -h show help
  • –version, -v print the version
Author Mo 最后更新: 2018-12-09 18:17:09