2019-10-17

Raspbian 开启 IPv6

最近中国联通开始陆陆续续下发 IPv6 业务了,可惜树莓派的 Raspbian 网络模块并不是完全采用 Debian 的网络模块,所以有些操作还不太一样。网络上的各种教程乱七八糟,并不好用,自己摸索了一下探索过程,经验总结如下:

1、在 /etc/modprobe.d/ipv6.conf 中将 IPv6 业务打开。

alias net-pf-10 off注释掉,同时将alias ipv6 off改为on

2、在 /etc/sysctl.conf 中开启IPv6

将disable IPv6 标签下的三项全部由1改为0

# disable IPv6
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

3、重启网络服务即可。

service networking restart

Enjoy~

2019-10-13

四层、七层负载均衡的区别

四层、七层负载均衡简介


所谓四层就是基于 IP + 端口的负载均衡;(运行在第四层:运输层)
七层就是基于 URL 等应用层信息的负载均衡;(运行在第七层:应用层)

同理,还有基于 MAC 地址的二层负载均衡和基于 IP 地址的三层负载均衡。

换句换说,

  • 二层负载均衡会通过一个虚拟 MAC 地址接收请求,然后再分配到真实的 MAC 地址;
  • 三层负载均衡会通过一个虚拟 IP 地址接收请求,然后再分配到真实的 IP 地址;
  • 四层通过虚拟 IP + 端口接收请求,然后再分配到真实的服务器;
  • 七层通过虚拟的 URL 或主机名接收请求,然后再分配到真实的服务器。


所谓的四到七层负载均衡,就是在对后台的服务器进行负载均衡时,依据四层的信息或七层的信息来决定怎么样转发流量。

比如四层的负载均衡,就是通过发布三层的 IP 地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行 NAT 处理,转发至后台服务器,并记录下这个 TCP 或者 UDP 的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。

七层的负载均衡,就是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征, 比如同一个 Web 服务器的负载均衡,除了根据 VIP 加 80 端口辨别是否需要处理的流量, 还可根据七层的 URL、浏览器类别、语言来决定是否要进行负载均衡。

举个例子,如果你的 Web 服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。

负载均衡器通常称为四层交换机或七层交换机。


  1. 四层交换机主要分析 IP 层及 TCP/UDP 层,实现四层流量负载均衡。
  2. 七层交换机除了支持四层负载均衡以外,还有分析应用层的信息,如 HTTP 协议 URI 或 Cookie 信息。

负载均衡分为 L4 Switch(四层交换),即在 OSI 第 4 层工作,就是 TCP 层啦。
此种 Load Balancer 不理解应用协议(如 HTTP/FTP/MySQL 等等)。例子:LVS,F5。

另一种叫做 L7 Switch(七层交换),OSI 的最高层,应用层。
此时,该 Load Balancer 能理解应用协议。例子: HAProxy,MySQL Proxy。

注意:上面的很多 Load Balancer 既可以做四层交换,也可以做七层交换。

当前可以看到对于 F5, Array 等硬件负载均衡设备本身也是支持 7 层负载均衡的,同时在 4 层负载均衡的时候我们还可以设置是否进行会话保持等高级特性。

明白 4 层负载均衡本质是转发,而 7 层负载本质是内容交换和代理,具体说明如下:

区别


1. 技术原理上的区别


所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

以常见的 TCP 为例,负载均衡设备在接收到第一个来自客户端的 SYN 请求时,即通过上述方式选择一个最佳的服务器, 并对报文中的目标 IP 地址进行修改(改为后端服务器 IP),直接转发给该服务器。

TCP 的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。

在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。



所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。 

以常见的 TCP 为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(TCP 三次握手)后,才可能接收到客户端发送的真正应用层内容的报文, 然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立 TCP 连接。

所以从这个技术原理上来看,七层负载均衡明显地对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。

2. 应用场景的需求


七层应用负载均衡的好处,是使得整个网络更“智能化”, 例如访问一个网站的用户流量,可以通过七层的方式,

将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务器并可以使用压缩技术。

当然这只是七层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务器的响应进行任意意义上的修改,极大的提升了应用系统在网络层的灵活性。 很多在后台(例如 Nginx 或者 Apache )上部署的功能可以前移到负载均衡设备上,例如客户请求中的 Header 重写,服务器响应中的关键字过滤或者内容插入等功能。

另外一个常常被提到功能就是安全性。网络中最常见的 SYN Flood 攻击,即黑客控制众多源客户端,使用虚假 IP 地址对同一目标发送 SYN 攻击,通常这种攻击会大量发送 SYN 报文,耗尽服务器上的相关资源,以达到 Denial of Service(DoS) 的目的。

从技术原理上也可以看出,四层模式下这些 SYN 攻击都会被转发到后端的服务器上;而七层模式下这些 SYN 攻击自然在负载均衡设备上就截止,不会影响后台服务器的正常运营。

