OSPF的四种特殊区域简介

本文中的实验拓扑:

基础配置就不贴出来了,大家照着拓扑配一下就好~
注意:R2的回环地址使用重发布直连的方式加入OSPF路由表中,R3的回环地址不要宣告到OSPF路由表中!!!否则实验无法进行!!!
做完基础配置后在R3上查看路由表

Stub区域(末梢区域)
简述:
该区域的ABR不允许传播Type 5 LSA的路由信息。换成人话就是:Stub区域的路由器不能接受本AS外部的路由,作为补偿,ABR会发一个默认路由给Stub区域的所有路由器,告诉他们,你们不需要知道AS外部的路由信息,统统把数据包转发给我就妥妥的了。
配置方法:
R1:

router ospf 1
area 1 stub

R3:

router ospf 1
area 1 stub

查看R3的路由表,发现此时OE2路由已经消失了,被一条默认路由取代了,实验完成。

注意事项:
区域中有一台路由器配置为Stub后,其他所有路由器都要配置成Stub,否则无法建立邻居关系。
Totally Stub区域(完全末梢区域)
简述:
通过上面关于Stub区域的配置,可以发现,其实不只是来自外部的AS区域可以省略掉,连来自OSPF内其他区域的路由也可省略掉,让其全部通过ABR转发,当然这样做的前提是本区域不与除主干区域之外的其他区域相连。
配置方法:
R1:

router ospf 1
area 1 stub no-summary

R3:

router ospf 1
area 1 stub

查看R3的路由表,此时OE2类型和OIA类型的路由已经消失(不要和我较真说那条默认路由也是OIA类型的),被一条默认路由所取代,实验完成。

注意事项:
配置为Totally Stub区域的所有路由器都要配置stup,只有ASBR需要配置:stub no-summary。
NSSA区域
简述:
如果区域中存在一个ASBR,通过此路由器产生的路由条目需要在整个OSPF域内传播,而此区域又不想接收来自其他ASBR产生的路由,那么就可以将其配置为NSSA区域。
配置方法:
R1:

router ospf 1
area 1 nssa default-information-originate   //NSSA区域不会自动生成指向ABR的默认路由,需要手工下发。

R3:

redistribute connected subnets
router ospf 1
area 1 nssa

查看R1的路由表,此时成功学习到了从R3那里被重发布进OSPF的路由,类型是ON2。

查看R2的路由表,R2学习到的从R3引入的外部路由是一条OE2类型的,为什么不是和R1的表里一样是ON2类型呢?

查看R2的OSPF数据库,可以发现,3.3.3.0这条路由是从R1上通过LSA5学习到的,并不是从R3上学习到的。这是因为NSSA区域的边界ABR会将LSA7转成LSA5,传播到其他区域。这时,ABR也成为了ASBR,因为它也引入了LSA5。其它区域路由器看到LSA5的通告路由器是ABR。

查看R3的路由表,OE2类型的路由已经全部消失,取而代之的是一条ON2类型的指向ABR的默认路由。

注意事项:
NSSA区域的ABR上必须要在NSSA区域中发布一条指向自己的路由,否则会导致连通问题。
Totally NSSA区域
简介:
与Totally Stub区域一样,在不需要学习OSPF区域间路由时就可以把NSSA区域配置成Totally NSSA。
配置方法:
R1:

router ospf 1
area 1 nssa no-summary   //配置为Totally NSSA区域后会自动下发默认路由,不需要再手工下发。

神州数码设备需手工下发默认路由,使用如下命令。

area 1 nssa default-information-originate no-summary

R3:

redistribute connected subnets
router ospf 1
area 1 nssa

查看R3的路由表,发现OIA路由已经消失了,R1和R2的路由表同上一个实验。

注意事项:
Totally NSSA区域不需要手工分发默认路由,与Totally Stub区域一样,只要在ABR上配置nssa no-summary就可以,区域内其余的路由器只需要配置nssa。

路由策略和策略路由的区别的简单概述

路由策略:
通过修改路由协议的属性而达到干预路由表的内容的目的,路由策略在路由发现时起作用。
策略路由:
通过为指定的数据包指定下一条使其不按路由表中已有的转发条目转发,策略路由在路由转发时起作用,不会影响和改变路由表中的任何内容。

EBGP与IBGP的四个区别

