Browsed by
月份:2017年3月

linux路由表

linux路由表

详细的路由内容可以参考这个网站:http://linux-ip.net/

基于下面的一个事实:多个网卡的情况可以添加多个路由表
参考:

How to Add Multiple Routes in Linux Using ip Command Examples


https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System

路由表映射文件:
/etc/iproute2/rt_tables

这个文件是路由表的映射文件,一个id:name对,表示一个路由表
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep

其中内核使用的是main表。

route 命令就是查看内核路由表的main表

怎么增加一个新的路由表?
直接在上面的文件里面加入一行就可以了,比如:
1 testone
这样就加入了一个新的路由表,id为1,名字为testone

查看这个testone里面的路由规则:
ip route show table testone

在这个表里面加入规则:
加入的规则和正常加入规则一样,只是在后面要跟table testone参数:

ip route add default via 10.17.1.4 dev eth1 table testone

怎样删除增加的这个规则?
ip route del default table testone

有了table怎么才能让数据路由的时候使用这个新加的table?
用ip rule add 命令:

ip rule add from 192.168.0.4/24 table testone

上面的命令表示src为192.168.0.4的包用testone来投递

对应的删除rule:
ip rule del from 192.168.0.4

跟新路由缓存:
ip route flush cache
通过上面的步骤,一个可以工作的路由表应该就添加成功了。

有时候添加的路由表或者规则却没有按照你想要的方式进行匹配,当然我们也得有对应的调试方法。

通过下面的命令可以查看路由表的选择,匹配从优先级从小到大,
[root@test user]# ip rule show
0: from all lookup local
32765: from 192.168.0.4/24 lookup testone
32766: from all lookup main
32767: from all lookup default

怎么查看一个特殊的请求选择了哪一个路由规则?
用ip route get
ip -s route get 192.168.0.3/24 from 192.168.0.4 iis eth0

这个测试就是假设有一个数据包从网卡eth0进入,src:192.168.0.4 to:192.168.0.3/24,会选择哪一条路由?

命令ip route show cache也是一个非常重要的了解路由匹配的手段。

[root@test ~]# ip route show cache 192.168.1.4
local 192.168.1.4 from 192.168.1.2 dev lo src 192.168.1.4
cache iif peth1
从这个cache可以看出,这个路由是一个外面进来,目标为本机的数据。

[root@test ~]# ip route show cache 10.17.1.193
local 10.17.1.193 from 10.17.1.237 dev lo src 10.17.1.193
cache iif peth1
这个可以看出这个路由是local内部的路由

[root@test bin]# ip route show cache 192.168.1.4
192.168.1.4 from 10.17.1.237 dev em3 src 10.17.1.193
cache mtu 1500 advmss 1460 hoplimit 64 iif meth2
这个路由就是说目标192.168.1.4不是一个local的ip地址,也就是不在当前机器上,但是通过一条静态路由从meth2口转发出去了

这里面少了网络的拓扑结构,不太好理解,权当自己的笔记了,后面有时间优化一下,这部分知识还是比较有意思。

iptables自定义chain

iptables自定义chain

iptables应该可以算是一个脚本语言?基本概念比较简单,应用其实还是比较复杂。

基本词汇

chain:指这个规则发生的位置或者说时机。这个应该是内核钩子决定了的,没法改变。
  1. PREROUTING (路由前)
  2. INPUT (数据包流入口)
  3. FORWARD (转发管卡)
  4. OUTPUT(数据包出口)
  5. POSTROUTING(路由后)

table: 指这个规则的类型,对数据包做怎么样的操作?

  1. filter 定义允许或者不允许的
  2. nat 定义地址转换的
  3. mangle功能:修改报文原数据

table与chain的关系

不是任何位置都可以对包做任何操作的,table与chain有一些组合关系。
对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

下面是一个经典的图:

 

自定义chain

参考:
https://www.safaribooksonline.com/library/view/linux-server-hacks/0596004613/ch04s06.html

目的:方便管理我们自己添加的iptables规则而不影响原来的规则。添加和删除

创建一个chain:
>iptables -N name_of_chain

要删除chain有两步:

1先删除chain上的规则
>iptables -F name_of_chain

2删除chain
>iptables -X name_of_chain

既然是自定义chain,这个chain一定就要属于某个位置。

