VRouter: 一个虚拟路由器, 旨在实现 OS X/macOS 上的透明代理

2017-06-28 09:40:30 +08:00
 Chingim

VRouter

解决的需求


OS X 上没有 linux 的 iptables, 无法直接将流量转发给本地的端口. 所有应用想走代理, 必须要先进行设置, 问题在于:

所以为了实现透明代理, 通常有以下选择:

用 surge 最方便, 但是不便宜. 在路由器设置:

VRouter 是另一种透明代理的思路, 把路由器变成虚拟机, 接管系统流量, 它有以下特点:

缺点是:

一些截图


20849 次点击
所在节点    Apple
111 条回复
Chingim
2017-06-28 11:17:43 +08:00
@paradoxs 不清楚 surge 怎么实现. 但是估计也是走 extension network 接口, 想要使用这个接口应该要挺多钱的. 不然开源的 Specht 怎么那么久都没人签发来造福大众
pubby
2017-06-28 11:18:08 +08:00
转发流量可以用 PF 的吧
只不过 ss-redir 只支持 linux,所以转发了也没用
paradoxs
2017-06-28 11:19:00 +08:00
@Chingim extension network 已经是免费的了. 有个叫 NEKIT 的 在 github, 你看看?
yexm0
2017-06-28 11:19:09 +08:00
@madeye @GPU 其实 windows 上用 sstap 也挺好的吧
Chingim
2017-06-28 11:20:36 +08:00
@pubby PF 可以转发的呀? 我折腾了很久都没实现...不然就不会做这个了.

比如说, 某个代理软件运行在本地的 7788 端口, pf 可以将本机的所有出口数据包转发到这个端口上吗?
wwqgtxx
2017-06-28 11:22:54 +08:00
@tyhunter
@yexm0
刚试了一下 sstap 的确是个好东西,不过如果在配置让他往本地的 socks5 代理灌数据的话,很容易导致回环死锁,而他自己之前 ss 服务器就么有任何问题,这个还有有一些烦人的
pubby
2017-06-28 11:23:30 +08:00
@Chingim 反正 freebsd 的 pf 可以转发,但是 ss-redir 依赖 linux 下 netfilter 模块的,你在 mac 下转发过去也没用,没有足够信息让它知道转发前的原始目标地址
maemual
2017-06-28 11:26:06 +08:00
这个思路有点意思,支持一下
Chingim
2017-06-28 11:26:23 +08:00
@paradoxs 我看过 NEKit, 它主页上说没有用 network extension, 所以只能监听某个端口, 没法接管主机的所有流量(如果理解有误, 请指正).

"NEKit does not depend on Network Extension framework. You can use NEKit without Network Extension entitlement to build a rule based proxy in a few lines."

作者的另一个项目 https://github.com/zhuhaow/Specht 倒是用了 network extension, 我理解 specht 应该能实现 surge 一样的功能. 但是没人签发.

"Specht is a simple proxy app built with NEKit.

Unless you have a developer ID with Network Extension entitlement, you cannot use Specht (Why?). Please use SpechtLite instead."
Chingim
2017-06-28 11:31:35 +08:00
@cloudyplain bug 提交 issue 吧, 这个好像是获取 ip 地址的功能 bug 了.
bazingaterry
2017-06-28 11:34:15 +08:00
好棒啊,我之前都是手动配置,没想到今天有人弄带 GUI 的了!
n6DD1A640
2017-06-28 11:51:10 +08:00
先装 virtual box。。。太重了

anyway,思路不错,赞一个
luoqeng
2017-06-28 11:55:53 +08:00
大学时就这么做过,不过用的 RouterOS。宿舍所有人都通过我的笔记本上网,省了几年网费,虽然现在看来也没多少钱……
livexia
2017-06-28 12:21:59 +08:00
docker 可以实现么
luoqeng
2017-06-28 12:32:50 +08:00
忘了说当时用的 VMware,然后分配的 16MB 内存 单核,带 8 人无压力。
missdeer
2017-06-28 12:55:22 +08:00
有个疑问,只是做网关的话,虚拟机只需要一块桥接的网卡就够了吧,跟宿主机在同一个网络即可。
Cavolo
2017-06-28 12:55:37 +08:00
Mac 有 surge 已经很不错了,win 还什么都没有呢
freestyle
2017-06-28 13:17:35 +08:00
@livexia 我就是用 docker 跑 kcptun 的, 开机自启, 然后在 shadowsocks 里配置一个本地的 127.0.0.1:8388 就可以了
```
docker rm -f kcptun; docker run -d -p 8388:8388 --restart always --name kcptun xtaci/kcptun client -r "remoteServer:port" -l ":8388" -mode fast2
```
freestyle
2017-06-28 13:26:06 +08:00
docker 里的 mac --net host 一直有问题 https://github.com/docker/for-mac/issues/68
tony1016
2017-06-28 13:28:34 +08:00
我怎么没有明白原理? Guest 系统是如何强奸 Host 系统的网络流量的??

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/371583

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX