使用 OpenVPN 搭建虛擬專(zhuān)用網(wǎng)絡(luò)

「博客搬家」 原地址: CSDN 原發(fā)表時(shí)間: 2016-07-04

1. OpenVPN 簡(jiǎn)介

OpenVPN 是一個(gè)用于創(chuàng)建虛擬專(zhuān)用網(wǎng)絡(luò)加密通道的軟件包,最早由 James Yonan 編寫(xiě)。OpenVPN 允許創(chuàng)建的 VPN 使用公開(kāi)密鑰嚣崭、電子證書(shū)湿镀、或者用戶(hù)名/密碼來(lái)進(jìn)行身份驗(yàn)證贡歧。它大量使用了 OpenSSL 加密庫(kù)中的 SSLv3 / TLSv1 協(xié)議函數(shù)庫(kù)。目前 OpenVPN 能在 Solaris、Linux捧灰、OpenBSD、FreeBSD统锤、NetBSD毛俏、Mac OS X 與 Microsoft Windows 以及 Android 和 iOS 上運(yùn)行,并包含了許多安全性的功能饲窿。它并不是一個(gè)基于 Web 的 VPN 軟件煌寇,也不與 IPsec 及其他 VPN 軟件包兼容。

1.1 OpenVPN 的配置原理

OpenVPN 的配置工作主要分為如下兩步:

  • 第一步逾雄,創(chuàng)建加密證書(shū)和私鑰阀溶,其中包括服務(wù)器端和客戶(hù)端都要用到的核心 CA 證書(shū)和私鑰,服務(wù)器端自身的加密證書(shū)(即公鑰)和私鑰鸦泳,以及每個(gè)客戶(hù)端對(duì)應(yīng)的加密證書(shū)和私鑰银锻。

  • 第二步,為服務(wù)器和客戶(hù)端編寫(xiě)對(duì)應(yīng)的配置文件做鹰,然后將其與第一步中生成的相應(yīng)證書(shū)击纬、私鑰放在 OpenVPN 安裝目錄的 config 文件夾下。

OpenVPN 支持基于加密證書(shū)的雙向認(rèn)證钾麸。在 OpenVPN 中更振,不管是服務(wù)器還是客戶(hù)端,所有的證書(shū)和私鑰都需要由服務(wù)器端生成饭尝,客戶(hù)端要先獲得服務(wù)器端分配給它的加密證書(shū)和密鑰才能成功連接肯腕。這與使用網(wǎng)上銀行有些類(lèi)似,大多數(shù)銀行網(wǎng)站都會(huì)要求你先下載并安裝一個(gè)數(shù)字證書(shū)钥平,才允許你進(jìn)行網(wǎng)上付款或其他操作实撒。

1.2 OpenVPN 的下載

在 OpenVPN 的官網(wǎng)上,打開(kāi)如下網(wǎng)頁(yè):

https://openvpn.net/index.php/download/community-downloads.html

使用圖片所示內(nèi)容最后的下載鏈接,可下載到適用于 Windows Vista 及之后版本 Windows 系統(tǒng)的安裝文件奈惑。本文以 OpenVPN 2.3.11 版本為例簡(jiǎn)要介紹 OpenVPN 的安裝吭净、配置、使用方法肴甸。

OpenVPN 下載頁(yè)面

2. OpenVPN 服務(wù)器端的配置

2.1 OpenVPN 的安裝

打開(kāi) OpenVPN 的安裝程序進(jìn)行安裝寂殉。在安裝的過(guò)程中,要求選擇安裝內(nèi)容原在,默認(rèn)未選中 easy-rsa 「加密證書(shū)生成程序」友扰,因此,我們必須手動(dòng)勾選未選中的兩個(gè)選項(xiàng)庶柿,之后如若詢(xún)問(wèn)是否安裝 TAP-Win32 驅(qū)動(dòng)程序村怪,確認(rèn)安裝即可。

2.2 創(chuàng)建加密證書(shū)和私鑰

1浮庐、使用文本編輯器 以管理員權(quán)限 打開(kāi)并修改 OpenVPN 服務(wù)器端的 vars.bat.sample 文件「客戶(hù)端的無(wú)需做任何修改」甚负。vars.bat.sample 文件位于:

OpenVPN\easy-rsa\vars.bat.sample

