yinqiwen / gsnova

Private proxy solution & network troubleshooting tool.
BSD 3-Clause "New" or "Revised" License
560 stars 189 forks source link

common/event 404 #35

Open distance00 opened 8 years ago

distance00 commented 8 years ago

gae编译失败, web.go:12: can't find import: "github.com/yinqiwen/gsnova/common/event" --- end server output --- 打开发现真的不存在 https://github.com/yinqiwen/gsnova/common/event

distance00 commented 8 years ago

顺便请教一下,client.json里面没有填google ip的地方,是不是完全要依赖SNIProxy?也就是说用SNI连出去了,直接用google的域名或任意ip就行了? "SNI":["www.google.com.hk", "www.google.co.jp"], 这个是干什么用的?"TLSDirect"和"gae"里面都有,"paas"下面留空。我把"TLSDirect"里面的注释掉了,发现还能正常用,没有任何区别。

jzp820927 commented 8 years ago

客户端不用自己编译吧,直接去 https://github.com/yinqiwen/gsnova/releases 下载官方编译好的版本就行了。 google 可以模仿 client.json 中的规则,自己定义一个 alias 就可以了。 关于 "SNI":["www.google.com.hk", "www.google.co.jp"], 我也不是大明白,只能问Y大了。

yinqiwen commented 8 years ago

@distance00 go path和github的url是两回事;
gae编译要用google的sdk编译
所有域名->ip需要在hosts.json里设置

distance00 commented 8 years ago

抱歉没有说清楚,我说的是服务端,上传到Google Appengine后服务端编译返回web.go:12: can't find import: "github.com/yinqiwen/gsnova/common/event" gae服务端的web.go第12行:import "github.com/yinqiwen/gsnova/common/event",但https://github.com/yinqiwen/gsnova/common/event是404。 @yinqiwen 服务端编译返回can't find,而import的地址刚好是404,真的一点关系没有?如果不从这个地址import,要从哪里import呢?服务端编译失败的原因是什么呢? 请教gae如果想用自己扫的google ip,是填在"google_https"里面吗?默认"google_https"指向"sni_proxy",是用sni来“直连”。gsnova支持google ip直连吗?

jzp820927 commented 8 years ago

不知道你部署 gae 的服务端是怎么部署的,我这儿部署 GAE 服务端没啥问题。 其实这个就和 hosts 文件一样的,指定 域名对应的 IP就行了,如果你想用 google 的 ip,把 google_https 设置为 google 的IP,不指定 sni 就行了。

distance00 commented 8 years ago

@jzp820927 比如说这样 "googlehttps":["216.58.200.21","59.20.132.98"], (里面填google gws gvs ip) ".google.com":["googlehttps"], 这样访问.google.com就通过google的ip直接了吧? 也就是不通过gae,直接这样一个pac就行了吗? "SNISniff": true, "PAC":[ {"Rule":["InHosts"],"Remote":"TLSDirect"}, ] 如果想通过gae呢?gae用google的gws gvs ip

distance00 commented 8 years ago

_跟_之间是不是自动斜体了?

distance00 commented 8 years ago

星号跟星号之间自动斜体。

distance00 commented 8 years ago

感觉用google的ip直接,似乎应该是Direct,对吧? "SNISniff": true, "PAC":[ {"Rule":["InHosts"],"Remote":"Direct"}, ] 似乎"SNISniff": 都不用是true?

yinqiwen commented 8 years ago

你可以找下那个package的引用,不止一处用到 另外,上传到gae要用gae的go sdk命令行并且设置好gopath等环境变量

distance00 notifications@github.com于2016年9月29日 周四 17:12写道:

星号跟星号之间自动斜体。

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/yinqiwen/gsnova/issues/35#issuecomment-250412881, or mute the thread https://github.com/notifications/unsubscribe-auth/AANmT6_6u76rlBVf5s4oK7Ik0-zlIA2Hks5qu4EWgaJpZM4KJUM2 .

yinqiwen

distance00 commented 8 years ago

既然开贴了就顺便再请教几个问题: paas经常i/o timeout是什么问题? 2016/09/29 16:57:55 channel.go:330: Failed to read channel for reason:read tcp 1 92.168.1.xx:50024->219.76.4.3:443: i/o timeout 用的是heroku,服务端原封上传。heroku支持DynamicPort吗?开的话开几个好? 偶尔还有Websocket read error,但用起来正常。 2016/09/29 16:57:55 ws.go:103: Websocket read error:read tcp 192.168.1.xx:50024-

219.76.4.3:443: i/o timeout 会不会跟"ReadTimeout"的设置有关?设置一个服务端出timeout,后来设了3个,timeout更多了。

yinqiwen commented 8 years ago

Timeout是长时间无数据传输引起 paas只能是固定端口,dynamic ports只能用在vps上

distance00 notifications@github.com于2016年9月29日 周四 17:27写道:

既然开贴了就顺便再请教几个问题: paas经常i/o timeout是什么问题? 2016/09/29 16:57:55 channel.go:330: Failed to read channel for reason:read tcp 1 92.168.1.xx:50024->219.76.4.3:443: i/o timeout 用的是heroku,服务端原封上传。heroku支持DynamicPort吗?开的话开几个好? 偶尔还有Websocket read error,但用起来正常。 2016/09/29 16:57:55 ws.go:103: Websocket read error:read tcp 192.168.1.xx:50024-