假设我们需要加两条自己定义chain,一条接入PREROUTING ,另一条接入POSTROUTING
暂时定义为:
PREROUTING_TEST
POSTROUTING_TEST怎么把自定义的chain加入到对应的位置?答案是从系统自带的chain进行跳转,处理完之后再跳转回来, 用-j参数。

iptables -t nat -A PREROUTING -j PREROUTING_TEST  #把PREROUTING_VIP链接到PREROUTING后面
iptables -t nat -A PREROUTING_TEST …#增加规则到自定义chain
iptables -A PREROUTING_TEST -j RETURN  #从自定义链退出到上一层链。这里就是PREROUTING同样的方法把POSTROUTING_TEST链加入到POSTROUTING后面

怎样删除一条规则

一般有两种方法,
第一个是通过规则的内容,在前面加-D进行删除。
iptables -D INPUT -s 127.0.0.1 -p tcp –dport 111 -j ACCEPT
第二种是基于chain和这条规则在这个chain上面的序号,序号从1开始,比如删除INPUT里第四条规则:
iptables -D INPUT 4
认字的一些尝试

认字的一些尝试

很久以前读过一个网友的教育博客,当时他用的是四五快读这套书来教小孩认字,网上看了一下,觉得挺好,也买了一册开始学习,第一册比较简单,学习也很顺利,断断续续的就学完了。

后面什么时候我再想起的时候,又买了第二册,第三册,但是后面的字句相对就要复杂,而学习到的字没有一个很好的材料来进行练习巩固。怎么讲呢?

材料是这样的:先学单字,然后是词语,后面会有一个小故事用了包含这些字词。

看起来还是很好的材料,不过问题在于小朋友觉得这样学起来无聊,故事读起来也不好玩,学习兴趣大减。当然我也是可以通过制定一些奖励计划来引导其学习,但是我还是希望这个学习更加的是从他的内心开始的,还得继续寻找。

后面在不经意发现了凯叔讲故事这个微信公众号,里面主要是用声音的方式来读绘本,不知道尝试了多久,小朋友就发现了他自己喜欢听的故事,每天晚上都要听,反复的听,他喜欢搞笑的。

有一次出去玩,我们搭同事的车,在车上神奇的事情发生了,他连续的讲了(背诵)好几个他喜欢的故事,比如:公主怎么挖鼻屎,谁能比我快,月亮冰激凌等。当时我们都觉得太惊奇了。

这之后,我就希望看能不能利用这个爱好,也让他认识一下这些汉字,于是我就在JD买了这些对应的绘本回来有时间就让他读一读。能背诵是一回事,能读完全是另外一回事,这个得单独的用一篇博客来总结 🙂

最近喜欢的两个故事是:石头汤和晴朗的一天,准备看个时间把这两本也买回来。

学教育学的时候就知道要因才施教,所以也不太想完全照搬别人的学习计划,而自己目前也没有很好的方案和计划,也是要不断的尝试。

stackoverflow的离线版本

stackoverflow的离线版本

前不久亚马逊s3宕机了几小时,再前不久gitlab也宕机了。这些服务从条款,功能的描述上来说,这样的宕机是不可能发生的!当然已经发生了,这对程序员群体的影响还是挺大的。本来我是很支持互联网是很脆弱的这一说法的,这些事件,当然不止这里提到的两个,不断的印证这一观点。然而我们却很难在短时间能有很好的办法应对。

很早以前我就在朋友圈里面调侃兜售S.O的离线版本,当然这肯定是开玩笑的。没有尝试过写爬虫去抓取内容,如果没有撒反爬虫机制的话,应该也不困难,就是很难想象我要用大的硬盘来存储这些数据。

之所以有来个真的离线版我其实也是有我的思考的。我一般到达S.O都是首先通过google的,google擅长什么啊?搜索,那么我如果光有个离线数据,没有google的搜索能力,有什么用?

等我空了研究一下,看看自己搞一个搜索的难度,如果能够达到80% google的效果,我觉得应该还是可以使用的一个程度。

关于坚持

关于坚持

坚持,这是一个说起来简单但是做起来很难的动作。坚持的对立面就是放弃,而放弃操作起来很简单!连小孩子都喜欢做简单的事情,依赖理智分析的成年人当然也不例外。

但是,往往能不能坚持做一个事情却决定了最后的结局!一个调侃性的话语是:再牛逼的梦想都经不起傻瓜的坚持。做一个翻译就是:只要你坚持,就会做成事情!

