shadowsocks 和 shadowsocks-libev 区别是什么
Shadowsocks和Shadowsocks-libev是两个不同的实现,它们之间有以下主要区别:
开发者和支持:Shadowsocks最初由clowwindy开发,并在GitHub上发布。而Shadowsocks-libev(libev表示使用了libev库)是根据Shadowsocks的设计理念进行的改进和扩展,由其他开发者维护和支持。
协议支持:Shadowsocks使用自己独特的协议,称为"原生协议"或"SS协议",可以通过混淆等方式来增加网络流量的隐蔽性。而Shadowsocks-libev除了支持原生协议外,还支持一些其他协议如Socks5、HTTP等,并且带有更多的可配置选项。
性能:Shadowsocks-libev经过对原始Shadowsocks代码的改进和优化,具有更好的性能和稳定性。它使用了更高效的I/O模型和多线程处理,能够更好地处理大量连接和高负载情况。
社区支持:Shadowsocks-libev拥有一个活跃的开源社区,提供更广泛的支持和更新。您可以在GitHub上找到该项目,并获取相关的文档、教程和问题解答。
虽然Shadowsocks-libev被认为是对原始Shadowsocks的改进和升级,但它们在基本原理和使用方式上非常相似。对于大多数用户而言,选择哪个实现取决于具体需求和个人喜好。
安装 shadowsockets-libev
要在Ubuntu上安装Shadowsocks并进行设置,以便使Mac能够通过它翻墙,您可以按照以下步骤操作:
在Ubuntu上安装Shadowsocks客户端:
sudo apt update sudo apt install shadowsocks-libev
创建一个配置文件用于存储Shadowsocks的设置:
sudo nano /etc/shadowsocks-libev/config.json
在打开的配置文件中,输入以下内容:
{ "server": "服务器IP地址", "server_port": 你的服务器端口, "local_address": "127.0.0.1", "local_port": 1080, "password": "你的密码", "timeout": 300, "method": "加密方法" }
将其中的
服务器IP地址
、你的服务器端口
、你的密码
和加密方法
替换为实际的Shadowsocks服务器信息。
在给定的配置中,"server"是一个数组,包含两个元素:"::1"和"127.0.0.1"。这里的"server"表示Shadowsocks客户端连接的服务器地址。
"::1" 是IPv6环回地址的表示,类似于IPv4中的"localhost"或"127.0.0.1"。
"127.0.0.1" 是IPv4环回地址,也就是本地主机地址。
在这种配置下,Shadowsocks客户端会尝试先通过IPv6地址"::1"去连接服务器,如果失败再使用IPv4地址"127.0.0.1"进行连接。这样做是为了支持不同网络环境下的连接方式。
请注意,根据您的实际需求,您可以根据服务器地址的类型选择只保留其中一个地址,或根据特定网络环境进行适当调整。
要设置允许所有IP连接到Shadowsocks服务器,您可以将配置文件中的"server"字段更改为 "0.0.0.0"。以下是更新后的配置示例:
{
"server": "0.0.0.0",
"mode": "tcp_and_udp",
"server_port": 8388,
"local_port": 1080,
"password": "xxx",
"timeout": 86400,
"method": "chacha20-ietf-poly1305"
}
使用上述配置,Shadowsocks服务器将监听所有可用的IPv4地址,以允许从任何IP连接到它。请注意,如果您的服务器同时支持IPv6,您还可以在"server"字段中添加"::"以支持IPv6连接。
注意:安全组打开 8388 端口,协议选择自定义tcp。
保存并关闭文件 (
Ctrl + X
,然后输入Y
并按下Enter
)。启动Shadowsocks客户端:
sudo systemctl start shadowsocks-libev
现在,您已经在Ubuntu上成功安装和配置了Shadowsocks。要在Mac上使用它进行翻墙,请按照以下步骤操作:
在Mac上安装ShadowsocksX-NG或其他支持Shadowsocks协议的应用程序。
打开ShadowsocksX-NG并点击 "服务器" -> "编辑服务器订阅"。
在弹出的窗口中,输入您的Shadowsocks服务器订阅链接或服务器信息,并点击 "确定"。
返回主界面,在服务器列表中选择您配置的服务器,并点击 "启动"。
现在,您的Mac就可以通过Shadowsocks连接到Ubuntu上的服务器进行魔法了。
添加混淆插件
安装 obfs-server
更新系统包: 在安装之前,建议更新您的系统包。在基于 Debian 或 Ubuntu 的系统上,您可以使用以下命令:
sudo apt update sudo apt upgrade
安装依赖:
obfs-server
需要一些依赖。可以使用以下命令来安装它们:sudo apt install build-essential autoconf libtool libssl-dev libpcre3-dev asciidoc xmlto zlib1g-dev libev-dev
获取 simple-obfs:
obfs-server
是simple-obfs
项目的一部分。您可以从 GitHub 克隆这个项目:git clone https://github.com/shadowsocks/simple-obfs.git
编译安装 simple-obfs: 进入克隆的目录,并编译安装:
cd simple-obfs git submodule update --init --recursive ./autogen.sh ./configure && make sudo make install
注意安装的输出,如果出现Error,则安装失败,需要看失败的原因是什么,解决失败,才能继续往下走
配置 Shadowsocks 使用 obfs: 编辑您的 Shadowsocks 配置文件(通常在
/etc/shadowsocks-libev/config.json
),添加或修改plugin
和plugin_opts
字段。例如:{ "server": ["0.0.0.0"], "mode": "tcp_and_udp", "server_port": 8388, "local_port": 1080, "password": "1qaz@WSX", "timeout": 86400, "method": "chacha20-ietf-poly1305", "fast_open": true, "plugin": "obfs-server", "plugin_opts": "obfs=tls;obfs-host=iosapps.itunes.apple.com" }
重启 Shadowsocks 服务: 保存配置文件后,重启 Shadowsocks 服务以应用更改:
sudo systemctl restart shadowsocks-libev
检查服务状态: 检查 Shadowsocks 服务状态确保一切正常:
sudo systemctl status shadowsocks-libev
完成这些步骤后,您的 Shadowsocks 服务器应该已经配置好了 obfs-server
插件。请确保您的 Shadowsocks 客户端也配置了相应的插件和选项,以确保正常连接。
设置开机自动启动
要设置Shadowsocks-libev在系统启动时自动启动,您可以按照以下步骤进行操作:
创建一个Systemd服务单元配置文件:
sudo nano /etc/systemd/system/shadowsocks-libev.service
在打开的文件中,输入以下内容:
[Unit] Description=Shadowsocks-libev Server After=network.target [Service] ExecStart=/usr/bin/ss-server -c /etc/shadowsocks-libev/config.json Restart=on-failure User=nobody CapabilityBoundingSet=CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target
这里假设Shadowsocks-libev的可执行文件路径是
/usr/bin/ss-server
,配置文件路径是/etc/shadowsocks-libev/config.json
。如果实际路径不同,请相应地修改上述命令。保存并关闭文件 (
Ctrl + X
,然后输入Y
并按下Enter
)。启用并启动Shadowsocks-libev服务:
sudo systemctl enable shadowsocks-libev sudo systemctl start shadowsocks-libev
现在,Shadowsocks-libev将在系统启动时自动启动,并以指定的配置运行。您可以使用以下命令验证服务是否正在运行:
sudo systemctl status shadowsocks-libev
该命令将显示服务的状态信息,包括是否处于活动状态。
客户端(电脑、手机)上设置
下载客户端:
windows : https://github.com/shadowsocks/shadowsocks-windows/releases
android 客户端: https://github.com/shadowsocks/shadowsocks-android/releases
mac 客户端设置
这里以mac 设置为例 ,安装后并执行一下设置:
注意:加密方式要和shadowsockets-libev设置相同
注意:加密方式
mac 上混淆设置:
最后,在客户端上,开启插件的混淆,避免被扫描发现魔法
和服务器配置中的设置保持一致:
文本为:
obfs=tls;obfs-host=iosapps.itunes.apple.com
windows 混淆设置:
安装混淆插件:
https://github.com/shadowsocks/simple-obfs
注意 windows 插件名字要和 下载的exe名称相同为:obfs-local
否则会出现:
android 混淆设置
安装混淆插件:
https://github.com/shadowsocks/simple-obfs-android/releases/tag/v0.0.5
注意,在android上安装好后,还需在客户端的插件设置里给相应的权限
ubuntu 客户端设置
1. 安装 Shadowsocks 客户端 ss-local
如果还未安装 Shadowsocks 客户端,可以通过以下命令安装:
sudo apt install shadowsocks-libev
2. 配置 Shadowsocks 客户端
编辑 Shadowsocks 客户端的配置文件 /etc/shadowsocks-libev/client-config.json
:
sudo nano /etc/shadowsocks-libev/client-config.json
并在文件中填入以下内容(根据您的服务器配置调整):
{
"server": "服务器的IP地址",
"server_port": 8388,
"local_address": "127.0.0.1",
"local_port": 1080,
"password": "your_password",
"timeout": 300,
"method": "chacha20-ietf-poly1305", // 请与服务器一致
"plugin": "obfs-local", // 如果使用了 obfs 插件
"plugin_opts": "obfs=http;obfs-host=www.bing.com"
}
手动编译安装 simple-obfs
如果 PPA 源不可用,您可以通过源码编译 simple-obfs
插件:
1. 安装必要的依赖
sudo apt-get update
sudo apt install autoconf automake libtool libssl-dev git
2. 克隆并编译 simple-obfs
git clone https://github.com/shadowsocks/simple-obfs.git
cd simple-obfs
git submodule update --init --recursive
./autogen.sh
./configure && make
sudo make install
完成之后,obfs-local
和 obfs-server
将会被安装,您可以按照前面的步骤配置 Shadowsocks 客户端和服务端。
3. 启动 ss-local
客户端
使用以下命令启动 Shadowsocks 客户端:
sudo systemctl start shadowsocks-libev-local
或者,您可以通过命令行手动启动 ss-local
:
ss-local -c /etc/shadowsocks-libev/client-config.json
设置自启动
创建
systemd
服务文件
创建一个新的服务文件 /etc/systemd/system/shadowsocks-libev-local.service
:
sudo nano /etc/systemd/system/shadowsocks-libev-local.service
将以下内容粘贴到文件中,确保路径和配置文件名与您系统中的一致:
[Unit]
Description=Shadowsocks-libev Local Client Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/ss-local -c /etc/shadowsocks-libev/client-config.json
Restart=on-failure
User=nobody
Group=nogroup
LimitNOFILE=32768
[Install]
WantedBy=multi-user.target
保存并退出
按 Ctrl + X
,然后按 Y
确认保存,最后按回车键退出编辑。
刷新
systemd
配置
sudo systemctl daemon-reload
启动并启用服务
启动 Shadowsocks 本地客户端服务:
sudo systemctl start shadowsocks-libev-local
设置服务开机自启:
sudo systemctl enable shadowsocks-libev-local
检查服务状态
您可以使用以下命令检查服务是否正常运行:
sudo systemctl status shadowsocks-libev-local
通过系统服务运行 ss-local
现在,您的 ss-local
将作为系统服务运行,并且可以通过 systemctl
进行管理。
这样设置好后,您就不需要每次手动启动 ss-local
,系统会在启动时自动运行该服务。
4. 验证代理连接
启动 ss-local
后,您可以再次尝试使用 curl
通过本地 SOCKS5 代理访问外部网络:
curl --socks5h 127.0.0.1:1080 http://ifconfig.me
如果配置正确,您应该能够通过代理获取服务器的公共 IP 地址。
5. 环境变量设置开启或关闭
alias enable_proxy="export ALL_PROXY=socks5h://127.0.0.1:1080"
alias disable_proxy="unset ALL_PROXY"
开启则在终端输入:enable_proxy
备注
请确保服务器端的 Shadowsocks 服务正常运行。
如果您使用了混淆插件 (
obfs
),确保客户端和服务器的plugin
配置一致。