219.76.4.3:443: i/o timeout 会不会跟"ReadTimeout"的设置有关?设置一个服务端出timeout,后来设了3个,timeout更多了。

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/yinqiwen/gsnova/issues/35#issuecomment-250416125, or mute the thread https://github.com/notifications/unsubscribe-auth/AANmT0qPkYzeIj-bn2SwHZ_7FO6XFgxaks5qu4SJgaJpZM4KJUM2 .

yinqiwen

distance00 commented 8 years ago

@yinqiwen 感谢说明,感觉这个就跟paas的vendor一样,小白还是等官方部署包好了。

distance00 commented 8 years ago

一个奇怪的问题,用heroku美国服务器,访问www.google.com.hk,显示是埃及。Qesm Al Wahat Al Khargah, 埃及 访问www.google.com,显示弗吉尼亚州阿什本 在https://ipleak.net/中显示 United States - Washington

distance00 commented 8 years ago

ReconnectPeriod是不是防止服务器休眠的?

yinqiwen commented 8 years ago

持续不断的TCP长连接可能被干扰,需要重连避免

devcodewak commented 8 years ago

@yinqiwen y大好耐心解答:)

补下:gae目前版还未支持gvs,等新版go或自己动手

另,y大请看下 https://gitter.im/gsnova/Lobby

jzp820927 commented 8 years ago

@devcodewak 1.7.1 版的 go 应该支持了吧,你上次说的那个 commit 我看了下,是在 1.7.1 版时间前的。 @distance00 对,就是这样。 "google_https":["216.58.200.21","59.20.132.98"], (里面填google gws gvs ip) ".google.com":["google_https"], 配合 {"Rule":["InHosts"],"Remote":"TLSDirect"}, 就是直连了。不是 TLSDirect 就是 Direct,你试试就知道了,我也不太情况,这2个直连具体的区别。 如果要走 gae,就部署 GAE 的服务端,然后 {"Remote":"mygae"} 就行了,其实就是你想走什么代理,就选择对应的通道就行了。

devcodewak commented 8 years ago

@jzp820927 确认1.7.1 仍未支持。

jzp820927 commented 8 years ago

我看那个 commit 已经提交了,难道是还有 bug ?

devcodewak commented 8 years ago

1.7.1 发行版没含那个 commit

jzp820927 commented 8 years ago

好吧,难道那个 commit 被搁浅了。

distance00 commented 8 years ago

感谢解答。 @jzp820927 这样把 "*.appspot.com"也指向"google_https"这些ip,就等于给gae指定了ip。你不用说明它是哪种类型的ip,是不是SNI的ip真的是嗅探出来的。

jzp820927 commented 8 years ago

就是这样,你想什么域名用什么IP,就把对应域名指向对应IP的 名称就可以了,就和 hosts 一样的。只不过 hosts 直接指向IP,这个指向 IP 的名称。

distance00 commented 8 years ago

太强大了,不知道能不能在hosts中把某些网址指向另一个代理,比如: "*.example.com":["127.0.0.1:8087"],这样一个代理端口解决所有问题。

yinqiwen commented 8 years ago

hosts.json里只能是透明代理,比如sni proxy,或者 http proxy(不支持https流量)

distance00 commented 8 years ago

感谢说明,解释一下为什么会有这种需求,不知道有没有别的办法实现。 livestreamer这个软件可以把很多网络视频直接在播放器中播放,比如用potplayer来播放youtube,twitch等等网站的视频,但是potplayer只能识别系统代理,系统pac都不认。不同的网站要用不同的代理,就只能手动去换系统代理,同时开两个不同网站的视频就不可能了。不知道有没有一个软件能把pac转成一个代理? 不清楚hosts.json的内部工作原理,但已经能实现部分的功能了,如果有一个办法能指向另一个代理,就增加了无限的灵活性,尺有所短,寸有所长,有时候可能需要相互补充,如果能在gsnova实现这个功能,就真的一剑在手,天下无敌了。

distance00 commented 8 years ago

能不能这样,加一个inproxy,pac这样写 "PAC":[ {"Rule":["inproxy"],"Remote":"ProxyDirect"}, ] 加个Channel "Channel":[ { "Enable":true, "Type":"Pdirect", "Name":"ProxyDirect" },

yinqiwen commented 8 years ago

有熟悉nodejs的,这个功能应该非常容易实现;其它语言实现会比较麻烦,因为PAC实际是js语言,需要集成一个js解释器 ;nodejs有人已经干过,比如 https://github.com/hackwaly/http-proxy-pac

如果是自定义的规则,实现起来是比较容易的;之前的gsnova版本支持编写一个SPAC规则配置,其中有一个forward规则可以将代理的流量forward到第三方proxy(http/socks5),可以做到类似的事情。
https://github.com/yinqiwen/gsnova/tree/develop

distance00 commented 8 years ago

感谢,我研究下,感觉gsnova设置代理类型本身就用的pac,应该实现起来相对比较容易,不知道能否考虑下?

jzp820927 commented 8 years ago

这个是要在内部做透明转发啊。