我不是一个善于坚持的人,我归结为毅力不够,执行力不够,也持续的在探索这背后的原因以及改进办法!但总不能找到,其实我也没有在寻找问题/答案的路上坚持下去,找找,找不到就放弃了!谁能坚持去找这样的东西呢?每天其他的各种事情都没办法做完!

我其中的一个探索是分析我最喜欢的是干什么,然后我就持续的去做这件事情!我知道很多时候我喜欢看美剧,美国电影。什么24小时啊,CSI啊,Walking Dead之类的,这些玩意花了我很多的时间,但是我回顾的时候却发现这些东西没给我带来什么价值,唯一的可能多了些谈资。这样我觉我应该是真的喜欢这件事:看美剧/电影。于是我有了一个计划,我得要坚持每天看至少一集美剧或者一部电影,然后写个影评!这个计划应该是还没有开始就结束了,不知道为什么,可能看剧其实不是我的真爱!

前不久朋友圈里面看到一个推荐,哈佛幸福课,说是能够治疗我这种情况,有病就得治啊!不管怎么说下面这个课程还是非常值得一看。

http://v.163.com/special/positivepsychology/

基于对这个课程的学习,我还是找到了一些新的方向,用一个词概括:routine

我首先是觉得这个理论还是很正确的,目前我还在探索如何建立routine.

再用回wordpress

再用回wordpress

都说程序员该多写代码,也该多写博客。我们不该拘泥于什么语言,不该拘泥于什么IDE,这也应该能够应用到我们写博客的工具选择上面。

但确实各种工具都有其优缺点。就像在console下面vim会优于eclipse,桌面上我也喜欢eclipse而不是vim。就像写一个快速概念验证我偏向于喜欢用python而不是C++,但是有些场景也只能用C++。这样的一些场景工具映射我有我的偏好。但是对于写博客的工具我却一直没有撒感觉。

最开始我应该是在hi.baidu.com上面写了很多C++学习的博客,但是写着写着工作忙就没写了,一不注意baidu已经把我的博客给删了,申诉也找不回来。除了百度滥发广告,我想这是我最恨百度的一次了。

hi.baidu.com之后我应该研究过很多blog平台,比如cnblog,csdn。我不太喜欢限制太多,或者出现一些平台相关的我却不能控制的内容,所以我还是不太喜欢博客平台,即使在这个平台上可以有一些流量优势,当然我写博客是为了自娱自乐,流量高低就无所谓了。就这么一直游离着,很多内容应该就写入了各种笔记软件。

我记得我中间是自己搭建过wordpress写博客的,但也不是很确切。

后面随着python使用的深入,认识了sphinx/reStrutruedText, 一下就被这个所想即所得的方式所吸引,我当时都完全不知道markdown的存在, rst在python领域里面还是有统治地位的,感觉不错。所以前后用sphinx,tinkker,  pelican做过一些静态博客的尝试。这一尝试就是几年时间过去了,唯一让我不用担心的就是维护,源代码/主题在手,github pages/vps你们挂你们的,我分分钟生成一个新的博客。 但其实我没有感觉到书写的开心,这个写作,build, 预览,修改,发布的流程让我很不开心,即使后面非常自动化了,我依然感觉这个流程有问题,但是也说不上来,就是这个流程会阻碍我开始一次写作。

这又是新的一次尝试,我“又”装回wp了,我像选择面对或者无视垃圾评论,服务器维护,数据备份,再试试所见即所得的博客形式,看看这到底会是怎么一个体验!

到今天这个博客已经运行有一段时间了,感觉不错!

用百词斩记单词

用百词斩记单词

之前自己尝试过用百词斩记单词,当时觉得很不错的两点一是图文结合,二是可以朋友pk,不过背单词终究是个体力活,可能不太容易长期坚持先去,反正我是好久没有用了。

最近想到小孩子马上上小学了,英语撒的怎么也该恶补一下,就想到了百词斩的图文结合。不过比较可惜的是没有入门级别的,找了一下最简单的都是初中,单词看起来还可以,也比较常用,就背背初中课标的吧。

250个单词,每天被五个,我猜测复习应该是按照艾宾浩斯遗忘曲线进行的,没有求证。

目前已经背了150个了,得到如下的观察:

1,图文的时候基本上都能够回忆,音频加文字的选择题比较困难,关键字还认识不多,哈哈

2,养成了规律晚上学习比较积极,因为完成250个有奖励。

3,音频加文字的复习很多时候乱猜,赶进度,如果没有监督指导这部分效果不会好。