发布时间:2023-09-06 17:02:25编辑:文明阅读(417)
本指南向您展示如何在 Ubuntu 和 CentOS 上使用 Shadowsocks 创建 SOCKS5 代理服务器。Shadowsocks 是一个轻量级的 SOCKS5 Web 代理工具,主要用于绕过网络审查并阻止某些网站和 Web 协议。完整的设置需要一个 Linode 服务器来托管 Shadowsocks 守护进程,以及安装在 PC、Mac、Linux 或移动设备上的客户端。
与其他代理软件不同,Shadowsocks 流量被设计为第三方监控工具既无法从其他流量中辨别出来,也能够伪装成正常的直连。通过 Shadowsocks 传递的数据经过加密,以提高安全性和隐私性。
由于目前没有适用于 Ubuntu 或 CentOS 的 Shadowsocks 软件包,因此本指南介绍了如何从源代码构建 Shadowsocks。
本指南中的命令需要 root 权限。要以具有 sudo 权限的提升用户身份运行这些步骤,请在每个命令前面加上sudo
.
有效的防火墙是必要的安全措施。为 UFW、FirewallD 和 Iptables提供了防火墙指令。要在 Linode 上配置防火墙,请访问以下指南之一:
SOCKS5 是 SOCKS 的互联网协议,有助于通过客户端和服务器之间的代理路由数据包。为了进行安全通信,SOCKS5 使用三种不同的身份验证模式:空身份验证、基于 GSS-API 的身份验证以及基于用户名密码的身份验证。
当 SOCKS5 使用 NULL 身份验证时,客户端和服务器之间的任何请求都会连接到设置的代理,而不需要任何身份验证。通过 GSS API 身份验证,可以在操作系统级别验证客户端或服务器的身份以进行身份验证。
基于用户名和密码的身份验证使用凭据连接到代理。
Shadowsocks 是一个开源、免费的加密协议客户端,旨在在客户端和服务器之间安全地传输信息。它使用异步输入输出并由事件驱动来提供速度。Shadowsocks 不是代理,但它允许连接到第 3 方 SOCKS5 代理连接。它还支持 UDP 流量。
要在 Ubuntu Server 上运行并安装 Shadowsocks,请按照以下步骤操作:
在 Ubuntu 上下载软件包并将其更新到最新版本
apt update && apt upgrade -yuf
通过运行以下命令在 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
导航到/opt
Ubuntu 上的目录并下载 Shadowsocks Git 模块:
cd /opt git clone https://github.com/shadowsocks/shadowsocks-libev.git cd shadowsocks-libev git submodule update --init --recursive \
安装 Shadowsocks-libev:
./autogen.sh ./configure make && make install
要在 CentOS7 上运行并安装 Shadowsocks,请按照以下步骤操作:
下载软件包并将其更新到最新版本
yum update && yum upgrade -y yum install epel-release -y
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
导航到 CentOS7 上的 /opt 目录并下载 Shadowsocks Git 模块:
cd /opt git clone https://github.com/shadowsocks/shadowsocks-libev.git cd shadowsocks-libev git submodule update --init --recursive
安装 Shadowsocks-libev:
./autogen.sh ./configure make && make install
Shadowsocks libev 是一个轻量级、纯基于 C 的嵌入式设备代理实现。要在安装后使用 Shadowsocks libev,只需将系统用户添加到 Shadowsocks,并创建一个包含其配置文件的目录。
为Shadowsocks创建一个新的系统用户:
乌班图16.04
adduser --system --no-create-home --group shadowsocks
操作系统7
adduser --system --no-create-home -s /bin/false shadowsocks
为配置文件创建一个新目录:
mkdir -m 755 /etc/shadowsocks
创建位于 的 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} |
财产 | 描述 | 可能的值 |
---|---|---|
服务器 | 输入服务器的公共 IP 地址。 | 用户确定 |
服务器端口 | Shadowsocks 侦听此端口。使用默认值8388 。 | 用户确定 |
密码 | 连接密码。设置一个强密码。 | 用户确定 |
暂停 | 连接超时(以秒为单位)。这里默认值应该足够了。 | 用户确定 |
方法 | 加密方法。建议使用 AEAD 算法。 | 加密方式 |
快速打开 | 减少打开时的延迟。只能与内核版本 3.7.1 或更高版本一起使用。使用 来检查内核版本uname -r 。 | true/false |
名称服务器 | 内部 DNS 解析器的名称服务器。 | 用户确定 |
对系统内核应用以下优化,以确保 Shadowsocks 安装顺利运行。
创建/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
应用优化:
sysctl --system
Shadowsocks systemd 服务允许守护进程在系统启动时自动启动并在后台运行。
创建一个包含以下内容的 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
启用并启动shadowsocks.service
:
systemctl daemon-reloadsystemctl enable shadowsockssystemctl start 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 设置的第二阶段是在用户设备上安装客户端。这可能包括计算机、移动设备、平板电脑,甚至家庭网络路由器。支持的操作系统包括 Windows、macOS、iOS、Linux、Android 和 OpenWRT。
下载适用于 macOS 的 ShadowsocksX-NG GUI 客户端:
在 Mac 上启动该应用程序。可通过新的状态菜单栏图标访问应用程序首选项。选择服务器首选项菜单项:
在“服务器首选项”窗口中,单击左下角的+ (加号)按钮。输入 Shadowsocks Linode 的详细信息。请务必选择您在 Linode 文件中列出的相同端口和加密方案shadowsocks.json
。然后,关闭窗口:
导航到Windows Shadowsocks页面。单击“下载”下的Shadowsocks-4.0.4.zip。
将 .zip 文件的内容提取到任意文件夹中并运行Shadowsocks.exe
。Shadowsocks 作为后台进程运行。在任务栏中找到 Shadowsocks 图标(可能位于“隐藏图标”任务栏菜单中),右键单击 Shadowsocks 图标,然后单击“编辑服务器”。输入您保存在文件中的信息shadowsocks.json
:
再次右键单击 Shadowsocks 图标。将鼠标悬停在PAC上并选择Local PAC和Secure Local PAC。
要确认已选择 Linode 的 IP 地址,请将鼠标悬停在Servers上。
通过访问 IP 地址查找网站(例如ifconfig.co )验证 Shadowsocks 连接是否处于活动状态。当连接按预期工作时,该网站会列出 Shadowsocks Linode 的公共 IP。
要检查 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
,它会在我们的终端上返回超时。
关键字:Shadowsocks代理服务器
下一篇:nginx正向代理
7
4
4
2
2