Ubuntu Server 18.04 上 SNMP 的安裝胧辽、配置峻仇、啟動及測試

前言

從事信息系統(tǒng)運維工作,少不了跟SNMP打交道邑商,說來慚愧摄咆,多年來一直不求甚解,懵懵懂懂的使用SNMP和網(wǎng)管軟件人断。至于這方面的資料和教程也鮮有完整透徹的吭从,國內(nèi)的要么不完整,要么太舊了恶迈,自己的英文又不靈涩金。這里就是將自己的學習使用軌跡記錄下來,以便以后用到時能省點事暇仲。

這里使用的操作系統(tǒng)為:Ubuntu Server 18.04.4 Amd64 版本(2020年3月29日)

一步做、安裝

我們需要安裝下面三個軟件包:

snmpd //snmp服務端軟件
snmp //snmp客戶端軟件
snmp-mibs-downloader //用來下載更新本地mib庫的軟件

執(zhí)行下面的命令安裝這三個軟件:

$ sudo apt-get install snmpd snmp snmp-mibs-downloader

需要注意的是,在安裝snmp-mibs-downloader的過程中奈附,程序會幫我們自動下載mib庫全度,并保存在/usr/share/snmp/mibs目錄中。如果發(fā)現(xiàn)沒有些目錄或文件的話斥滤,在安裝完snmp-mibs-downloader后也可以手動執(zhí)行下面的命令來下載mib庫(會有很多輸出信息):

$ sudo download-mibs

還有一個開源程序包将鸵,叫做“Net-SNMP”的勉盅,工具很全很專業(yè),是一種開放源代碼的 SNMP 協(xié)議實現(xiàn)咨堤。它支持 SNMP v1, SNMP v2c 與 SNMP v3菇篡,并可以使用 IPV4 及 IPV6 。也包含 SNMP Trap 的所有相關實現(xiàn)一喘。Net-SNMP 包含了SNMP實用程序集和完整的SNMP開發(fā)庫驱还。Net-SNMP 可以通過snap直接網(wǎng)絡安裝:

$ sudo snap install net-snmp

二、配置

其實在安裝完snmpd軟件后凸克,系統(tǒng)是為我們自動開啟了這個服務的:

$ sudo service snmpd status

現(xiàn)在议蟆,我們先來進行一些簡單的測試,看看服務是否正常:

$ snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.1.1
iso.3.6.1.2.1.1.1.0 = STRING: "Linux ubunsvr 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64"

有信息返回萎战,那么接下來就直接進行各種配置了咐容。這里討論和使用的都是SNMPv2(最新的SNMPv3我還在迷糊中)。

配置節(jié)點蚂维。修改/etc/snmp/snmpd.conf文件:

$ sudo nano /etc/snmp/snmpd.conf

找到:

view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25.1

注釋掉上面兩行戳粒,增加下面一行:

#view   systemonly  included   .1.3.6.1.2.1.1
#view   systemonly  included   .1.3.6.1.2.1.25.1
view   systemonly  included   .1

這樣的話,我們就可以獲取更多的節(jié)點信息虫啥,因為如果不這樣做蔚约,我們能夠獲取的信息僅僅是上面兩個注釋掉的節(jié)點所包含的信息。修改之后涂籽,重啟snmp服務苹祟,再使用命令觀察一下:

$ sudo service snmpd restart

$ sudo snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
iso.3.6.1.4.1.2021.4.3.0 = INTEGER: 4015100

沒有問題!不過需要注意的是评雌,這里.1.3.6.1.4.1.2021.4.3.0表示的是LInux主機交換空間(swap)總量的一個節(jié)點树枫,而輸出4015100 kB,就說明我們的主機上的交換空間總量大概就是4GB左右景东。

配置MIB庫砂轻。雖然上面已經(jīng)可以正常獲取我們想要的信息,但是輸出結(jié)果很不直觀斤吐,這時我們配置一下MIB庫就可以了舔清,不過需要注意的是,這個配置是對客戶端軟件的配置(只不過現(xiàn)在我的這臺機器既是服務器也是客戶機)曲初。修改/etc/snmp/snmp.conf配置文件,將下面這一行注釋掉:

$ sudo nano /etc/snmp/snmp.conf

#mibs :

然后重啟snmp服務杯聚,再通過命令觀察:

$ sudo service snmpd restart

$ snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.4.3.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4015100 kB

可以看到臼婆,現(xiàn)在的輸出就非常直觀了!這樣之后幌绍,其實我們在獲取相關節(jié)點信息時颁褂,也可以不用輸入那一長串的數(shù)字了:

$ snmpwalk -v 2c -c public localhost memTotalSwap.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 4015100 kB

$ snmpwalk -v 2c -c public localhost memTotalReal.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 4015876 kB

其實這樣之后故响,你也就能夠發(fā)現(xiàn)使用SNMP是有多么地強大了!關于MIB庫的節(jié)點值從哪里來颁独,不需要去記彩届,可以在網(wǎng)上找,也可以看這個文檔的后面部分誓酒。當然樟蠕,如果你想知道是什么意思,為什么要這樣定義靠柑,那么我建議你去看相關專業(yè)的書籍寨辩,一個不錯的推薦是《SNMP簡單網(wǎng)絡管理協(xié)議》,另一個推薦是神書《TCP/IP詳解 卷1:協(xié)議》歼冰,如果網(wǎng)絡基礎不太好的話靡狞,也可以去學習一下。需要注意的是隔嫡,現(xiàn)在只是在服務器端進行配置和測試甸怕,其實這一步的操作應該是在客戶端完成的,這里只是為了方便腮恩。

《TCP/IP詳解 卷1:協(xié)議》
《SNMP簡單網(wǎng)絡管理協(xié)議》

配置社區(qū)名(共同體)梢杭。其實所謂社區(qū)名,把它理解為一個密碼就行了庆揪,前面我們在使用snmpwalk命令獲取主機的信息時式曲,有一個“-c public”的參數(shù),其實就是指定了這個社區(qū)名為“public”缸榛,這是默認的配置吝羞,當然在實際中,我們不可能使用默認的值内颗,因此需要把它修改一下钧排。修改配置文件“/etc/snmp/snmpd.conf”,將下面的兩行:

$ sudo nano /etc/snmp/snmpd.conf

rocommunity public  default    -V systemonly
rocommunity6 public  default   -V systemonly

修改為:

rocommunity osbear  default    -V systemonly
rocommunity6 osbear  default   -V systemonly

那么這里就把社區(qū)名修改為osbear了均澳,重啟snmp服務恨溜。

$ sudo service snmpd restart

三、Net-SNMP 的幾個工具

Net-SNMP 包含很多功能找前,這里僅將自己爬網(wǎng)看到的記錄一下糟袁,詳細深入學習請移步專業(yè)網(wǎng)站。

snmpnetstat命令可以從支持 SNMP 的設備獲取特定的信息躺盛。比如下面的命令從目標系統(tǒng)上獲得類似 netstat 的信息:

$ sudo snmpnetstat -v 2c -c public localhost
...
Active Internet (udp) Connections
Proto Local Address Remote Address PID
udp4 *.37634 . 6436
udp4 *.39879 . 0
udp4 localhost.snmp . 6436
udp4 localhost.domain . 0
...