另外负载均衡设备可以在七层层面设定多种策略,过滤特定报文,例如 SQL Injection 等应用层面的特定攻击手段,从应用层面进一步提高系统整体安全。

现在的 7 层负载均衡,主要还是着重于应用广泛的 HTTP 协议,所以其应用范围主要是众多的网站或者内部信息平台等基于 B/S 开发的系统。

4 层负载均衡则对应其他 TCP 应用,例如基于 C/S 开发的 ERP 等系统。

3. 七层应用需要考虑的问题


  1. 是否真的必要,七层应用的确可以提高流量智能化,同时必不可免的带来设备配置复杂,负载均衡压力增高以及故障排查上的复杂性等问题。
  2. 在设计系统时需要考虑四层七层同时应用的混杂情况。
  3. 是否真的可以提高安全性。例如 SYN Flood 攻击,七层模式的确将这些流量从服务器屏蔽,但负载均衡设备本身要有强大的抗 DDoS 能力,
  4. 否则即使服务器正常而作为中枢调度的负载均衡设备故障也会导致整个应用的崩溃。
  5. 是否有足够的灵活度。七层应用的优势是可以让整个应用的流量智能化,但是负载均衡设备需要提供完善的七层功能,满足客户根据不同情况的基于应用的调度。
  6. 最简单的一个考核就是能否取代后台 Nginx 或者 Apache 等服务器上的调度功能。
  7. 能够提供一个七层应用开发接口的负载均衡设备,可以让客户根据需求任意设定功能,才真正有可能提供强大的灵活性和智能性。


转载自:四层、七层负载均衡的区别 - Jamin Zhang
原文地址:https://jaminzhang.github.io/lb/L4-L7-Load-Balancer-Difference/

2019-09-28

温水煮青蛙(新篇)

三十只青蛙被放进了一个锅,过了一会有一只青蛙说:“诶这水有点温温的诶”。

其他青蛙嘲笑他:不要见的风就是雨。要相信锅,要相信厨师。

过了一会,这青蛙说:这水有点热的受不了了。

其他青蛙:这锅又没加盖,别的锅好你去别的锅里呆着啊。

于是这个青蛙就跳出锅子走了。

锅里的青蛙都很开心,因为厨师不断往锅里下料,各种米啊酱油啊都往里面放。青蛙们觉得,水热一点没关系,只要锅里的东西多,锅能稳定的放在炉子上,就对大家都有好处。

青蛙们不知道,那些下的佐料并不是给他们吃的。跳出去的那只青蛙劝锅里的青蛙要么把锅推翻,要么赶紧也跳出来。

锅里的青蛙们说,跳出青蛙锅的青蛙就不再是青蛙了,没有资格对青蛙锅说三道四。

厨师回到厨房发现一只青蛙已经跳出去了。厨师把那只青蛙捉回锅内,把锅盖盖上,并努力说服他们,锅盖只是门槛,真正有能力的青蛙还是能跳出去的,因为他们比较有判断是非的能力,该回到锅里的时候还是会回去的。

又过了一会,水开了,厨师很满意。

作者:你是谁
链接:https://www.zhihu.com/question/347846360/answer/837973115
来源:如何评价北京理工大学申请「基于长短期记忆网络的 V2ray 流量识别方法」专利?
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2019-09-09

在高校孤独很正常吗?

曾有人网上调侃如何鉴别大一、大二、大三、大四。

  • 大一:动辄一宿舍一齐出动,语笑嫣然,其乐融融,快上课时脚步匆匆。
  • 大二:三两成群,浅笑低语,淡定如斯。
  • 大三:单独行动,不急不躁。
  • 大四:常规时间并不能大规模见到他们。

所以,是不是很多人发现大学越来越孤独?

不论在学校还是其他,有几个问题我们无法回避:

合群还是离群?孤单的生活属于正常吗?

今天,与你分享一些小事,提供大家一个新的思考和切入角度:

孤单是连续的,不孤单是间断的。



1.上课时,你对永远坐在第一排或第二排的人怎么看?

大学上课我选择坐在第二排,一方面第一排要仰着脖子很难受,另一方面前两排上课时可以与老师近距离互动。

大部分同学躲在后面。

后来发现了另一个女生坐在第一排还是靠投影板的位置,她的专注度不亚于我。

慢慢地我和她就成了朋友,我们坐在第二排旁边,互相答疑解惑,一下课拉着老师问各种问题。

可以说我和她,两个人变成一个整体,是孤单的,也是正常的。

某天起她被调到别的班上课,只剩下我在第二排,我想,罢了,一个人的孤单也不是坏事。没有同学和你互动,我就和老师互动。

那时候,我完全没有想过,“完了,肯定会被大家嘲讽装学霸/刷存在感/期末蹭高分”。

上课的时候需要合群吗?和同学一起开黑吗?


2.一般吃饭你等别人呢,或是别人等你呢?