1、路由环路的避免措施不一样,IBGP强制规定ibgp speaker不允许把从一个IBGP邻居学习到的前缀传递给其它IBGP邻居,因此IBGP要求逻辑全连接。EBGP没有这样的要求,EBGP对路由环路的避免是通过AS_PATH属性来实现的。
2、使用的BGP属性不同,例如IBGP可以传递LOCAL_PREF(本地优先属性),而EBGP不行。
3、IBGP有同步的要求,而EBGP没有同步的要求
4、IBGP不需要IBGP邻居之间有物理连接,只需要逻辑连接即可,而EBGP下一般情况下都要求EBGP邻居之间存在物理连接。

BGP路由信息传播规则

由EBGP邻居学来的信息肯定会传给另外的EBGP邻居。
由EBGP邻居学来的信息肯定会传给IBGP邻居。
由IBGP邻居学来的信息不会再传给另外的IBGP邻居。
由IBGP邻居学来的信息:
如果同步关了,会传给EBGP邻居 如果同步开了,先查找自己的IGP。
如果IGP里面有这个网络,就把这个网络传给EBGP;如果IGP里面没有这个网络,就不会 传给EBGP邻居

度娘,你TM在逗我?索引量涨了100又掉了100?

本月17号,发现网站的百度索引量一下子涨了快100,给我乐坏了,以为自己辛辛苦苦写了半年的博客终于要来流量了,我也终于要屌丝逆袭迎娶白富美了,而后几天索引量的持续增长更是让我陷入无尽的甜蜜之中~然而,25号又掉了快100的索引?????什么情况????度娘你TM在逗我?????人生大起大落来的太快,我已经不相信爱情了~

linux下的suid与guid权限介绍

以前一直好奇,在Linux权限中为什么有的时候会出现四位?比如0777,后来查阅资料才明白,原来前面的0代表suid和guid的权限。
suid和guid简介:
suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。
guid则表示执行相应脚本的用户将具有该文件所属用户组中用户的权限。
简单的举一个例子,当一个程序设置了suid的时候,如果一个本身没有权限访问/etc/passwd的用户执行了这个程序,则会获得此程序的所有者的权限,而如果此程序的所有者对/etc/passwd文件有访问权限,则执行此程序的所有用户都可以访问此文件。
是不是不大明白呀,下面再举个例子:

-rwxr-xr-x   1 root  root    12 09-02 15:21 my_test.sh

上面的my_test.sh文件权限是所属用户(root)是7,如果设置了suid,那么其他任何用户的权限都是7,如果设置了guid,那么任何用户的权限都是5。
设置suid和guid:
设置suid就是把0变为4,设置guid就把0变为2,如果都设置那就是6了
chmod 4777 my_test.sh                 #只设置suid
chmod 2777 my_test.sh                 #只设置guid
chmod 6777 my_test.sh                 #同时设置suid和guid

sendmail限制用户发送的邮件的大小

之前在一份国赛的试题上看到有一题要求限制sendmail发送邮件的附件大小,但是我翻遍了百度和谷歌,试遍了各种方法,也询问了来学校培训Linux的两位老师及外校一名久负盛名的指导教师,均未能得到有效答案。
记忆犹新的是,当我和其中一位培训老师说,我试遍了各种方法也行不通,想请老师指点的时候,对方直接抛给我一句话:我不知道,但这个题目已经考了好几次了,你在质疑赛题的准确性?自己百度去。。。汗。。。
最后我不得不妥协一步,既然无法限制附件的大小,那我直接限制整封邮件的大小好啦(邮件大小=正文+附件+邮件信息等附加内容的大小总和)。
编辑sendmail的/etc/mail/sendmail.cf配置文件

# vim /etc/mail/sendmail.cf

转到第186行(因软件版本号不同位置可能略有不同,可在vim中搜索关键字来查找),可以看到如下内容(翻译成中文是,每条消息的最大大小):

将# O MaxMessageSize=0选项前的注释去掉,其参数值就是每封邮件的最大值,单位是KB。例如,我想限制用户只能发送2MB大小的邮件则可以将其修改为如下形式:

O MaxMessageSize=2048

保存退出后直接重启sendmail服务就可以,不需要使用m4工具重新生成sendmail.cf文件,因为我们编辑的就是sendmail.cf文件。

# service sendmail restart

最后,尽情测试吧。

浅析邮件服务器原理

