如何安装和配置simple-obfs服务端

技术 17935 次围观 65 次吐槽

Howto

本文的主要内容是,在已经安装完 Shadowsocks-libev 服务端的情况下,如何手动安装和配置 simple-obfs,以及在此过程中的排错。

首先,使用本站提供的一键脚本安装 Shadowsocks-libev 服务端

2017 年 10 月 14 日更新
Shadowsocks 一键安装脚本(四合一)已经支持在安装 Shadowsocks-libev 时可选安装 simple-obfs 服务端。
※ 注意:脚本仅支持在 autoconf 版本大于或等于 2.67 的系统里安装(例如不支持 CentOS 6)。
Shadowsocks 一键安装脚本(四合一)

CentOS下shadowsocks-libev一键安装脚本
Debian 下 Shadowsocks-libev 一键安装脚本

其次,手动安装和配置 simple-obfs 服务端

下文以 CentOS 7 的操作为范例。
在用一键脚本安装完 Shadowsocks-libev 服务端的前提下,安装 simple-obfs 服务端所需的依赖包都已安装完毕。
有可能还需要安装一下 git 命令。

# Debian / Ubuntu
apt-get install -y git
# CentOS / Fedora / RHEL
yum install -y git

下载和安装 simple-obfs

cd /opt
git clone https://github.com/shadowsocks/simple-obfs.git
cd simple-obfs
git submodule update --init --recursive
./autogen.sh
./configure --disable-documentation
make && make install

需要特别注意的是,autogen.sh 脚本的配置限制了 autoconf 的版本不能低于 2.67。
如何查看默认 autoconf 的版本号?

autoconf --version

CentOS 7 的 autoconf 版本为 2.69,符合条件。

以下为在 CentOS 6 的操作步骤。
CentOS 6 的 autoconf 版本为 2.63,因此需要用到 EPEL 的 autoconf268 依赖包。

yum install -y autoconf268

然后修改 autogen.sh 内容,将

autoreconf --install --force

修改为

autoreconf268 --install --force

还有一点,在 CentOS 6 下编译出现 error: ev.h: No such file or directory 错误时,原因如下:
CentOS 6 下 ev.h 位于 /usr/include/libev/ev.h,因此需要修改以下代码里关于 ev.h 路径定义的地方。

src/local.h
src/resolv.c
src/server.h

找到 #include <ev.h> 这一行,修改为 #include <libev/ev.h> 即可通过编译。

一般情况下安装完成后,二进制文件的路径位于

/usr/local/bin/obfs-local
/usr/local/bin/obfs-server

重新配置文件

重新配置 Shadowsocks-libev 的配置文件 /etc/shadowsocks-libev/config.json
添加如下一行

"plugin":"/usr/local/bin/obfs-server --obfs http"

特别注意:请认真参考以下范例,method 那行最后不要缺少逗号,不然启动会报错。
范例如下:

{
    "server":"0.0.0.0",
    "server_port":your_server_port,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"your_password",
    "timeout":300,
    "method":"your_encryption_method",
    "plugin":"/usr/local/bin/obfs-server --obfs http"
}

然后重新启动 Shadowsocks-libev 即可。

确认 ss-server 和 obfs-server 进程已经正常启动。
命令如下:

ps -ef | grep -v grep | grep "server"

输出结果参考:

/usr/local/bin/ss-server -u -c /etc/shadowsocks-libev/config.json -f /var/run/shadowsocks-libev.pid
/usr/local/bin/obfs-server --obfs http

Windows 客户端的使用方法:
1、下载最新 Windows 客户端
Windows 客户端下载网址:
https://github.com/shadowsocks/shadowsocks-windows/releases

2、下载 obfs-local.exe 和 msys-2.0.dll
下载网址:
https://github.com/imgk/simple-obfs-Cygwin/releases
下载后,和 Windows 客户端的 exe 文件放在同一文件夹下

3、客户端配置,如下图

插件:obfs-local
插件选项:obfs=http;obfs-host=www.baidu.com
插件选项根据你服务端上的配置选择用 http 还是 tls,obfs-host 随便你用什么网址都行。

转载请注明:秋水逸冰 » 如何安装和配置simple-obfs服务端

发表评论
取消评论
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
表情

