[已解决]Linux下MEOW/COW/ss-qt5实现局域网共享科学上网


#1

请问 Linux 下的 shadowsocks-qt5 如何局域网共享?这样局域网内手机等客户端可以直接科学上网了,免去寻找各类科学上网软件的烦恼。
**
此问题已给出相应解决方案,请查看“第 2 页 16 楼”! **


#2

找错人了吧。女王大人只负责打包不负责开发~~


#3

我用 Apache 做了个二次代理,当然 nginx 也行的。


#4

本来就有这个功能啊,本地地址设置为 0.0.0.0 就好了阿。


#5

啊哦,看样子犯了个大错误 :nauseated_face:


#6

可有详细教程?


#7

这个就是将电脑的 shadowsocks-qt5 的本地地址设置为 0.0.0.0 ,然后手机端网络修改下代理即可?我试了一下,并没有成功啊。。。


#8

只要改本地监听地址就可以了,手机端不用其它配置。
以前都没注意到这个,走了弯路,今天学习了。


#9

试了并不行啊。。。


#10

openSUSE 默认开启了防火墙,同一网段内的设备并不能直接访问某一端口,我之前写一个安卓的小程序需要通过无线和 PC 通信,最后是把防火墙关闭了才连通


#11

你可以在 YaST 防火墙里允许端口… 或者手动往 /etc/sysconfig/SuSEfirewall2.d/services 里扔规则。


#12

我能想到的只有 hostapd 做无线 AP,手机连无线 AP,然后电脑用 iptables 把虚拟 AP 的流量全过代理。

没有尝试过,因为我不知道你的局域网共享指的什么,如果过路由器不是手机共享电脑网络的话,那路由器要是开了 AP 独立的话你手机怎么也访问不到电脑的局域网 IP。

如果是手机共享电脑网络,那还得看你在电脑上怎么做的 AP。


#13

苏姐想多啦。他的意思是,手机和电脑在同一个局域网内,要让手机通过电脑上的 ss 客户端代理来实现手机的科学上网。Windows 的 Shadowsocks 客户端有一个功能叫 “允许来自局域网的连接”,说的就是这种场景。

所以楼上说的本地监听 0.0.0.0 应该是正解了。


#14

好麻烦的样子……
直接在手机上装个 shadowsocks 客户端不就能用了……
andoird 装 shadowsocks
ios 装 shadowrocket,CNY 6 元

不然就去研究 shadowsocks + redsocks + iptables 吧……


#15

电脑端 SS 监听地址 0.0.0.0:1080,局域网下其他手机之类的连接代理到电脑端的 IP 地址和端口,如 192.168.1.1:1080。


#16

首先感谢各位宝贵的意见!还惊动了女王大人。。。

wsxy162 及上面各位说的是正解:

但是,这样设置手机依然翻不了墙,而且彻底没网了(只有 QQ,微信,Telegram 之类的能上,我怀疑是否是 DNS 问题,但是换了 DNS 之后依然如此。这个暂且放一边)。今天请教了个高人,才发现有个问题我们一直忽略了:我的 ss-qt5 选用的是 socks5 代理,而安卓手机 wifi 设置代理是 http(s) 代理,因为 Win 下的某些 SS 客户端(如 SSR)自带有 privoxy/polipo,会帮你转成 HTTP,所以利用局域网手机能顺利翻墙。

测试环境:OpenSUSE42.1; KDE 桌面

那么 Linux 下的我们该怎么解决呢?

首先正如

所以需要先把 SUSE 的防火墙关闭或者在“YaST”里的“防火墙”的“允许的服务”的“高级”里添加后面需要监听的端口(如 8080,8088 等),如图所示:




** 方法 1. ** (1)因为 shadowsocks-qt5 本地服务器类型除了 SOCKS5 还有个 HTTP(S) 选项,所以我试了一下选 HTTP(S) 选项(注意如果当前服务器处于连接状态,编辑后要断开重连配置才会生效。);
(2)电脑系统设置——代理服务器也要改为 HTTP 代理,地址为:127.0.0.1,端口与 ss-qt5 客户端一致;(这个保证电脑端能科学上网,跟手机能否翻墙没有关系)
(3)电脑 ss-qt5 客户端 监听地址改为: 0.0.0.0,本地端口 1080 可以不变;
(4)局域网下其他手机之类的在自己的 wifi 那里(注意是和电脑同一个路由器哦)设置代理:将服务器填为电脑的 ip4 地址(如 192.168.1.110),端口填 ss-qt5 本地端口(如 1080)即可。
然后手机就可以翻墙了,也可正常上网了。(如果之前有设置手机代理的,现将代理选项关闭,然后再开启,再填入相关信息,以防干扰,如还无法上网,对这个 wifi 网络清除一下即可)

