使用 Shadowsocks 创建 SOCKSS 代理服务器

发布时间:2023-09-06 17:02:25编辑:文明阅读(417)

    使用 Shadowsocks 创建 SOCKSS 代理服务器

    本指南向您展示如何在 Ubuntu 和 CentOS 上使用 Shadowsocks 创建 SOCKS5 代理服务器。Shadowsocks 是一个轻量级的 SOCKS5 Web 代理工具,主要用于绕过网络审查并阻止某些网站和 Web 协议。完整的设置需要一个 Linode 服务器来托管 Shadowsocks 守护进程,以及安装在 PC、Mac、Linux 或移动设备上的客户端。

    与其他代理软件不同,Shadowsocks 流量被设计为第三方监控工具既无法从其他流量中辨别出来,也能够伪装成正常的直连。通过 Shadowsocks 传递的数据经过加密,以提高安全性和隐私性。

    由于目前没有适用于 Ubuntu 或 CentOS 的 Shadowsocks 软件包,因此本指南介绍了如何从源代码构建 Shadowsocks。

    在你开始之前

    1. 本指南中的命令需要 root 权限。要以具有 sudo 权限的提升用户身份运行这些步骤,请在每个命令前面加上sudo

    2. 有效的防火墙是必要的安全措施。为 UFW、FirewallD 和 Iptables提供了防火墙指令。要在 Linode 上配置防火墙,请访问以下指南之一:

    什么是 SOCKS5 代理服务?

    SOCKS5 是 SOCKS 的互联网协议,有助于通过客户端和服务器之间的代理路由数据包。为了进行安全通信,SOCKS5 使用三种不同的身份验证模式:空身份验证、基于 GSS-API 的身份验证以及基于用户名密码的身份验证。

    当 SOCKS5 使用 NULL 身份验证时,客户端和服务器之间的任何请求都会连接到设置的代理,而不需要任何身份验证。通过 GSS API 身份验证,可以在操作系统级别验证客户端或服务器的身份以进行身份验证。

    基于用户名和密码的身份验证使用凭据连接到代理。

    什么是 Shadowsocks?

    Shadowsocks 是一个开源、免费的加密协议客户端,旨在在客户端和服务器之间安全地传输信息。它使用异步输入输出并由事件驱动来提供速度。Shadowsocks 不是代理,但它允许连接到第 3 方 SOCKS5 代理连接。它还支持 UDP 流量。

    安装 Shadowsocks 服务器

    如何在 Ubuntu 上运行 ShadowSocks?

    要在 Ubuntu Server 上运行并安装 Shadowsocks,请按照以下步骤操作:

    1. 在 Ubuntu 上下载软件包并将其更新到最新版本

       apt update && apt upgrade -yuf
    2. 通过运行以下命令在 Ubuntu 服务器上安装依赖项:

       apt install -y --no-install-recommends gettext build-essential autoconf libtool libpcre3-dev \
       asciidoc xmlto libev-dev libudns-dev automake libmbedtls-dev \
       libsodium-dev git python-m2crypto libc-ares-dev
    3. 导航到/optUbuntu 上的目录并下载 Shadowsocks Git 模块:

       cd /opt
       git clone https://github.com/shadowsocks/shadowsocks-libev.git
       cd shadowsocks-libev
       git submodule update --init --recursive \
    4. 安装 Shadowsocks-libev:

       ./autogen.sh
       ./configure
       make && make install

    如何在 CentOS 7 上运行 ShadowSocks?

    要在 CentOS7 上运行并安装 Shadowsocks,请按照以下步骤操作:

    1. 下载软件包并将其更新到最新版本

       yum update && yum upgrade -y
       yum install epel-release -y
    2. CentOS7上安装依赖

       yum install -y gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto udns-devel \
       libev-devel libsodium-devel mbedtls-devel git m2crypto c-ares-devel
    3. 导航到 CentOS7 上的 /opt 目录并下载 Shadowsocks Git 模块:

       cd /opt
       git clone https://github.com/shadowsocks/shadowsocks-libev.git
       cd shadowsocks-libev
       git submodule update --init --recursive
    4. 安装 Shadowsocks-libev:

       ./autogen.sh
       ./configure
       make && make install

    如何使用 Shadowsocks Libev?

    Shadowsocks libev 是一个轻量级、纯基于 C 的嵌入式设备代理实现。要在安装后使用 Shadowsocks libev,只需将系统用户添加到 Shadowsocks,并创建一个包含其配置文件的目录。

    配置 Shadowsocks 服务器

    1. 为Shadowsocks创建一个新的系统用户:

      乌班图16.04

       adduser --system --no-create-home --group shadowsocks

      操作系统7

       adduser --system --no-create-home -s /bin/false shadowsocks
    2. 为配置文件创建一个新目录:

       mkdir -m 755 /etc/shadowsocks
    3. 创建位于 的 Shadowsocks 配置文件/etc/shadowsocks/shadowsocks.json。将下面列出的内容粘贴到文件中,注意shadowsocks.json 细目表中每个属性的说明。请按照以下说明确定应为每个属性设置的值。


      • 文件:/etc/shadowsocks/shadowsocks.json



      • {    "server":"your_public_IP_address",    "server_port":8388,    "password":"your_password",    "timeout":300,    "method":"aes-256-gcm",    "fast_open": true}

    Shadowsocks.json 细分

    财产描述可能的值
    服务器输入服务器的公共 IP 地址。用户确定
    服务器端口Shadowsocks 侦听此端口。使用默认值8388用户确定
    密码连接密码。设置一个强密码。用户确定
    暂停连接超时(以秒为单位)。这里默认值应该足够了。用户确定
    方法加密方法。建议使用 AEAD 算法。加密方式
    快速打开减少打开时的延迟。只能与内核版本 3.7.1 或更高版本一起使用。使用 来检查内核版本uname -rtrue/false
    名称服务器内部 DNS 解析器的名称服务器。用户确定

    优化 Shadowsocks

    对系统内核应用以下优化,以确保 Shadowsocks 安装顺利运行。

    1. 创建/etc/sysctl.d/local.conf系统优化文件并将以下内容粘贴到文件中:


      重要的


      这些设置为 Shadowsocks 提供最佳的内核配置。如果您之前出于任何原因配置过系统内核设置,请确保不存在冲突。


      • 文件:/etc/sysctl.d/local.conf


      • # max open files

      • fs.file-max = 51200

      • # max read buffer

      • net.core.rmem_max = 67108864

      • # max write buffer

      • net.core.wmem_max = 67108864

      • # default read buffer

      • net.core.rmem_default = 65536

      • # default write buffer

      • net.core.wmem_default = 65536

      • # max processor input queue

      • net.core.netdev_max_backlog = 4096

      • # max backlog

      • net.core.somaxconn = 4096

      • # resist SYN flood attacks

      • net.ipv4.tcp_syncookies = 1

      • # reuse timewait sockets when safe

      • net.ipv4.tcp_tw_reuse = 1

      • # turn off fast timewait sockets recycling

      • net.ipv4.tcp_tw_recycle = 0

      • # short FIN timeout

      • net.ipv4.tcp_fin_timeout = 30

      • # short keepalive time

      • net.ipv4.tcp_keepalive_time = 1200

      • # outbound port range

      • net.ipv4.ip_local_port_range = 10000 65000

      • # max SYN backlog

      • net.ipv4.tcp_max_syn_backlog = 4096

      • # max timewait sockets held by system simultaneously

      • net.ipv4.tcp_max_tw_buckets = 5000

      • # turn on TCP Fast Open on both client and server side

      • net.ipv4.tcp_fastopen = 3

      • # TCP receive buffer

      • net.ipv4.tcp_rmem = 4096 87380 67108864

      • # TCP write buffer

      • net.ipv4.tcp_wmem = 4096 65536 67108864

      • # turn on path MTU discovery

      • net.ipv4.tcp_mtu_probing = 1

      • # for high-latency network

      • net.ipv4.tcp_congestion_control = hybla

      • # for low-latency network, use cubic instead

      • net.ipv4.tcp_congestion_control = cubic


    2. 应用优化:

      sysctl --system

    创建 Shadowsocks Systemd 服务

    Shadowsocks systemd 服务允许守护进程在系统启动时自动启动并在后台运行。

    1. 创建一个包含以下内容的 systemd 文件:

      • 文件:/etc/systemd/system/shadowsocks.service

      • [Unit]

      • Description=Shadowsocks proxy server


      • [Service]

      • User=root

      • Group=root

      • Type=simple

      • ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks/shadowsocks.json -a shadowsocks -v start

      • ExecStop=/usr/local/bin/ss-server -c /etc/shadowsocks/shadowsocks.json -a shadowsocks -v stop


      • [Install]

      • WantedBy=multi-user.target

    2. 启用并启动shadowsocks.service

    3. systemctl daemon-reloadsystemctl enable shadowsockssystemctl start shadowsocks

    为 Shadowsocks 客户端开放防火墙端口

    根据您的偏好,您可以使用 iptables、UFW 或 firewalld(仅限 CentOS 7)命令来完成此部分。

    8388为 Shadowsocks 客户端开放端口:

    iptables

    iptables -4 -A INPUT -p tcp --dport 8388 -m comment --comment "Shadowsocks server listen port" -j ACCEPT

    超细纤维束

    ufw allow proto tcp to 0.0.0.0/0 port 8388 comment "Shadowsocks server listen port"

    防火墙D

    firewall-cmd --permanent --zone=public --add-rich-rule='
        rule family="ipv4"
        port protocol="tcp" port="8388" accept'firewall-cmd --reload

    安装 Shadowsocks 客户端

    Shadowsocks 设置的第二阶段是在用户设备上安装客户端。这可能包括计算机、移动设备、平板电脑,甚至家庭网络路由器。支持的操作系统包括 Windows、macOS、iOS、Linux、Android 和 OpenWRT。

    macOS Shadowsocks 客户端

    1. 下载适用于 macOS 的 ShadowsocksX-NG GUI 客户端


    2. 在 Mac 上启动该应用程序。可通过新的状态菜单栏图标访问应用程序首选项。选择服务器首选项菜单项:


    3. “服务器首选项”窗口中,单击左下角的+ (加号)按钮。输入 Shadowsocks Linode 的详细信息。请务必选择您在 Linode 文件中列出的相同端口和加密方案shadowsocks.json然后,关闭窗口:

    Windows Shadowsocks 客户端

    1. 导航到Windows Shadowsocks页面。单击“下载”下的Shadowsocks-4.0.4.zip

    2. 将 .zip 文件的内容提取到任意文件夹中并运行Shadowsocks.exeShadowsocks 作为后台进程运行。在任务栏中找到 Shadowsocks 图标(可能位于“隐藏图标”任务栏菜单中),右键单击 Shadowsocks 图标,然后单击“编辑服务器”输入您保存在文件中的信息shadowsocks.json


    1. 再次右键单击 Shadowsocks 图标。将鼠标悬停在PAC上并选择Local PACSecure Local PAC

      要确认已选择 Linode 的 IP 地址,请将鼠标悬停在Servers上。

    2. 通过访问 IP 地址查找网站(例如ifconfig.co )验证 Shadowsocks 连接是否处于活动状态当连接按预期工作时,该网站会列出 Shadowsocks Linode 的公共 IP。

    如何知道 SOCKS5 代理是否正常工作?

    要检查 SOCKS5 代理是否正常工作,请打开终端并运行命令netstat以查看是否有开放端口:

    netstat -tlnp

    如果 SOCKS5 代理正在工作,您应该在终端中看到类似于以下内容的输出:

    tcp        0      0 232.222.333.414:8888          0.0.0.0:*               LISTEN

    测试 SOCKS5 代理是否正常工作的另一种方法是在代理的右侧端口上使用curl 命令。232.222.333.414对于托管在监听处的 SOCKS5 代理port 8080,请在终端中运行以下命令:

    timeout 5 curl -x socks5://232.222.333.414:8080 https://linode.com/

    如果 SOCKS5 代理在托管于 的代理上无法正常工作232.222.333.414,它会在我们的终端上返回超时。

      还没有小伙伴评论,快来抢沙发啦~~!