上面的架构图中包含两组邮件系统、两个客户端和一个DNS服务器,其中的邮件系统是企业中比较经典的架构形式,下面我将依据此图来简述邮件服务器的工作流程。

名词解释:

  • MUA 接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信,常见的有:outlook、foxmail;
  • MTA 通过SMTP协议发送、转发邮件,常见的有:sendmail、postfix、qmail;
  • MDA 将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描;
  • MRA 负责实现IMAP与POP3协议,与MUA进行交互;
  • SMTP 传输发送邮件所使用的标准协议;
  • IMAP 接收邮件使用的标准协议之一;
  • POP3 接收邮件使用的标准协议之一;
  • MailBox 用户邮箱;
  • cyrus-SASL及courier-authlib 提供用户认证相关的支持。
  • SQL 数据库,用于存储用户身份信息

前面的架构图中,MUA想发送邮件,就要将邮件通过SMTP协议送到MTA上,MTA通常会要求用户认证身份(也可不认证),认证通常使用SASL,认证源可以是像上面的架构图中那样使用SQL数据库也可以使用其他方式。MTA收到邮件后会检查邮件目的地址的邮件域,此时会产生两种情况。
情况一,目的邮件域是本服务器:
如果发现是本服务器的邮件域则将邮件送到MDA,由MDA将其投递到用户的邮箱(MailBox)中。最后用户在MUA上使用POP3/IMAP协议链接MRA,MRA通常也会要求用户认证身份,其认证源同MTA一样可以是SQL也可以是其他方式,若认证通过,则允许MUA读取邮件信息。
情况二,目的邮件域非本服务器:
若是邮件域是其他邮件服务器的,则MTA会发送UDP报文向DNS服务器查询邮件域对应的邮件主机,并最终解析出其IP地址,随后MTA会查询本服务器的转发控制策略,若允许转发,则将邮件转发到该域对应的服务器上,最终会重复情况一中MTA收到邮件后的处理方式。

sendmail邮件传输服务器

前言:

sendmail是UNIX和Linux下的老牌邮件传输代理程序(MTA),以稳定著称,一个调教的好的sendmail服务器能承受很大的任务量,其在企业中也比较常用。
本专题将向你介绍sendmail服务器的配置方法及配置过程中的注意事项。

实验环境:

服务器操作系统:CentOS 6.5
所用软件包:sendmail-8.14.4-8.el6.x86_64、sendmail-cf-8.14.4-8.el6.noarch、dovecot-2.0.9-7.el6.x86_64、bind-9.8.2-0.17.rc1.el6_4.6.x86_64、cyrus-sasl-plain.x86_64 0:2.1.23-13.el6_3.1、cyrus-sasl-devel.x86_64 0:2.1.23-13.el6_3.1
客户端操作系统:Windows 7
邮件客户端:FoxMail

文章列表:

一、邮件服务器工作原理浅析
二、使用sendmail搭建简单邮件传输服务
三、使用dovecot搭建简单邮件接收代理服务
四、sendmail开启基于sasl的smtp认证
五、sendmail下的邮件转发控制
六、sendmail下的邮件群发配置
七、用户邮箱大小限制
八、限制每封邮件的大小

常见问题及解决方案:

一、sendmail启动缓慢的解决方法
 
本专题内文章均为原创,谢绝转载。

vsftpd配置文件中各种选项的中文解释

