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