自从上次被腾讯莫名其妙的改面试地点挂掉之后就很不爽,面试这种宝贵的人生经验多多益善哉,所以抱着增长姿势的目的去投了个渣浪结果过了那个煞笔透顶的笔试(全是谭语言的笔试题你们真的要招运维?)然后竟然过了于是今天(7号,准确的说是昨天)去面了一下,总体而言因为面试官说自己实际上是 IT 而不是运维(渣浪的 IT 和网易的职能略有区别,渣浪的内部系统和私有云、容器、直播信号管理也是 IT 维护,相对来说不知道他们运维是不是只专注于业务运维,还顺便问了问渣浪对容器技术的使用情况,看起来明年才会在内部系统里大规模使用)

总结一下就是最有价值的问题是:“如何在客户端零配置的前提下根据需要,对于不同用户授予自动翻墙,且根据用户身份进行授权,避免无关人员使用翻墙出口“

简单的讲,除了类似 ss-redir+iptables 这种简单的方案,也可以使用 VPN,在网关上跑 VPN,再到 VPN server 出口进行路由切换,凤凰聚聚的博客:使用 IPSec 连接带有 chnroutes 的隧道网络配置小记

用户的身份认证可以通过自建 PKI 在用户接入网络的时候进行身份认证,根据不同的[……]

Read more

TL; DR

这是一篇吐槽,主要干货用最简单的话说就是:

  • thunderbolt3 是 USB-C 的超集
  • thunderbolt3 是 USB-C 的一种 alternate mode
    • 这两个观点都是对的并不矛盾
  • 实现上目前仅有的 TB3 控制器 Intel DSL6340/6540(代号Alpine Ridge)同时实现了 USB3 的控制器
  • USB-C 是一个接口的标准不是速率的标准,他可以是 USB2.0 也可以是 3.1 Gen2
  • USB-C 可以通过 alternate mode 原生支持 DP 和 HDMI 输出
  • USB-C 当前外设和线材市场极其混乱和原始

好了干货就这点不想看的请关浏览器。

  • 本文严重主观意见的吐槽,但不包含主观臆断
  • 为保护广大果粉的的身心健康,请果粉同志们切勿阅读
  • 本文保留一切解释权和拉黑权

原本看完了发布会就一肚子的不舒服,本来想当场写的然而那天白天有考试加之实在是被气的没力气写长文章就一直拖着;实际上现在发现还是有很多事情需要深究之后才能写,于[……]

Read more

shell 脚本如何判断所在目录问题

这是某业务广泛的 QQ 群里的一次讨论,尘光大前辈问起都是怎么获取脚本所在绝对路径。

首先有同学表示可以使用 pwd配合 $0参数,但是很明显脚本执行的时候并不一定在当前 working dir,这就会带来一个明显的问题就是,如果执行的方式是 ./a.sh,那么获取到的$0和 pwd 的结果才是相同的,否则就是不同的:

当然,可以说判断执行的方式,根据判断$0是否是绝对路径等方法可以区分这个情况,但是首先这样就变得麻烦,其次软链接的情况就不能通过这个判断,一个简单的验证:

尘光前辈关于软链接的实际应用的陈述:

~/bin/setup-firewall.sh -> /opt/gateway/bin/setup-firewall.sh 这种情况,如果是 ~/bin/setup-firewall.sh 这样运行的话,pwd的方案获取到的是 ~/bin/setup-firewall.sh,而不是 /o[……]

Read more

目录

  1. 什么是 Websocket
  2. 为什么使用 Websocket
  3. 性能理论分析
  4. Websocket 服务端和反代实践
  5. 对反代性能进行测试
  6. Websocket 和 HTTP

什么是 Websocket

Websocket 是起初由 HTML5 定义的一个建立在单 TCP 连接上的全双工通信协议,后从 HTML5 规范独立并由 RFC 6445 标准化,但仍被习惯性地称为 HTML5 Websocket。

Websocket 工作在 HTTP 的80和443端口并使用前缀 ws://或者 wss://(with ssl) 进行协议标注,但是实际上这个协议和 HTTP 并没有什么关联性,参见 RFC 6455 Section 1.7 的说明,在建立时,使用 HTTP/1.1 101状态码进行协议切换,当前标准不支持两个客户端之间不借助 HTTP 直接建立 Websocket 连接,参见 StackOverflow
[crayo[……]

Read more

在 Nginx 中,四层的数据被称为 stream,和四层代理有关的模块主要有:

  • ngx_stream_core_module:四层代理的基本功能模块
  • ngx_stream_upstream_module:四层代理转发到上游的模块
  • ngx_stream_proxy_module:四层代理相关配置

其他 stream 相关模块用于如 SSL 支持、geoip 支持、简单访问控制支持等,本次测试并没有使用到。

使用的注意事项

Nginx 的四层反代功能较为简单,其访问控制模块因为源站 IP 可以进行伪造,基本不可用于 UDP Flood 的防护。

使用健康检测功能的前提是他们在一个共享内存的 zone 里,注意各个区块的层次关系即可,zone 是配置上游服务器组共享内存的功能,因此 zone 要放在 upstream 区块。status 命令即监控dashboard 是 ngx_http_status_module 的内容,严格来说不是四层代理的部分。

我使用的 UDP 反代配置:[……]

Read more