参数 说明
listen_address=ip address 指定侦听IP
listen_port=port_value 指定侦听端口,默认21
anonymous_enable=YES 是否允许使用匿名帐户
local_enable=YES 是否允许本地用户登录
nopriv_user=ftp 指定vsftpd服务的运行帐户,不指定时使用ftp
write_enable=YES 是否允许写入
anon_upload_enable=YES 匿名用户是否可上传文件
anon_mkdir_write_enable=YES 匿名用户是否建立目录
dirmessage_enable=YES 进入每个目录是显示欢迎信息,在每个目录下建立.message文件在里面写欢迎信息
xferlog_enable=YES 上传/下载文件时记录日志
connect_from_port_20=YES 是否使用20端口传输数据(是否使用主动模式)
chown_uploads=YES、chown_username=whoever 修改匿名用户上传文件的拥有者
xferlog_file=/var/log/vsftpd.log 日志文件
xferlog_std_format=YES 使用标准文件日志
idle_session_timeout=600 会话超时,客户端连接到ftp但未操作
data_connection_timeout=120 数据传输超时
async_abor_enable=YES 是否允许客户端使用sync等命令
ascii_upload_enable=YES、ascii_download_enable=YES 是否允许上传/下载二进制文件
chroot_local_user=YES 限制所有的本地用户在自家目录
chroot_list_enable=YES、chroot_list_file=/etc/vsftpd/chroot_list 指定不能离开家目录的用户,将用户名一个一行写在/etc/vsftpd/chroot_list文件里,使用此方法时必须chroot_local_user=NO
ls_recurse_enable=YES 是否允许使用ls -R等命令
listen=YES 开启ipv4监听
listen_ipv6=YES 开启ipv6监听
pam_service_name=vsftpd 使用pam模块控制,vsftpd文件在/etc/pam.d目录下
userlist_enable=YES 此选项被激活后,vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,vsftpd查到该用户名在列表中,vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步聚
userlist_deny=YES 决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入密码的提示。NO,只允许在文件中的用户登录FTP服务器
tcp_wrappers=YES 是否允许tcp_wrappers管理
local_root=/home/ftp 所有用户的根目录,,对匿名用户无效
anon_max_rate 匿名用户的最大传输速度,单位是Byts/s
local_max_rate 本地用户的最大传输速度,单位是Byts/s
download_enable= YES 是否允许下载

使Linux程序在后台运行,即便SSH断开也不中断进程

有时候需要在Linux服务器上执行一些运算脚本,这些脚本通常要几个小时才能完成计算。而连接服务器的SSH一旦断开,脚本进程就会被系统立即杀死,但我们总不能把SSH一直挂着等待脚本执行结果吧?
这里可以使用nohup命令来防止在SSH中断时进程被杀死,命令格式如下。

# nohup 接命令

例如:

# nohup ping www.baidu.com

之后程序会提示说,命令的输出已经被重定向到nohup.out文件中了。

此时命令依然是运行在前台,可以使用Ctrl+Z组合键将进程挂起。

再使用bg+进程编号来将进程转入后台运行。

# bg 1


需要查看命令的输出怎么办?那自然是查看nohup.out文件的内容啦。

# cat nohup.out

神州数码路由器下IPSec VPN配置方法简介

IPSec介绍:
IPSec是由IETF制定的,用于保障在internet上传输数据的安全保密性的框架协议。
下面将使用一个实例来演示IPSec的配置过程。
设备清单:

DCR-2655路由器两台
PC机两台

拓扑:

IP地址表:

R1:
f0/0 192.168.0.1/24
s0/1 192.168.1.1/24
R2:
f0/0 192.168.2.1/24
s0/2 192.168.1.2/24
PC1:
192.168.0.2/24
PC2:
192.168.2.2/24

show running-config:
R1:

!
hostname R1
!
!
gbsc group default
!
!
crypto isakmp key password 192.168.1.2 255.255.255.255      #配置IKE预共享密钥与对端IP
!
!
crypto isakmp policy 10                                     #配置IKE策略
 hash md5                                                   #设置数字签名算法
!
crypto ipsec transform-set one                              #设置变换集
 transform-type esp-des esp-md5-hmac                        #设置加密算法与变换类型
!
crypto map my 10 ipsec-isakmp                               #配置加密映射表
 set peer 192.168.1.2                                       #设置对等体的IP地址
 set transform-set one                                      #关联变换集
 match address 101                                          #指定要加密的流量
!
!
interface FastEthernet0/0
 ip address 192.168.0.1 255.255.255.0
 no ip directed-broadcast
!
interface GigaEthernet0/3
 no ip address
 no ip directed-broadcast
!
interface GigaEthernet0/4
 no ip address
 no ip directed-broadcast
!
interface GigaEthernet0/5
 no ip address
 no ip directed-broadcast
!
interface GigaEthernet0/6
 no ip address
 no ip directed-broadcast
!
interface Serial0/1
 ip address 192.168.1.1 255.255.255.0
 no ip directed-broadcast
 crypto map my                                             #将加密映射表应用到端口
!
interface Serial0/2
 no ip address
 no ip directed-broadcast
!
interface Async0/0
 no ip address
 no ip directed-broadcast
!
!
ip route default 192.168.1.2
!
!
ip access-list extended 101
 permit ip 192.168.0.0 255.255.255.0 192.168.2.0 255.255.255.0
