关于科学上网流量分流的思考

目前的一些v2ray, clash工具等,是可以根据制定的ip段,要访问的ip地址的地理位置进行分流,是否走“gfw代理”还是直接连接。
那么又有一个问题,如果一个国外网站可以直接访问时,其实也没有必要走“gfw代理”。所以又需要借助gfw block list 名单。因为gfw的list更新总是会有滞后性,所以我们用switch omega时会需要经常自己手动的添加看似访问速度慢或者是却是被block的网站。那么是否可以写一个小应用动态更新gfw list呢。

1) 根据目标ip地址的geo如果是cn(国内)则直接访问,这个很多工具都是支持
2)如果非cn的ip地址,可以根据gfwlist,如果不在gfw block list中,则尝试直接访问。 如果访问几次(可以设定)超时,则自动加入gfw block list,并通过“gfw代理”再次访问。
3)对于静态资源文件可以通过访问其他地区的ip尝试访问,依赖于不同地区的dns 解析地址进行判断(为什么只针对静态资源文件等, 可能会存在web应用如果多个请求地址分别请求到不同的地理位置,可能会有些因为应用服务的原因导致功能异常,这个需要验证)。 因为这一步的执行可能会导致访问资源时间过长,需要在后台异步检测。如果成功,则可以从gfw block list再次移除。 下次访问时可以不通过远程dns解析。

科学上网trojan的安装和使用

最近无意中看到youtube推荐了后端关于v2ray,trojan的介绍,最早一直用goagent+套cdn的方式,虽然速度并不快看视频不太合适,但上网还是完全能够胜任的。 昨天尝试部署了trojan,可以正常使用,但是科学上网的网速并没有比goagent快多少(网速的问题后续我们再解释,定位中发现是digitalocean sfo location的vps的问题,这个待切换location后验证)。好了,我们就开始部署trojan 服务罢。

1) 首先你要有一个vps服务或者。 我使用digitalocean,是因为最早提供的ssd vps比较便宜容易瞎折腾,所以方便还是继续哟用了。 但因为do没有日本,香港的节点。亚洲只有新加坡(实测ping值比较高,但下载速度还是不错的)。 如果不做建站的话,目前的vps或者iaas的平台非常多了, 大家完全可以看看其他大厂的。有的还免费一年。

2) vps的系统选择linux服务器。 因为我的一台vps 5年前就已经存在, 所以这次就在centos上做了实验。

3) 安装server端的trojan服务。

首先我们简单的介绍一下大概的拓扑图。

所以我们需要安装有个trojan 服务(最少), trojan(client) server 是作为你本地使用的proxy服务, trojan (client) server 是一个socks5 服务, 然后收到browser的请求后, 封装成trojan的协议,发送给trojan server, trojan server 再请求被墙的网站。

trojan安装方法非常简单, github上有详细的介绍,照着安装通常不会有问题。
快速安装的文档: https://github.com/trojan-gfw/trojan/wiki/Binary-&-Package-Distributions

这个是配置文档: https://trojan-gfw.github.io/trojan/config

4) 配置项注意项。 更多…

linux系统的ssh客户端如何使用sz/rz上传下载文件?

linux在系统的gnome ssh terminal 如何使用sz/rz上传下载文件?如果我们在windows使用secure CRT , xhell 等ssh客户端工具,大家可能对sz/rz 命令并不陌生,但是我们如果我们的操作系统是linux,用linux的gnome ssh terminal 如何使用sz/rz 来进行上传下载文件呢?

使用screen命令,screen支持ZMODEM 协议。
从远端下载文件:

1) 启动一个screen窗口

然后按Ctrl+A, 然后输入:zmodem catch
正常情况下,会返回zmodem mode is catch, 那么表示已经开始可以捕捉zmodem协议传输文件了

2) ssh 远端跳板机,然后选择登陆的服务器。sz /path/file 回车后, 显示 :!!! rz -vv -b -E,然后文件就会被下载到运行screen -s downloadfile 时的当前目录。

同理, 如果上传文件

1) 第一步同上

2) ssh 到登陆的服务器后。 输入 rz 命令, :!!! sz -vv -b 提示后, 输入本地计算机的文件路径, 回车即可。

备注: 通常我们可以直接ssh登陆的服务器,并不需要使用 rz/sz, 直接scp即可。 但是我们ssh到跳板机这种情况, 可能就必须要借助sz/rz工具和 zmodem 协议了。 最后执行完任务后,记得exit,退出当前screen。

ubuntu openvpn客户端配置

公司最近的vpn由思科vpn提供商变为了免费的openvpn。windows的版本直接安装并拷贝相应的配置文件,打开openvpn直接提示你输入用户名密码, 我们输入域用户名密码即可。
在家里我的一台电脑是ubuntu 18.04 系统,只能手动去配置下了。大概搜索了方法,顺便记录一下。

