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

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

VRouter

解决的需求


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

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

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

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

缺点是:

一些截图


21790 次点击
所在节点    Apple
111 条回复
cielpy
2017-06-28 17:59:53 +08:00
@Chingim issue 已提,两个 issue 都是我提的(逃
wwqgtxx
2017-06-28 18:31:42 +08:00
@galenzhao 你真的试过么。我这里根本没办法同时运行 hv 和 vmware 虚拟机
geekdada
2017-06-28 18:35:32 +08:00
思路独特,不错
wph95
2017-06-28 18:56:07 +08:00
vbox 是有点重了
可以用 xhyve https://github.com/mist64/xhyve 呀 轻量级多了
mmtromsb456
2017-06-28 18:59:36 +08:00
http://showerlee.blog.51cto.com/2047005/1221285
https://github.com/cjheath/geoip
期待 geo ip 的实现.这样子我个人认为功能上已经不输于 surge 了.希望这些链接对你有帮助^_^
pagxir
2017-06-28 19:18:40 +08:00
ixinshang
2017-06-28 19:21:58 +08:00
神器啊
flowerwrong
2017-06-28 19:24:16 +08:00
@pagxir 再补充两个,gotun2socks,kone
Chingim
2017-06-28 20:07:28 +08:00
@pagxir
@flowerwrong

不知道这类工具能不能根据不同域名来决定是否使用代理? 印象中 TUN virtual network interface 需要添加一堆路由到系统路由表, 而且都是基于 ip 的
pagxir
2017-06-28 20:20:27 +08:00
@Chingim 当然可以了,你去看看 Kone 的实现,估计就带有这个功能了。
flowerwrong
2017-06-28 20:30:06 +08:00
@Chingim
@pagxir
可以的,fake dns,像 telegram 那种 ip 的还是需要路由表才可以,[kone]( https://github.com/xjdrew/kone/blob/master/example.ini#L51)下载大文件有点问题,一直不知道为什么。
Chingim
2017-06-28 20:41:06 +08:00
@flowerwrong kone 看起来不错, 但是基本没文档, 不知道基于什么考虑只支持了 linux.
@flicker317 不知道你了不了解 kone, surge 的实现是类似 kone 吗
isbase
2017-06-28 20:49:06 +08:00
Collected errors:
* verify_pkg_installable: Only have 76kb available on filesystem /overlay, pkg python3-decimal needs 131
* opkg_install_cmd: Cannot install package python3.

默认分配的空间太小了,支持用户自定义就好了
pagxir
2017-06-28 21:01:06 +08:00
@flowerwrong

func (nat *Nat) clearExpiredSessions(now int64) {
if now-nat.lastCheck < NatSessionCheckInterval {
return
}

if nat.count() < nat.checkThreshold {
return
}

nat.lastCheck = now
for index, session := range nat.sessions {
if session != nil && now-session.lastTouch >= NatSessionLifeSeconds { #### 这行写错了,你需要修改这行应该就 OK 了。
nat.sessions[index] = nil
nat.tbl.Unmap(session.srcIP, session.srcPort)
}
}
}
pagxir
2017-06-28 21:05:42 +08:00
@Chingim kone 确实只支持 linux 的。原理跟 https://github.com/cachefiles/proxyvpn 差不多,都是基于 user mode 的 NAT 实现。
flowerwrong
2017-06-28 21:11:18 +08:00
@pagxir 我加了一个有点限制的 mac 版本 pr https://github.com/xjdrew/kone/pull/11 用起来正常。
chocolatesir
2017-06-28 21:16:53 +08:00
这名字,我以为锐速又出路由器了
Mistwave
2017-06-28 22:35:42 +08:00
挺有趣的,支持一下
so898
2017-06-28 23:41:20 +08:00
VB 和 VM 还有 Parallels 有比较严重的兼容性问题
我的电脑只开 VB 都有概率 Kernal Panic ……
感觉要是能有 Docker 的方案可能会更好
yangyaofei
2017-06-28 23:51:51 +08:00
@Chingim 哦~~这个还挺需要的,毕竟很多游戏需要~

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

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

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

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

© 2021 V2EX