注意:很奇怪,完成上面步骤后,手机可以翻墙了,但是电脑端却无法翻墙。不知道大家有没有?
我通过 KDE 系统设置—> 代理—>HTTP 代理,选上“所有协议都使用相同的代理服务器”,然后电脑端也可正常翻墙了。如图所示:



另:经测试,发现这种方法会让电脑端科学上网速度下降许多,所以不建议这种方法了。

** 方法 2.(建议) ** 因为 0.0.0.0 是向全世界监听,任何能连进来的机子都可以用这个代理(家里局域网一般没这个顾虑),但是如果把手提带到外面的话就要注意了,或者像有的 SS 客户端并没有 HTTP(S) 代理,又或者没有 SS 客户端,我们就得另想办法了。经"wsxy162" 提醒,我们可以选用 MEOW 或 COW,将 socks5 转为一个 HTTP 代理,手机还可以实现自动分流(什么时候 Linux 下的客户端有这个功能就好了)。我测试了一下 MEOW,现将相关步骤给出:
(1)登入官网 github.com/renzhn/MEOW 查看相关信息。

(2)下载并编译 MEOW

curl -L git.io/meowproxy | bash

上面这个命令也可用于更新。
注意:环境变量 MEOW_INSTALLDIR 可以指定安装的路径(我将其放到用户家目录 /bin 下,方便后面运行命令),若该环境变量不是目录则询问用户。

(3)编辑配置文件~/.meow/rc(全部选项及相关说明在~/.meow/rc-full)

#############################
# 监听地址,设为 0.0.0.0 可以监听所有端口,利用这个共享给局域网使用。重复多次来指定多个监听地址。
#############################
listen = http://0.0.0.0:8088
# 端口 8088 是我随意给的,只要不被占用即可,这个端口也是手机端代理设置时的端口。

#############################
# 指定二级代理
#############################
# 例子:
# SOCKS5:
# 如果手机通过电脑端的 SS 客户端来科学上网,就可以把下面这行的 # 号去掉。
#   proxy = socks5://127.0.0.1:1080
# 然后电脑端 ss-qt5 本地服务器类型可以使选用 SOCKS5,监听地址为:127.0.0.1 或 ::1(只监听本机),本地端口 1080;

# shadowsocks:
# 如果手机不想通过电脑端的 SS 客户端来科学上网,或者没有 SS 客户端,就可以用下面这个:
   proxy = ss://encrypt_method:password@example.server.com:8388
#/encrypt_method——> 加密方法;password——> 你 SS 服务器的密码;example.server.com——> 你 SS 服务器的地址;8388——> 你 SS 服务器的端口。
# 可以设置多个服务器,一行代表一个,按照先后顺序遍历,过一段时间会重新测试之前不能连的服务器。
# 这么设置就是让局域网下其他手机之类的连接这里设置的 SS 代理,这样就不用电脑端的 SS 客户端,或者不用和电脑端同一个 SS 代理服务器了。
#   支持的加密方法如下:
#     aes-128-cfb, aes-192-cfb, aes-256-cfb,
#     bf-cfb, cast5-cfb, des-cfb, rc4-md5,
#     chacha20, salsa20, rc4, table

# 日志文件路径,如不指定则输出到 stdout
logFile = /dev/null
#logFile = /home/yourname/.meow/log

(4)运行 MEOW
将其放到后台运行,懒得管理的可以将其加到开机启动里。

MEOW &

(5)手机上的 wifi 设置 HTTP 代理,服务器仍为电脑的 ip4 地址,端口为 8088(这是 我自己之前设置的端口,你可以在 ~/.meow/rc 里面改成自己想要的端口)。然后手机就可以正常科学上网了。


#17

不使用 SS-qt5 的话,你可以试下 cow 或 meow。


#18

这个用作局域网共享科学上网很爽啊:


我试了,很方便,即使不用 shadowsocks 客户端都可以。只是本地电脑还得依赖 ss 客户端才能科学上网啊…


#19

这些代理都集成了 SS 的了。


#20

这个我知道,其他设备可以通过局域网共享实现翻墙,但是对于安装如 MEOW 的电脑来说,要翻墙还得借助 ss 客户端。除非将这些代理安装到路由器上。