1) 首先安装openvpn

2) 默认安装的配置路径位置在 /etc/openvpn/client /etc/openvpn/server
因为我们不需要自己搭建vpn服务,所以我们仅需要将公司提供给我们的car.crt 和 client.ovpn的文件放入 /etc/openvpn/client。 其次openvpn的linux版本安装的只是一个命令行,无gui, 也不会弹窗让你输入用户名,密码。所以我们需要将用户名和密码以文件的形式保存到 passwd 文件中。 第一行 用户名,第二行密码。 如果更换了密码,下次连接前手动前修改下密码即可。

3)启动openvpn客户端。

日志的输出是我们诊断问题尤其重要的,如果我们的客户端连接有问题,我们应该查找输出日志去协助诊断问题。

如果我们没有指定 –daemon 则会挂在前台, 如果指定–daemon后,则会后台运行。
启动成功后,我们ping下公司的内网地址,可以访问内网资源,我们就成功了。

4) 关于dns问题
更多…

rabbitmq 因为磁盘空间不足等问题无法重新启动的问题解决

当因为电源问题或者磁盘空间不足导致rabbitmq服务异常停止之后,再次重启无法启动的问题解决。

更多…

chrome如何设置允许网站支持flash

9月10日,加班回到家正好国足开始40强赛对战马尔代夫, 好久不关注比赛,打开pptv准备看下直播。 谁知道pptv还是用着flash的播放器, 而chrome 和 firefox 已经对flash插件明确将不再支持flash插件技术。 所以基本也默认设置为禁用flash。
chrome 弹出的明确的提示,显示 2020年12月(还是9月) 不再支持flash 插件, flash 技术以及flash矢量动画 看来终究要落幕。 youtube等国外的视频网站,早已支持了h5. 而国内的小厂不知道是什么原因,还是使用flash播放器。

那么chrome中如何设置网站允许启用flash呢?

通常老版本的chrome的方法已不再有效。1) chrome 设置中, 内容设置中 flash设置。 (新版chrome只能开启询问模式, 但不能添加例外) 2) chrome://flags flash相关设置

新版本的chrome设置方法, 打开网站后, 地址栏左上角点击 “查看网站信息” , 进入网站设置, 找到flash设置,设置为允许后。 重新刷新pptv网站,则不会再提示 “flash 版本过低或未启用”的提示了。

hissummer mock平台

hissummer mock平台数据库使用mongodb,前端使用vue ,后端springboot。

1. 首先安装mongodb, 版本需要大于3.2.0 , 因为使用到了mongodb runcommand的find命令。低版本的mongodb不支持。

2. 安装mongodb后,假设mongodb监听了端口号 27017

3. 下载mock平台软件
https://github.com/hissummer-mockserver/StandaloneJar/raw/master/mockserver-0.0.2-alpha.war (当前0.0.2版本)

4. 下载后执行

其中server.port 指定你的mock平台的端口号
spring.data.mongodb.host 是mongodb数据库的地址(这里我们部署到本地,所以指定为localhost)
spring.data.mongodb.port 是mongodb的端口号, 默认为27017

5. 启动后,打开 http://localhost:8081/ 即打开管理平台页面。

关于hissummer mockserver的项目介绍: 更多…

css去掉点击button按钮后的边框

h5中的button, 设置border:0 或 border:none 和 outline:0 或 outline:none 后,不会再显示按钮的边框。 但是点击选中后,当前button处于焦点时,仍会显示边框。
解决办法: button:focus{border:0; outline:0;} 即可。 focus表示,即使当前处于focus(焦点)状态时,仍然不显示border和outline。

利用springboot实现http mock 服务

实现原理:
1. springboot 搭建一个http restul service, 实现一个/error 接口(自定义的错误接口)
2. 当我们访问该服务时例如在 http://localhost:8080/api , 假设我们的springboot没有/api的requestmapping, 那么内部转到我们的自定义错误返回 /error, /error 的逻辑则去找对应的数据库中有没有定义/api 的mock 规则. 如果找到,则返回对应的mock 报文.

更多…

spring mvc 设置允许responsebody序列化SerializationFeature.WRITE_DATES_AS_TIMESTAMPS

问题:
使用spring boot 2.0 后, 较新的spring mvc HttpMessageConverters 如果存在jackson 库时,则默认使用自动配置的Jackson2ObjectMapperBuilder生成的转换器对消息进行转化。 序列化的结果可能并不是我们期望的,这时我们需要通过设置。 spring的官方文档地址: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html#howto-customize-the-jackson-objectmapper
更多…