文本內(nèi)容部分摘錄如下:

set HOME=%ProgramFiles%\OpenVPN\easy-rsa 
//變量HOME表示easy-rsa文件夾的路徑

set KEY_CONFIG=openssl-1.0.0.cnf 
//變量KEY_SIZE表示生成的私鑰大小,一般填寫(xiě)為1024或2048审残,默認(rèn)為1024位梭域,可根據(jù)自己的需要進(jìn)行修改。

//由于稍后給客戶(hù)端生成對(duì)應(yīng)加密證書(shū)和私鑰時(shí)搅轿,程序會(huì)要求我們輸入一些注冊(cè)信息病涨。建議修改相關(guān)變量的默認(rèn)值,這樣在稍后生成客戶(hù)端證書(shū)的時(shí)候璧坟,如果該信息項(xiàng)不輸入就會(huì)采用默認(rèn)值既穆。
set KEY_COUNTRY=CN //國(guó)家(注:必須為兩位字符)
set KEY_PROVINCE=GuangXi //省份
set KEY_CITY=GuiLin //城市
set KEY_ORG=GUET //機(jī)構(gòu)
set KEY_EMAIL=***@126.com //郵箱
set KEY_CN=changeme //證書(shū)的通用名稱(chēng)(Common Name),相當(dāng)于帳戶(hù)名 (eg, your name or your server's hostname)
set KEY_NAME=changeme //用戶(hù)姓名
set KEY_OU=changeme //部門(mén)名 Organizational Unit Name (eg, section)
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

按照如上所述進(jìn)行修改,修改完畢后雀鹃,保存幻工,接下來(lái)進(jìn)行配置操作

2.3 使用控制臺(tái)創(chuàng)建服務(wù)端和客戶(hù)端證書(shū)

在作為服務(wù)器端的電腦上,以管理員權(quán)限 打開(kāi) cmd , 并進(jìn)入到

OpenVPN\easy-rsa

然后依次執(zhí)行如下命令:

1. init-config「初始化配置褐澎,將 vars.bat.sample 文件的內(nèi)容復(fù)制到 vars.bat会钝。實(shí)際上,你也可以直接雙擊執(zhí)行 easy-rsa 目錄下的 init-config.bat 文件來(lái)代替這一步工三∏ㄋ幔」

2. vars「設(shè)置相應(yīng)的局部環(huán)境變量,就是我們?cè)?vars.bat.sample 文件中設(shè)置的內(nèi)容」

3. clean-all「相關(guān)設(shè)置和清理工作」

命令執(zhí)行結(jié)果如下所示:

Microsoft Windows [版本 10.0.10586]
(c) 2015 Microsoft Corporation俭正。保留所有權(quán)利奸鬓。
C:\Windows\system32>cd C:\Program Files\OpenVPN\easy-rsa
C:\Program Files\OpenVPN\easy-rsa>init-config
C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
已復(fù)制         1 個(gè)文件。
C:\Program Files\OpenVPN\easy-rsa>vars
C:\Program Files\OpenVPN\easy-rsa>clean-all
系統(tǒng)找不到指定的文件掸读。   //有時(shí)候會(huì)出現(xiàn)此句提示串远,可以被忽略
已復(fù)制         1 個(gè)文件宏多。
已復(fù)制         1 個(gè)文件。

接下來(lái)執(zhí)行如下命令:

4. build-ca「創(chuàng)建 CA 根證書(shū)及 key」

此處可修改此前預(yù)先設(shè)置的注冊(cè)信息澡罚。

5. build-key-server server「創(chuàng)建服務(wù)端證書(shū)及 key伸但,其中『server』可以自由設(shè)定」

命令執(zhí)行結(jié)果如下所示:

C:\Program Files\OpenVPN\easy-rsa>build-key-server server
Common Name (eg, your name or your server's hostname) [changeme]:此處輸入賬戶(hù)名
A challenge password []:此處輸入密碼

Certificate is to be certified until Jul  2 12:07:01 2026 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

命令中的參數(shù) server 指的是生成的證書(shū)文件名稱(chēng),你可以按照自己的需要進(jìn)行修改留搔,不過(guò)后面的 Common Name 也應(yīng)保持一致更胖。最后程序會(huì)詢(xún)問(wèn)你是否注冊(cè)并提交證書(shū),兩次均輸入 y 即可隔显。

6. build-dh「創(chuàng)建迪菲·赫爾曼密鑰却妨,生成 1024 bit 的key」

迪菲·赫爾曼密鑰交換「Diffie–Hellman key exchange , 簡(jiǎn)稱(chēng)『D–H』」是一種安全協(xié)議。它可以讓雙方在完全沒(méi)有對(duì)方任何預(yù)先信息的條件下通過(guò)不安全信道創(chuàng)建起一個(gè)密鑰括眠。這個(gè)密鑰可以在后續(xù)的通訊中作為對(duì)稱(chēng)密鑰來(lái)加密通訊內(nèi)容彪标。

7. build-key client「創(chuàng)建客戶(hù)端證書(shū)及 key , 其中 `client` 可以自由設(shè)定」

此處如同第 5 步服務(wù)器部分的設(shè)置。

8. openvpn --genkey --secret keys/ta.key「可選操作掷豺,生成 ta.key」

這一步是可選操作捞烟,生成的 ta.key 主要用于防御 DoS、UDP 淹沒(méi)等惡意攻擊萌业。命令中的第 3 個(gè)參數(shù) keys / ta.key 表示生成的文件路徑「含文件名」坷襟。

創(chuàng)建完證書(shū)后奸柬,我們會(huì)發(fā)現(xiàn) easy-rsa 目錄下多了一個(gè) keys 文件夾生年。但如果參數(shù)填寫(xiě)不恰當(dāng),可能生成一些 0 字節(jié)的 crt 文件廓奕,那么就得重新生成證書(shū)抱婉。生成結(jié)束后,可按照如下表格分別將文件拷貝到客戶(hù)端和服務(wù)端的 config 目錄中桌粉。

服務(wù)器端 config 目錄需要的文件包括:

文件名 位置 用途 保密 備注
ca.crt server + all clients Root CA certificate NO 核心 CA 證書(shū)
ca.key key signing machine only Root CA key YES 核心 CA 私鑰
dh1024.pem server only Diffie Hellman parameters NO 如果最初的變量 KEY_SIZE 設(shè)為 2048蒸绩,這里就是 dh2048.pem
server.crt server only Server Certificate NO 名稱(chēng) server 根據(jù)個(gè)人設(shè)置有所不同
server.key server only Server Key YES 名稱(chēng) server 根據(jù)個(gè)人設(shè)置有所不同
ta.key server + all clients 防御 DoS、UDP 淹沒(méi)等惡意攻擊 YES 名稱(chēng)也可自行設(shè)置铃肯,如果不需要防御攻擊患亿,可以不創(chuàng)建或復(fù)制此文件

客戶(hù)端 config 目錄需要的文件包括:

文件名 位置 用途 保密 備注
ca.crt server + all clients Root CA certificate NO 核心 CA 證書(shū)
client.crt client only Client Certificate NO 名稱(chēng) client 根據(jù)個(gè)人設(shè)置有所不同
client1.key client only Client Key YES 名稱(chēng) client 根據(jù)個(gè)人設(shè)置有所不同
ta.key server + all clients 防御 DoS、UDP 淹沒(méi)等惡意攻擊 YES 名稱(chēng)也可自行設(shè)置押逼,如果不需要防御攻擊步藕,可以不創(chuàng)建或復(fù)制此文件

重要提醒:以上命令都在同一 cmd 中執(zhí)行,如果你以后需要打開(kāi)新窗口來(lái)執(zhí)行命令(比如創(chuàng)建新的客戶(hù)端證書(shū)):你不需要再執(zhí)行 init-config 命令挑格,除非你再次改動(dòng)了 vars.bat.sample 文件咙冗;每一次打開(kāi)新窗口時(shí)都需要先執(zhí)行 vars 命令,后面才能執(zhí)行其他命令漂彤。


:若要撤銷(xiāo) client2 證書(shū)雾消,則執(zhí)行以下命令:

vars
revoke-full client2

此時(shí)得到 crl.pem 文件灾搏,之后在服務(wù)端執(zhí)行如下命令:

crl-verify crl.pem

3. 配置文件的修改與部署

上面已創(chuàng)建 OpenVPN 配置所需要的各種證書(shū)和私鑰,現(xiàn)在可以為服務(wù)器和客戶(hù)端設(shè)置對(duì)應(yīng)的配置文件立润。

在 OpenVPN 的安裝目錄的 sample-config 文件夾中存放有 3 個(gè)示例模板文件 : server.ovpn蓝谨、client.ovpn、sample.ovpn 咳焚。其中:

  • server.ovpn 是服務(wù)器的配置模板
  • client.ovpn 是客戶(hù)端的配置模板
  • sample.ovpn 也可用作客戶(hù)端配置模板脓杉,不過(guò)配置比較簡(jiǎn)單,不夠全面到旦。

按照官方的說(shuō)法 , client.ovpn 可用于連接具有多個(gè)客戶(hù)端的服務(wù)器端旨巷。

復(fù)制 server.ovpn 到服務(wù)器的 config 目錄 , client.ovpn 到客戶(hù)端的 config 目錄,并在此基礎(chǔ)上進(jìn)行修改添忘。在 OpenVPN 的配置文件中采呐,前面帶「#」或「;」的表示注釋內(nèi)容。

3.1 配置文件的簡(jiǎn)單使用

  • 修改客戶(hù)端的 client.ovpn 的 remote 項(xiàng)搁骑,讓它指向服務(wù)端外部 IP 地址斧吐,格式例如 : remote x.x.x.x 1194 , 1194 是服務(wù)端定義的端口,這個(gè)可以通過(guò)服務(wù)端的配置文件修改仲器,服務(wù)端和客戶(hù)端端口必須匹配煤率。
  • 證書(shū):在第 92, 93 行的「大概」位置,修改指定的 crt 和 key 文件乏冀,與之生成的證書(shū)文件名匹配蝶糯。

3.2 編輯服務(wù)器端配置文件

server.ovpn 中所有用到的命令如下 :

local 192.168.0.2     #指定監(jiān)聽(tīng)的本機(jī) IP「因?yàn)橛行┯?jì)算機(jī)具備多個(gè)IP地址」,該命令是可選的辆沦,默認(rèn)監(jiān)聽(tīng)所有 IP 地址昼捍。
port 1194             #指定監(jiān)聽(tīng)的本機(jī)端口號(hào)
proto udp             #指定采用的傳輸協(xié)議,可以選擇 tcp 或 udp
dev tun               #指定創(chuàng)建的通信隧道類(lèi)型肢扯,可選 tun 或 tap
ca ca.crt             #指定 CA 證書(shū)的文件路徑
cert server.crt       #指定服務(wù)器端的證書(shū)文件路徑
key server.key    #指定服務(wù)器端的私鑰文件路徑
dh dh1024.pem         #指定迪菲赫爾曼參數(shù)的文件路徑
server 10.0.0.0 255.255.255.0   #指定虛擬局域網(wǎng)占用的 IP 地址段和子網(wǎng)掩碼妒茬,此處配置的服務(wù)器自身占用 10.0.0.1。
ifconfig-pool-persist ipp.txt   #服務(wù)器自動(dòng)給客戶(hù)端分配 IP 后蔚晨,客戶(hù)端下次連接時(shí)乍钻,仍然采用上次的 IP 地址(第一次分配的IP保存在 ipp.txt中,下一次分配其中保存的 IP)铭腕。
tls-auth ta.key 0     #開(kāi)啟 TLS银择,使用 ta.key 防御攻擊。服務(wù)器端的第二個(gè)參數(shù)值為 0谨履,客戶(hù)端的為 1欢摄。
keepalive 10 120      #每 10 秒 ping 一次,連接超時(shí)時(shí)間設(shè)為 120 秒笋粟。
comp-lzo              #開(kāi)啟 VPN 連接壓縮怀挠,如果服務(wù)器端開(kāi)啟析蝴,客戶(hù)端也必須開(kāi)啟
client-to-client      #允許客戶(hù)端與客戶(hù)端相連接,默認(rèn)情況下客戶(hù)端只能與服務(wù)器相連接
persist-key
persist-tun           #持久化選項(xiàng)可以盡量避免訪(fǎng)問(wèn)在重啟時(shí)由于用戶(hù)權(quán)限降低而無(wú)法訪(fǎng)問(wèn)的某些資源绿淋。
status openvpn-status.log    #指定記錄 OpenVPN 狀態(tài)的日志文件路徑
verb 3                #指定日志文件的記錄詳細(xì)級(jí)別闷畸,可選 0 - 9,等級(jí)越高日志內(nèi)容越詳細(xì)

3.3 編輯客戶(hù)端配置文件

client.ovpn 中所有用到的命令如下 :

client         #指定當(dāng)前 VPN 是客戶(hù)端
dev tun        #必須與服務(wù)器端的保持一致
proto udp      #必須與服務(wù)器端的保持一致
remote 192.168.0.2 1194      //指定連接的遠(yuǎn)程服務(wù)器的實(shí)際 IP 地址和端口號(hào)
resolv-retry infinite    #斷線(xiàn)自動(dòng)重新連接吞滞,在網(wǎng)絡(luò)不穩(wěn)定的情況下「例如:筆記本電腦無(wú)線(xiàn)網(wǎng)絡(luò)」非常有用佑菩。
nobind         #不綁定特定的本地端口號(hào)
persist-key
persist-tun
ca ca.crt      #指定 CA 證書(shū)的文件路徑
cert client.crt       //指定當(dāng)前客戶(hù)端的證書(shū)文件路徑
key client.key    //指定當(dāng)前客戶(hù)端的私鑰文件路徑
ns-cert-type server      #指定采用服務(wù)器校驗(yàn)方式
tls-auth ta.key 1     //如果服務(wù)器設(shè)置了防御 DoS 等攻擊的 ta.key,則必須每個(gè)客戶(hù)端開(kāi)啟裁赠;如果未設(shè)置殿漠,則注釋掉這一行;
comp-lzo              #與服務(wù)器保持一致
verb 3                #指定日志文件的記錄詳細(xì)級(jí)別佩捞,可選 0 - 9绞幌,等級(jí)越高日志內(nèi)容越詳細(xì)

4. OpenVPN 的啟用

生成、修改一忱、保存完畢后莲蜘,我們可以在服務(wù)器端及客戶(hù)端分別配置如下內(nèi)容:

在服務(wù)器端 OpenVPN 安裝目錄的 config 文件夾下應(yīng)包含如下文件:

服務(wù)器端config文件夾

在客戶(hù)端 OpenVPN 安裝目錄的 config 文件夾下應(yīng)包含如下文件:

客戶(hù)端config文件夾

5. 參考鏈接

  1. OpenVPN 維基百科
  2. OpenVPN 官方網(wǎng)站
  3. FreeBSD 平臺(tái) OpenVPN 的安裝、配置客戶(hù)端和服務(wù)端
  4. OpenVPN 下載帘营、安裝票渠、配置及使用詳解
  5. OpenVPN 安裝、配置客戶(hù)端和服務(wù)端芬迄,以及 OpenVPN 的使用「Windows 平臺(tái)」
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末问顷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子薯鼠,更是在濱河造成了極大的恐慌择诈,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件出皇,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡哗戈,警方通過(guò)查閱死者的電腦和手機(jī)郊艘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)唯咬,“玉大人纱注,你說(shuō)我怎么就攤上這事〉ㄒ龋” “怎么了狞贱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蜀涨。 經(jīng)常有香客問(wèn)我瞎嬉,道長(zhǎng)蝎毡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任氧枣,我火速辦了婚禮沐兵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘便监。我一直安慰自己扎谎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布烧董。 她就那樣靜靜地躺著毁靶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逊移。 梳的紋絲不亂的頭發(fā)上老充,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音螟左,去河邊找鬼啡浊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胶背,可吹牛的內(nèi)容都是我干的巷嚣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼钳吟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼廷粒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起红且,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坝茎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后暇番,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嗤放,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年壁酬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了次酌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舆乔,死狀恐怖岳服,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情希俩,我是刑警寧澤吊宋,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站颜武,受9級(jí)特大地震影響璃搜,放射性物質(zhì)發(fā)生泄漏拖吼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一腺劣、第九天 我趴在偏房一處隱蔽的房頂上張望绿贞。 院中可真熱鬧,春花似錦橘原、人聲如沸籍铁。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拒名。三九已至,卻和暖如春芋酌,著一層夾襖步出監(jiān)牢的瞬間增显,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工脐帝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留同云,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓堵腹,卻偏偏與公主長(zhǎng)得像炸站,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疚顷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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