huacnlee / flora-kit

💐 基于 shadowsocks-go 做的完善实现,自动网络分流,完全兼容 Surge 的配置文件。
Apache License 2.0
896 stars 109 forks source link

linux 下是否需要配合其它软件来实现自动网络分流? #8

Closed yangxuan8282 closed 7 years ago

yangxuan8282 commented 7 years ago

在树莓派上编译之后,尝试运行了一下看到提示:

./flora-kit 
2017/07/01 11:15:14 Loading proxy server direct done. 
2017/07/01 11:15:14 Loading proxy server proxy done. 
2017/07/01 11:15:14 WARN: Your not in macOS, Networksetup skiped. Please change Network proxy setting by manually.
2017/07/01 11:15:14 Listen socket 127.0.0.1:1080

用 curl 访问谷歌也没有返回结果

似乎 linux 下不能直接自动网络分流

youkale commented 7 years ago

将流量通过iptables 转发这个监听端口即可,

yangxuan8282 commented 7 years ago

@mokeoo 那 linux 上运行 flora-kit 和直接用 shadowsocks 是不是效果一样了

youkale commented 7 years ago

@yangxuan8282 不一样,这个可以走规则,去广告,不同的URL走不同的ss或者直连,如果单纯起ss那么规则需要自己去配置,或者在浏览器,或者通过pac

yangxuan8282 commented 7 years ago

@mokeoo 能否给个 linux 下 iptables 配置的示例 按照 shadowsocks-libev 项目 README 里的示例加了不行,找了网上其它好几个博客的配置也没成功

iptables -t nat -N SHADOWSOCKS

...
iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 1080
youkale commented 7 years ago

执行前,先清空你的iptables 规则

iptables -F
iptables -X

试试下面这种做法

   iptables -t nat -N REDSOCKS2
    iptables -t nat -A PREROUTING -i br-lan -p tcp -j REDSOCKS2
    iptables -t nat -A PREROUTING -i br-lan -p udp -j REDSOCKS2

    iptables -t nat -A REDSOCKS2 -d 127.0.0.0/8 -j RETURN
    iptables -t nat -A REDSOCKS2 -d 192.168.0.0/16 -j RETURN
    iptables -t nat -A REDSOCKS2 -d 10.8.0.0/16 -j RETURN
    iptables -t nat -A REDSOCKS2 -d 224.0.0.0/4 -j RETURN
    iptables -t nat -A REDSOCKS2 -d 240.0.0.0/4 -j RETURN

    iptables -t nat -A REDSOCKS2 -p tcp -j REDIRECT --to-ports 1080
    iptables -t nat -A REDSOCKS2 -p udp -j REDIRECT --to-ports 1080
yangxuan8282 commented 7 years ago

@mokeoo 还是不行,感觉 iptables 的规则真的很麻烦 linux 下好像 flora-kit 的 networksetup 设置都是没有的,不知道网络设置这部分有没有可能对 linux 支持,如果可以的话 linux 下用会方便很多

youkale commented 7 years ago

@yangxuan8282 如果要实现,肯定也是以iptables的方式实现。

yangxuan8282 commented 7 years ago

看了 issues #11 之后又试了一下, linux 下好像还是不行

用的规则就是那个 issues 里面提到的这个: https://github.com/mokeoo/mokeoo.github.io/blob/master/main.conf

只把代理改成自己的服务器,其它的没改

用的是这条命令来测试的:

curl -x socks5://127.0.0.1:1080 google.com

返回的结果是:

curl: (52) Empty reply from server

看 flora 的输出应该走代理了:

sudo ./flora-kit 
2017/08/02 23:19:55 Loading proxy server 💊 direct done. 
2017/08/02 23:19:55 Loading proxy server 🌞 line done. 
2017/08/02 23:19:55 Listen socket 0.0.0.0:1080
2017/08/02 23:21:54 [cn]->[🇨🇳 proxy] ✅ [111.13.101.208:80]
2017/08/02 23:22:11 [final]->[🌐 PROXY] ✅ [216.58.200.46:80]
2017/08/02 23:22:15 [final]->[🌐 PROXY] 💊 [93.46.8.89:80]
2017/08/02 23:23:12 [final]->[🌐 PROXY] 💊 [216.58.200.36:80]
2017/08/02 23:25:25 [cn]->[🇨🇳 proxy] ✅ [111.13.101.208:80]
2017/08/02 23:26:11 [final]->[🌐 PROXY] 💊 [172.217.27.142:80]
2017/08/02 23:27:02 [final]->[🌐 PROXY] 💊 [172.217.27.142:80]
2017/08/02 23:27:48 [final]->[🌐 PROXY] 💊 [172.217.27.142:80]

系统是 linux

flora版本是0.2.6