网络工程&情书

下面是位高人对于网络工程的一点看法,非常形象和生动,特转载过来,让我们来感受一下作者对于技术的热爱和雅兴。

我以为我们同属于/30,ping出timed out才明白处于不同的VLAN. 我尝试着用爱做route,并用Tracer来验证,complete的结果曾经让我感到兴奋无比.

接着,我试着用net use 打开你的心扉,我才发现原来你的net share并没有为我而start. 我开始急了,于是使用ping flood,希望有一天你能为我的执着而感动,可是TTL一次又一次过去了,你依然no response.我开始绝望了,可是一次偶然的机会让我发现原来你并没有处在DMZ里面,我才了解你还是很受伤的,才会把自己禁锢在intranet里面,但是我心里一直期待着vpn那天的到来,希望有一天你能够将我放在你的ACL内,到那时,我将会把我对你的爱用md5 encrypt,借着L2TP向你转达我对你的思念;

同时,你也可以用IPSEC向我倾诉你的寂寞,我深信,我们的爱经受得住IP V6的考验,因为我们的心与心之间,已经建立起了基于TB Fiber带宽的IP Tunnel.

——-为什么爱情不能像设置VLAN一样把不同的“IP”的人绑在一起.

为什么周遭的事物不能像创建ACL那样随心所欲的控制. 为什么相爱的人远在天涯却不能像做VPN一样,拉到近在咫尺. 为什么你我之间没有一个边界路由呢?我已经给你发了公告包了,可是你却没有学习我的路由表,你甚至连一个Default Route的机会都不给我. 你把自己一层一层的封闭,telnet…enable…conf t…ip router…是谁给了你address,是谁给了你router table,是谁给了你access-list,你的生活又遵循怎样的NAT.我想要加入你的网络,让你所有子网路由都向我发公告包吧!我能承受.

人生有太多太多的选择了,但是正是因为有了太多的选择,迷茫了~~~懊悔了~~~,不知道自己真正需要的是什么. 回头才发现,原来—我只要我们在一起,其它一切都是假的. 我从modem这样的一层设备一层层的爬,发现二层的switch不适合我,三层的router也不是我的归宿. 现在的我就像一个边界路由,不知道那些数据包应该何去何从.没有了你就没有了table,我要大喊一声,你就是我的机架,让我回到我的机架上吧!

直到有一天,“四层协议”告诉我,原来address是可以伪造的,就连MAC—Address都是可以伪造的.这一切都是假的,我被下层设备欺骗了.那些我曾经不屑的modem,switch…

你让我如何相信还有爱情….

Posted in 网络安全, 计算机网络 | Tagged , | Leave a comment

[Linux命令小技巧]关于seq的使用技巧.

seq 可以表达数字,一串数字。 例如 seq 50 就会从一打印到 50 个数字 ,还可以跳着出数。例如想每隔两个数出一个数字 seq 1 2 10 这样就只有奇数输出. 例如想产生一个前边家字符的循环 seq -f ‘yoyojacky%g’ 10 这样就会产生从yoyojacky1-yoyojacky10的字符串。
用于产生从某个数到另外一个数之间的所有整数
  例一:
  # seq 1 10
  结果是1 2 3 4 5 6 7 8 9 10
seq
-f, –format=FORMAT use printf style floating-point FORMAT (default: %g)
-s, –separator=STRING use STRING to separate numbers (default: \n)
-w, –equal-width equalize width by padding with leading zeroes

-f 选项 指定格式
例如:
#seq -f”%3g” 9 11
9
10
11
% 后面指定数字的位数 默认是”%g”,
“%3g”那么数字位数不足部分是空格
#sed -f”%03g” 9 11 这样的话数字位数不足部分是0
% 前面制定字符串
seq -f “yoyojacky%03g” 9 11
yoyojacky009
yoyojacky010
yoyojacky011

-w 指定输出数字同宽 不能和-f一起用
# seq -w -f”test%03g” 9 11
seq: format string may not be specified when printing equal width strings
# seq -w 99 103
099
100
101
102
103
输出是等宽状态的,前面会补零来满足字符长度.

-s 指定分隔符 默认是回车
seq -s” ” -f”student%03g” 9 11
student009 student010 student011

有朋友会问我这个东西做什么用呢?
生成序列有什么用途呢?
其实很多地方都可以用到的,这里举例说明一下,例如在企业里,新构建的邮件服务器需要批量添加用户帐户,100个.
用户名都是以stuff加上用户的序列号,例如stuff001, stuff002,这样的样式,并且需要生成8位随机密码,请你编写一个脚本来实现,做为管理员,你一定会想到很多方法,其中一个比较方便的方法就是写一个批处理添加帐户的脚本.
我们用到的命令是: useradd / passwd来进行帐户的添加和创建密码.可是这样不能够批量创建,想要批量创建的话,这些帐户的序列号很多,一个一个地输入很不方便,我们就可以结合脚本,结合shell的循环语句来实现:
批处理脚本如下:
仅供参考:

