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防火牆的端口,終於終於通了~~~