liujie
liujie
Published on 2023-07-28 / 270 Visits
0
0

使用shadowsockets-libev 进行魔法访问

shadowsocks 和 shadowsocks-libev 区别是什么

Shadowsocks和Shadowsocks-libev是两个不同的实现,它们之间有以下主要区别:

  1. 开发者和支持:Shadowsocks最初由clowwindy开发,并在GitHub上发布。而Shadowsocks-libev(libev表示使用了libev库)是根据Shadowsocks的设计理念进行的改进和扩展,由其他开发者维护和支持。

  2. 协议支持:Shadowsocks使用自己独特的协议,称为"原生协议"或"SS协议",可以通过混淆等方式来增加网络流量的隐蔽性。而Shadowsocks-libev除了支持原生协议外,还支持一些其他协议如Socks5、HTTP等,并且带有更多的可配置选项。

  3. 性能:Shadowsocks-libev经过对原始Shadowsocks代码的改进和优化,具有更好的性能和稳定性。它使用了更高效的I/O模型和多线程处理,能够更好地处理大量连接和高负载情况。

  4. 社区支持:Shadowsocks-libev拥有一个活跃的开源社区,提供更广泛的支持和更新。您可以在GitHub上找到该项目,并获取相关的文档、教程和问题解答。

虽然Shadowsocks-libev被认为是对原始Shadowsocks的改进和升级,但它们在基本原理和使用方式上非常相似。对于大多数用户而言,选择哪个实现取决于具体需求和个人喜好。

安装 shadowsockets-libev

要在Ubuntu上安装Shadowsocks并进行设置,以便使Mac能够通过它翻墙,您可以按照以下步骤操作:

  1. 在Ubuntu上安装Shadowsocks客户端:

    sudo apt update
    sudo apt install shadowsocks-libev
    
  2. 创建一个配置文件用于存储Shadowsocks的设置:

    sudo nano /etc/shadowsocks-libev/config.json
    
  3. 在打开的配置文件中,输入以下内容:

    {
        "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。

  1. 保存并关闭文件 (Ctrl + X,然后输入 Y 并按下 Enter)。

  2. 启动Shadowsocks客户端:

    sudo systemctl start shadowsocks-libev
    

现在,您已经在Ubuntu上成功安装和配置了Shadowsocks。要在Mac上使用它进行翻墙,请按照以下步骤操作:

  1. 在Mac上安装ShadowsocksX-NG或其他支持Shadowsocks协议的应用程序。

  2. 打开ShadowsocksX-NG并点击 "服务器" -> "编辑服务器订阅"。

  3. 在弹出的窗口中,输入您的Shadowsocks服务器订阅链接或服务器信息,并点击 "确定"。

  4. 返回主界面,在服务器列表中选择您配置的服务器,并点击 "启动"。

现在,您的Mac就可以通过Shadowsocks连接到Ubuntu上的服务器进行魔法了。

添加混淆插件

安装 obfs-server

  1. 更新系统包: 在安装之前,建议更新您的系统包。在基于 Debian 或 Ubuntu 的系统上,您可以使用以下命令:

    sudo apt update 
    sudo apt upgrade
    

  2. 安装依赖obfs-server 需要一些依赖。可以使用以下命令来安装它们:

    sudo apt install build-essential autoconf libtool libssl-dev libpcre3-dev asciidoc xmlto zlib1g-dev libev-dev

  3. 获取 simple-obfsobfs-serversimple-obfs 项目的一部分。您可以从 GitHub 克隆这个项目:

    git clone https://github.com/shadowsocks/simple-obfs.git

  4. 编译安装 simple-obfs: 进入克隆的目录,并编译安装:

    cd simple-obfs 
    git submodule update --init --recursive 
    ./autogen.sh 
    ./configure && make 
    sudo make install

    注意安装的输出,如果出现Error,则安装失败,需要看失败的原因是什么,解决失败,才能继续往下走

  5. 配置 Shadowsocks 使用 obfs: 编辑您的 Shadowsocks 配置文件(通常在 /etc/shadowsocks-libev/config.json),添加或修改 pluginplugin_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"
    }

  6. 重启 Shadowsocks 服务: 保存配置文件后,重启 Shadowsocks 服务以应用更改:

    sudo systemctl restart shadowsocks-libev

  7. 检查服务状态: 检查 Shadowsocks 服务状态确保一切正常:

    sudo systemctl status shadowsocks-libev

完成这些步骤后,您的 Shadowsocks 服务器应该已经配置好了 obfs-server 插件。请确保您的 Shadowsocks 客户端也配置了相应的插件和选项,以确保正常连接。

设置开机自动启动

要设置Shadowsocks-libev在系统启动时自动启动,您可以按照以下步骤进行操作:

  1. 创建一个Systemd服务单元配置文件:

    sudo nano /etc/systemd/system/shadowsocks-libev.service
    
  2. 在打开的文件中,输入以下内容:

    [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。如果实际路径不同,请相应地修改上述命令。

  3. 保存并关闭文件 (Ctrl + X,然后输入 Y 并按下 Enter)。

  4. 启用并启动Shadowsocks-libev服务:

    sudo systemctl enable shadowsocks-libev
    sudo systemctl start shadowsocks-libev
    

现在,Shadowsocks-libev将在系统启动时自动启动,并以指定的配置运行。您可以使用以下命令验证服务是否正在运行:

sudo systemctl status shadowsocks-libev

该命令将显示服务的状态信息,包括是否处于活动状态。

客户端(电脑、手机)上设置

下载客户端:

mac 客户端设置

这里以mac 设置为例 ,安装后并执行一下设置:

1.jpg

注意:加密方式要和shadowsockets-libev设置相同

image-qeja.png

注意:加密方式

mac 上混淆设置:

最后,在客户端上,开启插件的混淆,避免被扫描发现魔法

image-npae.png

和服务器配置中的设置保持一致:

image-thwr.png

文本为:

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-localobfs-server 将会被安装,您可以按照前面的步骤配置 Shadowsocks 客户端和服务端。

3. 启动 ss-local 客户端

使用以下命令启动 Shadowsocks 客户端:

sudo systemctl start shadowsocks-libev-local

或者,您可以通过命令行手动启动 ss-local

ss-local -c /etc/shadowsocks-libev/client-config.json
设置自启动
  1. 创建 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

  1. 保存并退出

Ctrl + X,然后按 Y 确认保存,最后按回车键退出编辑。

  1. 刷新 systemd 配置

sudo systemctl daemon-reload

  1. 启动并启用服务

启动 Shadowsocks 本地客户端服务:

sudo systemctl start shadowsocks-libev-local

设置服务开机自启:

sudo systemctl enable shadowsocks-libev-local

  1. 检查服务状态

您可以使用以下命令检查服务是否正常运行:

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 配置一致。


Comment