$ sudo snmpstatus -v 2c -c public localhost
[UDP: [127.0.0.1]:161->[0.0.0.0]:46141]=>[Linux ubunsvr 4.15.0-91-generic #92-Ubuntu SMP Fri Feb 28 11:09:48 UTC 2020 x86_64] Up: 0:37:35.60
Interfaces: 2, Recv/Trans packets: 101897/64830 | IP: 62842/57591

snmptranslate 命令將 MIB OIDs 的兩種表現(xiàn)形式 ( 數(shù)字及文字 ) 相互轉(zhuǎn)換项戴,并顯示 MIB 的內(nèi)容與結(jié)構,如下所示:

$ sudo snmptranslate .1.3.6.1.2.1.1.3.0
DISMAN-EVENT-MIB::sysUpTimeInstance

$ snmptranslate -On SNMPv2-MIB::sysUpTime.0
.1.3.6.1.2.1.1.3.0

四槽惫、Linux SNMP 常用結(jié)點值
1周叮、針對Linux主機的對象標識符

(1)CPU負載
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3

(2)CPU信息
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0

(3)內(nèi)存使用
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0

(4)磁盤使用
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1

(5)系統(tǒng)運行時間
.1.3.6.1.2.1.1.3.0

2辩撑、MIB對象標識符

(1)System組
sysDescr 1.3.6.1.2.1.1.1
sysObjectID 1.3.6.1.2.1.1.2
sysUpTime 1.3.6.1.2.1.1.3
sysContact 1.3.6.1.2.1.1.4
sysName 1.3.6.1.2.1.1.5
sysLocation 1.3.6.1.2.1.1.6
sysServices 1.3.6.1.2.1.1.7

(2)Interfaces組
ifNumber 1.3.6.1.2.1.2.1
ifTable 1.3.6.1.2.1.2.2
ifEntry 1.3.6.1.2.1.2.2.1
ifIndex 1.3.6.1.2.1.2.2.1.1
ifDescr 1.3.6.1.2.1.2.2.1.2
ifType 1.3.6.1.2.1.2.2.1.3
ifMtu 1.3.6.1.2.1.2.2.1.4
ifSpeed 1.3.6.1.2.1.2.2.1.5
ifPhysAddress 1.3.6.1.2.1.2.2.1.6
ifAdminStatus 1.3.6.1.2.1.2.2.1.7
ifOperStatus 1.3.6.1.2.1.2.2.1.8
ifLastChange 1.3.6.1.2.1.2.2.1.9
ifInOctets 1.3.6.1.2.1.2.2.1.10
ifInUcastPkts 1.3.6.1.2.1.2.2.1.11
ifInNUcastPkts 1.3.6.1.2.1.2.2.1.12
ifInDiscards 1.3.6.1.2.1.2.2.1.13
ifInErrors 1.3.6.1.2.1.2.2.1.14
ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15
ifOutOctets 1.3.6.1.2.1.2.2.1.16
ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17
ifOutNUcastPkts 1.3.6.1.2.1.2.2.1.18
ifOutDiscards 1.3.6.1.2.1.2.2.1.19
ifOutErrors 1.3.6.1.2.1.2.2.1.20
ifOutQLen 1.3.6.1.2.1.2.2.1.21
ifSpecific 1.3.6.1.2.1.2.2.1.22

(3)IP組
ipForwarding 1.3.6.1.2.1.4.1
ipDefaultTTL 1.3.6.1.2.1.4.2
ipInReceives 1.3.6.1.2.1.4.3
ipInHdrErrors 1.3.6.1.2.1.4.4
ipInAddrErrors 1.3.6.1.2.1.4.5
ipForwDatagrams 1.3.6.1.2.1.4.6
ipInUnknownProtos 1.3.6.1.2.1.4.7
ipInDiscards 1.3.6.1.2.1.4.8
ipInDelivers 1.3.6.1.2.1.4.9
ipOutRequests 1.3.6.1.2.1.4.10
ipOutDiscards 1.3.6.1.2.1.4.11
ipOutNoRoutes 1.3.6.1.2.1.4.12
ipReasmTimeout 1.3.6.1.2.1.4.13
ipReasmReqds 1.3.6.1.2.1.4.14
ipReasmOKs 1.3.6.1.2.1.4.15
ipReasmFails 1.3.6.1.2.1.4.16
ipFragsOKs 1.3.6.1.2.1.4.17
ipFragsFails 1.3.6.1.2.1.4.18
ipFragCreates 1.3.6.1.2.1.4.19
ipAddrTable 1.3.6.1.2.1.4.20
ipAddrEntry 1.3.6.1.2.1.4.20.1
ipAdEntAddr 1.3.6.1.2.1.4.20.1.1
ipAdEntIfIndex 1.3.6.1.2.1.4.20.1.2
ipAdEntNetMask 1.3.6.1.2.1.4.20.1.3
ipAdEntBcastAddr 1.3.6.1.2.1.4.20.1.4
ipAdEntReasmMaxSize 1.3.6.1.2.1.4.20.1.5

(4)ICMP組
icmpInMsgs 1.3.6.1.2.1.5.1
icmpInErrors 1.3.6.1.2.1.5.2
icmpInDestUnreachs 1.3.6.1.2.1.5.3
icmpInTimeExcds 1.3.6.1.2.1.5.4
icmpInParmProbs 1.3.6.1.2.1.5.5
icmpInSrcQuenchs 1.3.6.1.2.1.5.6
icmpInRedirects 1.3.6.1.2.1.5.7
icmpInEchos 1.3.6.1.2.1.5.8
icmpInEchoReps 1.3.6.1.2.1.5.9
icmpInTimestamps 1.3.6.1.2.1.5.10
icmpInTimestampReps 1.3.6.1.2.1.5.11
icmpInAddrMasks 1.3.6.1.2.1.5.12
icmpInAddrMaskReps 1.3.6.1.2.1.5.13
icmpOutMsgs 1.3.6.1.2.1.5.14
icmpOutErrors 1.3.6.1.2.1.5.15
icmpOutDestUnreachs 1.3.6.1.2.1.5.16
icmpOutTimeExcds 1.3.6.1.2.1.5.17
icmpOutParmProbs 1.3.6.1.2.1.5.18
icmpOutSrcQuenchs 1.3.6.1.2.1.5.19
icmpOutRedirects 1.3.6.1.2.1.5.20
icmpOutEchos 1.3.6.1.2.1.5.21
icmpOutEchoReps 1.3.6.1.2.1.5.22
icmpOutTimestamps 1.3.6.1.2.1.5.23
icmpOutTimestampReps 1.3.6.1.2.1.5.24
icmpOutAddrMasks 1.3.6.1.2.1.5.25
icmpOutAddrMaskReps 1.3.6.1.2.1.5.26

(5)TCP組
tcpRtoAlgorithm 1.3.6.1.2.1.6.1
tcpRtoMin 1.3.6.1.2.1.6.2
tcpRtoMax 1.3.6.1.2.1.6.3
tcpMaxConn 1.3.6.1.2.1.6.4
tcpActiveOpens 1.3.6.1.2.1.6.5
tcpPassiveOpens 1.3.6.1.2.1.6.6
tcpAttemptFails 1.3.6.1.2.1.6.7
tcpEstabResets 1.3.6.1.2.1.6.8
tcpCurrEstab 1.3.6.1.2.1.6.9
tcpInSegs 1.3.6.1.2.1.6.10
tcpOutSegs 1.3.6.1.2.1.6.11
tcpRetransSegs 1.3.6.1.2.1.6.12
tcpConnTable 1.3.6.1.2.1.6.13
tcpConnEntry 1.3.6.1.2.1.6.13.1
tcpConnState 1.3.6.1.2.1.6.13.1.1
tcpConnLocalAddress 1.3.6.1.2.1.6.13.1.2
tcpConnLocalPort 1.3.6.1.2.1.6.13.1.3
tcpConnRemAddress 1.3.6.1.2.1.6.13.1.4
tcpConnRemPort 1.3.6.1.2.1.6.13.1.5
tcpInErrs 1.3.6.1.2.1.6.14
tcpOutRsts 1.3.6.1.2.1.6.15

(6)UDP組
udpInDatagrams 1.3.6.1.2.1.7.1
udpNoPorts 1.3.6.1.2.1.7.2
udpInErrors 1.3.6.1.2.1.7.3
udpOutDatagrams 1.3.6.1.2.1.7.4
udpTable 1.3.6.1.2.1.7.5
udpEntry 1.3.6.1.2.1.7.5.1
udpLocalAddress 1.3.6.1.2.1.7.5.1.1
udpLocalPort 1.3.6.1.2.1.7.5.1.2

(7)SNMP組
snmpInPkts 1.3.6.1.2.1.11.1
snmpOutPkts 1.3.6.1.2.1.11.2
snmpInBadVersions 1.3.6.1.2.1.11.3
snmpInBadCommunityNames 1.3.6.1.2.1.11.4
snmpInBadCommunityUses 1.3.6.1.2.1.11.5
snmpInASNParseErrs 1.3.6.1.2.1.11.6
NOT USED 1.3.6.1.2.1.11.7
snmpInTooBigs 1.3.6.1.2.1.11.8
snmpInNoSuchNames 1.3.6.1.2.1.11.9
snmpInBadValues 1.3.6.1.2.1.11.10
snmpInReadOnlys 1.3.6.1.2.1.11.11
snmpInGenErrs 1.3.6.1.2.1.11.12
snmpInTotalReqVars 1.3.6.1.2.1.11.13
snmpInTotalSetVars 1.3.6.1.2.1.11.14
snmpInGetRequests 1.3.6.1.2.1.11.15
snmpInGetNexts 1.3.6.1.2.1.11.16
snmpInSetRequests 1.3.6.1.2.1.11.17
snmpInGetResponses 1.3.6.1.2.1.11.18
snmpInTraps 1.3.6.1.2.1.11.19
snmpOutTooBigs 1.3.6.1.2.1.11.20
snmpOutNoSuchNames 1.3.6.1.2.1.11.21
snmpOutBadValues 1.3.6.1.2.1.11.22
NOT USED 1.3.6.1.2.1.11.23
snmpOutGenErrs 1.3.6.1.2.1.11.24
snmpOutGetRequests 1.3.6.1.2.1.11.25
snmpOutGetNexts 1.3.6.1.2.1.11.26
snmpOutSetRequests 1.3.6.1.2.1.11.27
snmpOutGetResponses 1.3.6.1.2.1.11.28
snmpOutTraps 1.3.6.1.2.1.11.29
snmpEnableAuthenTraps 1.3.6.1.2.1.11.30

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仿耽,隨后出現(xiàn)的幾起案子合冀,更是在濱河造成了極大的恐慌,老刑警劉巖项贺,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件君躺,死亡現(xiàn)場離奇詭異,居然都是意外死亡敬扛,警方通過查閱死者的電腦和手機晰洒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啥箭,“玉大人谍珊,你說我怎么就攤上這事〖苯模” “怎么了砌滞?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坏怪。 經(jīng)常有香客問我贝润,道長,這世上最難降的妖魔是什么铝宵? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任打掘,我火速辦了婚禮,結(jié)果婚禮上鹏秋,老公的妹妹穿的比我還像新娘尊蚁。我一直安慰自己,他們只是感情好侣夷,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布横朋。 她就那樣靜靜地躺著,像睡著了一般百拓。 火紅的嫁衣襯著肌膚如雪琴锭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天衙传,我揣著相機與錄音决帖,去河邊找鬼。 笑死蓖捶,一個胖子當著我的面吹牛古瓤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼落君,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亭引?” 一聲冷哼從身側(cè)響起绎速,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焙蚓,沒想到半個月后纹冤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡购公,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年萌京,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宏浩。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡知残,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出比庄,到底是詐尸還是另有隱情求妹,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布佳窑,位于F島的核電站制恍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏神凑。R本人自食惡果不足惜净神,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望溉委。 院中可真熱鬧鹃唯,春花似錦、人聲如沸薛躬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽型宝。三九已至八匠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間趴酣,已是汗流浹背梨树。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岖寞,地道東北人抡四。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親指巡。 傳聞我的和親對象是個殘疾皇子淑履,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容