已有评论 (65)

  1. Mac版本的客户端,怎么使用obfs呢?
    Bei14小时前回复
  2. 请问TLS怎么设置,你的例子是http模式,直接改成tls就可以了么?需要服务端设置伪装成那个域名不?
    xdxd2天前回复
    • 对,配置文件里直接改成 tls,然后重启 SS 即可。
  3. 请问有没有关于dns污染的解决方案
    rainbow2天前回复
    • 其实有,你去 Github 上搜搜关键字 chinadns ,有惊喜哦
  4. 有没有mac osx的客户端连接方式?命令行的也可以。。。不需要GUI。多谢。感谢秋水的付出。。
    fasdg3天前回复
    • 你去搜搜看,应该有的
    • github上面有。 shadowsocksX-NG好像是
      滑小稽2天前回复
  5. 加了这个混淆,能防止被封锁?效果如何?
    hao4天前回复
    • 效果其实就是加了混淆,至于能不能防止被封锁,仁者见仁智者见智吧,哈哈。
  6. 非常感谢秋水大大! 脚本正常使用3天了! 很稳定! 目前又一个问题请教! 如何查看我的日志呢? 我看了 “ /var/log/ ” 中的文件,都没有具体的连接日志! 请问是什么问题?
    一直用你的脚本4天前回复
    • libev版本原生没有日志功能。
      tingting2天前回复
      • 谢谢回复! 那有什么办法能产生日志吗? libev是天然阉割了日志输出吗?
        一直用你的脚本2天前回复
        • libev 其实可以开启日志。 以四合一版的安装为例,修改启动脚本 /etc/init.d/shadowsocks-libev,找到下面这一行 $DAEMON -u -c $CONF -f $PID_FILE 修改为 $DAEMON -uv -c $CONF -f $PID_FILE 然后保存该启动脚本,并执行以下命令: /etc/init.d/shadowsocks-libev stop /etc/init.d/shadowsocks-libev start 正常启动后, log 就会输出到 /var/log/messages 文件里了。输出日志参考: /usr/local/bin/ss-server[15261]: UDP relay enabled /usr/local/bin/ss-server[15261]: initializing ciphers... aes-256-cfb /usr/local/bin/ss-server[15261]: tcp server listening at 0.0.0.0:8989 /usr/local/bin/ss-server[15261]: udp server listening at 0.0.0.0:8989 /usr/local/bin/ss-server[15261]: running from root user
          • 非常感谢! 从你这里学到很多!
            一直用你的脚本2天前回复
  7. 做了个测试,服务器端按秋总这个教程加了simple-obfs,电脑端的插件选型空着和没空着都可以成功翻墙,这个打消了我之前的疑虑:不是所有客户端都支持obfs时能不能在服务器端加简单混淆。所以,服务器端尽管加上简单混淆,家里梅林路由器和办公室电脑端都配置好obfs,而手机app不支持obfs也没有问题。
    tingting5天前回复
  8. 开了混淆之后速度直接减半。。。。
    mas5天前回复
  9. 客户端在 windows10-32 环境下运行出现错误。 System.ComponentModel.Win32Exception(0x80004005): 指定的可执行文件不是此操作系统平台的有效应用程序。 在 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfostartInfo) 在 System.Diagnostics.Process.Start() 在 Shadowsocks.Controller.Service.Sip003Plugin.StartIfNeeded() 在 Shadowsocks.Controller.ShadowsocksController.GetPluginLocalEndPointIfConfigured(Server server) 在 Shadowsocks.Controller.ShadowsocksController.StartPlugins() 在 Shadowsocks.Controller.ShadowsocksController.Reload()
    广泛5天前回复
  10. 您好,一直在用您的教程。但我是纯小白用户,只知道按照写好的指令来。我的服务器是CentOS 6,autoconf 版本为 2.63,这个按照您写的验证无误。问题是,修改autogen.sh我不会了,汗。autogen.sh的路径在哪里?我知道用VI来修改配置文件的方法,麻烦您再详细明示下修改autogen.sh的方法。多谢!
    roy5天前回复
  11. 再咨询一个问题! 看到您windows端的插件选项里“ obfs=http,obfs-host=www.163.com” 有这一行,作用是把http流量混淆成 163 的流量吗? 如果我不写" obfs-host=www.163.com " 只写 “obfs=http” 这样混淆有作用吗?
    一直用你的脚本6天前回复
    • 不好意思,已经搞明白了! surge中如果不写 “obfs-host=* ” 默认会有一个网址! 刚好看到新版的surge已经支持 tls混淆! 我把服务端的配置文件改成 "plugin":"/usr/local/bin/obfs-server" "plugin_opts":"obfs=tls;failover=127.0.0.1:8443" 翻Q没有问题,请问我的写法可以吗? 可以混淆吗?
      一直用你的脚本5天前回复
      • 写成上面的格式之后 ,输出没有 “--obfs=http” 然后按照你的格式 “"plugin":"/usr/local/bin/obfs-server --obfs tls"” 输出 ”00:00:00 /usr/local/bin/ss-server -u -c /etc/shadowsocks-libev/config.json - f /var/run/shadowsocks-libev.pid root 10357 10356 0 19:17 ? 00:00:00 /usr/local/bin/obfs-server --obfs tls“ 请问这样算是 成功了吗?
        一直用你的脚本5天前回复
  12. Last login: Fri Oct 13 15:39:00 2017 from 14.126.229.11 [[email protected] ~]# cd /opt [[email protected] opt]# git clone https://github.com/shadowsocks/simple­obfs.git Cloning into 'simple­obfs'... fatal: unable to access 'https://github.com/shadowsocks/simple­obfs.git/': The requested URL returned error: 400 [[email protected] opt]# cd simple­obfs -bash: cd: simple­obfs: No such file or directory [[email protected] opt]# git submodule update ­­init ­­recursive fatal: Not a git repository (or any of the parent directories): .git [[email protected] opt]# ./autogen.sh -bash: ./autogen.sh: No such file or directory [[email protected] opt]# ./configure ­­disable­documentation -bash: ./configure: No such file or directory [[email protected] opt]# make && make install make: *** No targets specified and no makefile found. Stop. 到这步安装不了了呢?请问这个是什么问题?
    高墙要命6天前回复
  13. 请问大佬,如何重启Shadowsocks-libev服务。。。。vi添加混肴条目后如何重启ss服务。
    zhang6天前回复
  14. 我想请问一下博主,我的SSR在选择从GFWlist更新PAC的时候,最近一个月的时间就没有更新成功过,每次都提示failed to update PAC file,但是出现这种情况是不分列表中的服务器好坏与否的,能连外网与不能连外网都是一样的报错,请问一下这种该怎么解决,我现在用的是SSR 4.70版本的,求博主解惑
    wzh23246天前回复
    • SSR作者已经停止更新并删除源码,自然是无法更新PAC
  15. 这个混淆插件,好像不支持 Shadowsocks Python 版本的?
    samloya6天前回复
    • 都写了, libev版
      16天前回复