批量添加用户

批量添加用户

图中的一些内容需要讲解一下:
userlist=$(seq -f”student%03g” $NUMBER1 $NUMBER2) 语句是为了生成批量的用户,而for语句是为了实现循环, useradd是添加用户,
PASSWD=$(openssl rand -base64 5)这条语句是为了实现8位长度的随机密码, 利用的是openssl语句的随机码功能,rand是实现生成伪随机字节(man openssl 可以看到rand选项的功能是:rand Generate pseudo-random bytes.), base64是基于64位编码的算法, 最后一个5代表生成的随机码的长度:
[root@rhel5 /]# openssl rand -base64 10
TXmei9PawwOGyg==
[root@rhel5 /]# openssl rand -base64 5
kTPtyOA=
[root@rhel5 /]#
这里可以看出来,如果用10位的长度,算出的随机伪码长度16位,不便于用户使用,我们这里利用这个命令生成随机码是为了作为用户的初始密码使用的.所以5位长度的编码生成的随机码就正好8位,满足我们安全的需要了,因此这里用5而不用10或者别的数字.
批量添加用户的脚本执行后的结果:
[root@rhel5 /]# sh test.sh
请输入起始帐户编号(例如:l):1
请输入结束帐户编号(例如:100):5
student001
Changing password for user student001.
passwd: all authentication tokens updated successfully.
student002
Changing password for user student002.
passwd: all authentication tokens updated successfully.
student003
Changing password for user student003.
passwd: all authentication tokens updated successfully.
student004
Changing password for user student004.
passwd: all authentication tokens updated successfully.
student005
Changing password for user student005.
passwd: all authentication tokens updated successfully.
帐户创建完成!!
[root@rhel5 /]#
检查结果看看:
[root@rhel5 /]# tail -n 5 /etc/passwd
student001:x:504:504::/home/student001:/bin/bash
student002:x:505:505::/home/student002:/bin/bash
student003:x:506:506::/home/student003:/bin/bash
student004:x:507:507::/home/student004:/bin/bash
student005:x:508:508::/home/student005:/bin/bash
[root@rhel5 /]#
[root@rhel5 /]# tail -n 5 /etc/shadow
student001:$1$ATIgawOJ$RqNFEs9mU3.SXFi43QtMP.:15313:0:99999:7:::
student002:$1$4Lmxs2cM$Yr4fz7d2xZNcvXHytjn4m/:15313:0:99999:7:::
student003:$1$dY1sdDG5$DXr4ufg1LzamNKDfWhCiR.:15313:0:99999:7:::
student004:$1$qNQP74Jr$TDf1gJfJv2mvMHoX.uuLJ.:15313:0:99999:7:::
student005:$1$XYjo5ri2$pn7uAMZTCqwVaVKL0hwfj/:15313:0:99999:7:::
[root@rhel5 /]#
帐户和密码文件创建完成了,很迅速.
那么我们再去看看生成的随机密码文件:
[root@rhel5 /]# cat password.txt
student001 0jFNDY4=
student002 oeIZ3Dk=
student001 pb+FFi8=
student002 EQ4DqYQ=
student003 d0b7wvI=
student004 BPu1yRk=
student005 e093uig=
[root@rhel5 /]#
这样一来,管理员只要将这些密码交付给用户就可以让用户使用linux资源了.类似的管理需求只要举一反三就可以了…是不是很方便呢?

Posted in Linux | Tagged , , , , , , , , , | Leave a comment

[原创] 基于RHEL5构建DDNS服务器

说起DDNS,很多朋友都不是很陌生,DDNS是动态DNS的简称,什么是动态DNS呢?
就是DNS的数据库中的资源记录可以动态变化的DNS. 我们可以在网上申请的免费域名,例如www.oray.net公司提供的域名解析服务就是通过DDNS的原理实现的.我们在家使用的ADSL拨号上网每次下线后重新登录可能获得的IP地址都不是相同的,那么构建个人站点和绑定域名就成为了一个难题,例如我的个人域名: yoyojacky.vicp.net是长期不变的,可是我的IP地址却在动态变化,电信供应商给我的地址一产生变化,用户就无法通过域名快速访问到我的站点了,那么如果使用了DDNS服务的话,我的IP地址再怎么变化,都能够快速的将IP地址与域名的对应关系写入到DNS服务器数据库中,那么用户查询的时候就不会查不到我的地址了.不就实现了动态IP构建站点的作用了吗?
Continue reading

Posted in Linux | Tagged , , , , , , , , | 2 Comments