Docker启动Shadowsocks+kcptun实现网上冲浪

  • 2019-03-06
  • 0
  • 0

拉下docker镜像,并启用

docker pull mritd/shadowsocks
docker run --privileged -dt --name ss -p 6443:6443 -p 6443:6443/udp -p 6500:6500/udp -e SS_CONFIG="-s 0.0.0.0 -p 6443 -m chacha20 -k test123 -u " -e KCP_MODULE="kcpserver" -e KCP_CONFIG="-t 127.0.0.1:6443 -l :6500 -mode fast2" -e KCP_FLAG="true" mritd/shadowsocks -r /dev/urandom

镜像参数

支持选项

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

选项描述

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

ss参数

ss-[local|redir|server|tunnel|manager]

   -s <server_host>           Host name or IP address of your remote server.

   -p <server_port>           Port number of your remote server.

   -l <local_port>            Port number of your local server.

   -k <password>              Password of your remote server.

   -m <encrypt_method>        Encrypt method: rc4-md5,
                              aes-128-gcm, aes-192-gcm, aes-256-gcm,
                              aes-128-cfb, aes-192-cfb, aes-256-cfb,
                              aes-128-ctr, aes-192-ctr, aes-256-ctr,
                              camellia-128-cfb, camellia-192-cfb,
                              camellia-256-cfb, bf-cfb,
                              chacha20-ietf-poly1305,
                              xchacha20-ietf-poly1305,
                              salsa20, chacha20 and chacha20-ietf.
                              The default cipher is chacha20-ietf-poly1305.

   [-a <user>]                Run as another user.

   [-f <pid_file>]            The file path to store pid.

   [-t <timeout>]             Socket timeout in seconds.

   [-c <config_file>]         The path to config file.

   [-n <number>]              Max number of open files.

   [-i <interface>]           Network interface to bind.
                              (not available in redir mode)

   [-b <local_address>]       Local address to bind.

   [-u]                       Enable UDP relay.
                              (TPROXY is required in redir mode)

   [-U]                       Enable UDP relay and disable TCP relay.
                              (not available in local mode)

   [-L <addr>:<port>]         Destination server address and port
                              for local port forwarding.
                              (only available in tunnel mode)

   [-6]                       Resolve hostname to IPv6 address first.

   [-d <addr>]                Name servers for internal DNS resolver.
                              (only available in server mode)

   [--reuse-port]             Enable port reuse.

   [--fast-open]              Enable TCP fast open.
                              with Linux kernel > 3.7.0.
                              (only available in local and server mode)

   [--acl <acl_file>]         Path to ACL (Access Control List).
                              (only available in local and server mode)

   [--manager-address <addr>] UNIX domain socket address.
                              (only available in server and manager mode)

   [--mtu <MTU>]              MTU of your network interface.

   [--mptcp]                  Enable Multipath TCP on MPTCP Kernel.

   [--no-delay]               Enable TCP_NODELAY.

   [--executable <path>]      Path to the executable of ss-server.
                              (only available in manager mode)

   [-D <path>]                Path to the working directory of ss-manager.
                              (only available in manager mode)

   [--key <key_in_base64>]    Key of your remote server.

   [--plugin <name>]          Enable SIP003 plugin. (Experimental)

   [--plugin-opts <options>]  Set SIP003 plugin options. (Experimental)

   [-v]                       Verbose mode.

环境变量参数

环境变量    作用  取值
SS_MODULE   shadowsocks 启动命令    ss-local、ss-manager、ss-nat、ss-redir、ss-server、ss-tunnel
SS_CONFIG   shadowsocks-libev 参数字符串     所有字符串内内容应当为 shadowsocks-libev 支持的选项参数
KCP_FLAG    是否开启 kcptun 支持  可选参数为 true 和 false,默认为 fasle 禁用 kcptun
KCP_MODULE  kcptun 启动命令     kcpserver、kcpclient
KCP_CONFIG  kcptun 参数字符串    所有字符串内内容应当为 kcptun 支持的选项参数
RNGD_FLAG   是否使用 /dev/urandom 生成随机数     可选参数为 true 和 false,默认为 fasle 不使用

GCE 随机数生成错误

如果在 GCE 上使用本镜像,在特殊情况下可能会出现 This system doesn’t provide enough entropy to quickly generate high-quality random numbers. 错误; 这种情况是由于宿主机没有能提供足够的熵来生成随机数导致,修复办法可以考虑增加 -r 选项来使用 /dev/urandom 来生成,不过并不算推荐此种方式;-r 选项可能需要配合 docker 的 –privileged 选项启用特权模式来使用

流程


1、tcp请求>ss客户端
2、ss客户端>kcp客户端(udp)
3、kcp客户端>kcp服务端(udp)
4、kcp服务端>ss服务端(tcp)
5、获取响应后原路返回

说明

以上是server的搭建,客户端ss要配置为本地127.0.0.1,端口自定义,这个端口只有kcp client会用到。

地址

docker镜像:https://github.com/mritd/dockerfile
kcp客户端:https://github.com/xtaci/kcptun
ss客户端:https://github.com/shadowsocks/shadowsocks-windows.git

以上,谢谢!

评论

还没有任何评论,你来说两句吧