第一点中说的女生,刚开始她和我下课会一起去食堂吃饭,但是慢慢地有一件事情让我崩溃与不解,就是她每天都在餐厅三楼某个窗口打饭,吃不腻且吃得津津有味,更让我崩溃地是她吃饭速度还特别慢。

于是在忍耐一段时间后,我还是很委婉地和她提出:“很抱歉,以后下课我就随便找个地方吃一口,因为还有一些事情要忙。”解释了一番后,她很理解。

后来在学校里,我买了一个自行车,没事就去北门溜达换着吃,炸串都十几家了。

后来,自己又办了张健身卡,想充分利用自己的业余时间,强身健体,想让大学忙碌充实一点。

有一次,健身时遇见一个人,她也骑车,聊着聊着共同语言就多了。

发现她也是个爱闲逛的人之后,北门撸串时,就多了一个人。

但是我们每天有很多不同专业课,也没法经常一起出去。

我们俩也是孤单的。

3.你去自习或者晨读时,想让别人陪你,还是不想呢?

我是一个习惯边写边念的,用语言加强记忆的人。

我很担心打扰到别人,当然也担心别人打扰到我。

一般我会找一个空荡荡的自习室,或是在教学楼侧的走廊边读边来回走,加强记忆。

教学楼其实有很多这样的人,或是背英语,或是复习专业课,但我们彼此间隔一段距离,互不打扰。

因为这时候孤单是一件必须的事,也是各自坚守阵地的事。

在图书馆我认识了几个朋友,我们都有自己不同的专业课,也有不同的学习计划。

只要十点闭楼铃声响起,我们一起收拾书包,踩着月光回寝。

这时我们是孤单的。

但下了课,我们路过糖炒栗子的摊贩,买了热乎乎的栗子,边走边说着;

或是从小店铺里买了几杯奶茶,还互相鄙视对方口味清奇时,

我们又是不孤单的。



分享了这么多,大家应该明白了吧。

当你需要一个人努力的时候,你最好是孤单的,才可以全身心投入,哪怕你整天泡在图书馆。

当你的选择是小众或最与众不同的时候,你仍然可以在这份孤单里,找到和你一样另一个孤单的人。

或是一起孤单,各行其道,或是在和他们相遇的时候,多一分热闹。



说得通俗点:

寝室有6个人,刚入学的时候你们吃饭,哪怕洗澡都是呼朋引伴,集体行动。

但是后来你发现你们有不同的节奏,有的人早起叮叮当当,有的人晚起顶着鸡窝头上课。

还发现每个人都有ta自己的隐私空间,后来军训结束了,有一些人不再集体行动了。

但是还是有许多人黏在一起的,这时你有些恐慌了,把这当成你被孤立或是不合群的先兆。

于我而言未必,对于室友就尽量谋求在生活习惯和日常交流的投合。因为这样的成本是最低的,你们可以一起出门一起打水一起学习,有照应。但是,尽量谋求不是强求。

对于上课可以一起听讲,下课还可以互相讨论的学习好伙伴,你们已经有了在学业上的共鸣,就可以谋求在兴趣爱好上的投合,但若没有,也不用强求。

……



上课时有朋友A,
出去玩时有朋友B,
实验时有朋友C,
健身时有朋友D,
不用强求A、B、C、D是同一伙人,
也不要强求A、B、C、D真的存在一定数量的人。
这样生活会简单很多。

可能独处的时候你会觉得有些孤单,但你不是一个孤单的人,你知晓求同存异,也知晓如何和自己相处。


最后分享一段话:

大学孤独吗?孤独,太孤独了。

在以下这样的时刻:

当自习时;
当寝室熄灯时;
当沿着小路摘花时;
当一个人去医院挂号时;
当第一次在校园被骗时;
当实验室没有其他人时;
当雪后初霁窗台却只能写出一个名字时;
当看完一场其他人不感兴趣的电影回寝时;
当一个人食堂打饭,一手用筷一手盯着手机时;
当想到一个巨搞笑的段子却不知道该分享给谁时;
当晚上十点离开南教楼经过宿舍楼前明暗路灯时;
当发现大学同学大多数都没有目标,没有同行的人时。   

不过也还好: 

自习是自己当自己的老师;
熄灯后是冥思的最好时机;
摘花认草本来就是小众的; 
去医院挂号又不是动手术;
实验室师兄姐都很呵护我;
从此乞讨卖艺我再没被骗;
雪和窗户写的字都会消失;
没人爱看的电影由我支持;
放下手机品尝今天的饭菜;
巨搞笑的段子可以囤起来;
冬天宿舍的暖气永远洋溢; 

但 

大学里,你自己的目标,自己坚持就好。


改编自:在石大孤独很正常吗?
原帖地址:http://bit.ly/3176OQB

2019-09-07

leetcode - 复原IP地址

93. 复原IP地址 Restore IP Addresses

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
Given a string containing only digits, restore it by returning all possible valid IP address combinations.

示例: Example:

输入Input:  "25525511135"
输出 Output:  ["255.255.11.135", "255.255.111.35"]