!

R2:

!
hostname R2
!
!
gbsc group default
!
!
crypto isakmp key password 192.168.1.1 255.255.255.255      #预共享密钥要与R1一致
!
!
crypto isakmp policy 10                                     #IKE策略配置要与R1一致
 hash md5
!
crypto ipsec transform-set one
 transform-type esp-des esp-md5-hmac                        #变换集加密算法及变换类型要与R1一致
!
crypto map my 10 ipsec-isakmp                               #密钥协商方式要与R1一致
 set peer 192.168.1.1
 set transform-set one
 match address 101
!
!
interface FastEthernet0/0
 ip address 192.168.2.1 255.255.255.0
 no ip directed-broadcast
!
interface GigaEthernet0/3
 no ip address
 no ip directed-broadcast
!
interface GigaEthernet0/4
 no ip address
 no ip directed-broadcast
!
interface GigaEthernet0/5
 no ip address
 no ip directed-broadcast
!
interface GigaEthernet0/6
 no ip address
 no ip directed-broadcast
!
interface Serial0/1
 no ip address
 no ip directed-broadcast
!
interface Serial0/2
 ip address 192.168.1.2 255.255.255.0
 no ip directed-broadcast
 crypto map my
 physical-layer speed 64000
!
interface Async0/0
 no ip address
 no ip directed-broadcast
!
!
ip route default 192.168.1.1
!
!
ip access-list extended 101
 permit ip 192.168.2.0 255.255.255.0 192.168.0.0 255.255.255.0
!

测试:
查看安全联盟信息。

R1#show crypto ipsec sa


打印出安全联盟的信息既是成功建立安全联盟,若没有成功建立则仅会返回如下的信息。

使用PC1 ping PC2,ping通既完成本实验(开始时会超时,耐心等待一会)。

名词解释:
IKE:
简而言之,IKE是用来协商并建立安全联盟的,两端都需要设置一个预共享密钥来认证对方身份。当然,也可以不使用IKE而使用手工方式建立安全联盟,本文中不讨论这种形式。
变换集:
变换集是用来加密传输的数据的(需指定加密算法与变换类型),加密时两端会使用非对称密钥,比较安全。
主要配置步骤及相关命令:
一、确定要经过VPN保护的数据流量

使用访问控制列表定义即可。

二、IKE策略设置

crypto isakmp policy 优先级<1-1000>

其下包含的命令:

authentication -- 设置验证方法
encryption -- 设置加密算法
group -- 设置Diffie-Hellman小组
hash -- 设置完整性算法
lifetime -- 设置ISAKMP SA的生命周期

三、设置IKE预共享秘钥

crypto isakmp key 密钥 对端IP 对端IP的掩码(默认是32位)

四、变换集设置

crypto ipsec transform-set 变换集名称

其下包含的命令:

mode -- 封装模式
transform-type -- 变换类型

五、配置IPSec加密映射(自动协商)

crypto map 映射表名称 序列号 ipsec-isakmp<自动协商密钥,手工配置为ipsec-manual>

其下包含的命令:

id -- 设置身份验证参数
match -- 匹配值
mode -- ISAKMP采用模式
set -- 设置加/减密参数

六、进入接口,应用IPSec加密映射

interface 接口名
crypto map 映射表的名称

做AC三层发现实验时用到的DHCP option 43选项详解

DHCP的option 43选项是告诉AP,AC的IP地址,让AP寻找AC进行注册。
option 43值形如:

option 43 hex 0104C0A801FD

其中,hex代表十六进制,其后的数值中,0104是固定形式(神州数码设备如此),随后的是AC的IP地址的十六进制形式。
上面的例子代表的IP是192.168.1.253。192的十六进制是C0,168的十六进制是A8,1的十六进制是01,253的十六进制是FD。

记录一个防火墙端口ping不通的问题

头一次接触防火墙,照着手册一顿配置后发现计算机ping不通网关(网关为防火墙三层端口)???
最后索性在防火墙上ping了下计算机,咦~是通的,这起码证明它们俩的通信应该是没问题,那问题的原因应该是防火墙上禁ping了。
查看了下防火墙的端口配置页面,发现了这个小细节。

本着试试看的心态,勾上了这个复选框之后再次尝试ping防火墙的端口,终于终于通了~~~