Wireguard 全互聯(lián)模式(full mesh)配置指南

上篇文章給大家介紹了如何使用 wg-gen-web 來方便快捷地管理 WireGuard 的配置和秘鑰谷醉,文末埋了兩個坑:一個是 WireGuard 的全互聯(lián)模式(full mesh)嗦随,另一個是使用 WireGuard 作為 Kubernetes 的 CNI 插件。今天就來填第一個坑皂林。

首先解釋一下什么是全互聯(lián)模式(full mesh)义图,全互聯(lián)模式其實就是一種網(wǎng)絡(luò)連接形式浅乔,即所有結(jié)點之間都直接連接大咱,不會通過第三方節(jié)點中轉(zhuǎn)流量咆霜。和前面提到的點對多點架構(gòu) 其實是一個意思。

1. 全互聯(lián)模式架構(gòu)與配置

在 WireGuard 的世界里沒有 Server 和 Client 之分轿塔,所有的節(jié)點都是 Peer特愿。大家使用 WireGuard 的常規(guī)做法是找一個節(jié)點作為中轉(zhuǎn)節(jié)點,也就是 VPN 網(wǎng)關(guān)勾缭,然后所有的節(jié)點都和這個網(wǎng)關(guān)進行連接揍障,所有節(jié)點之間都通過這個網(wǎng)關(guān)來進行通信。這種架構(gòu)中俩由,為了方便理解毒嫡,我們可以把網(wǎng)關(guān)看成 Server,其他的節(jié)點看成 Client幻梯,但實際上是不區(qū)分 Server 和 Client 的兜畸。

舉個例子努释,假設(shè)有 4 個節(jié)點,分別是 A/B/C/D咬摇,且這 4 個節(jié)點都不在同一個局域網(wǎng)洽洁,常規(guī)的做法是選取一個節(jié)點作為 VPN 網(wǎng)關(guān),架構(gòu)如圖:

這種架構(gòu)的缺點我在之前的文章里也介紹過了菲嘴,缺點相當(dāng)明顯:

  • 當(dāng) Peer 越來越多時饿自,VPN 網(wǎng)關(guān)就會變成垂直擴展的瓶頸。
  • 通過 VPN 網(wǎng)關(guān)轉(zhuǎn)發(fā)流量的成本很高龄坪,畢竟云服務(wù)器的流量很貴昭雌。
  • 通過 VPN 網(wǎng)關(guān)轉(zhuǎn)發(fā)流量會帶來很高的延遲。

那么全互聯(lián)模式是什么樣的架構(gòu)呢健田?還是假設(shè)有 A/B/C/D 四個節(jié)點烛卧,每個節(jié)點都和其他節(jié)點建立 WireGuard 隧道,架構(gòu)如圖:

這種架構(gòu)帶來的直接優(yōu)勢就是快妓局!任意一個 Peer 和其他所有 Peer 都是直連总放,無需中轉(zhuǎn)流量。那么在 WireGuard 的場景下如何實現(xiàn)全互聯(lián)模式呢好爬?其實這個問題不難局雄,難點在于配置的繁瑣程度,本文的主要目標(biāo)就是精簡 WireGuard 全互聯(lián)模式的配置流程存炮。為了讓大家更容易理解炬搭,咱們還是先通過架構(gòu)圖來體現(xiàn)各個 Peer 的配置:

配置一目了然,每個 Peer 和其他所有 Peer 都是直連穆桂,根本沒有 VPN 網(wǎng)關(guān)這種角色宫盔。當(dāng)然,現(xiàn)實世界的狀況沒有圖中這么簡單享完,有些 Peer 是沒有公網(wǎng) IP 的灼芭,躲在 NAT 后面,這里又分兩種情況:

  1. NAT 受自己控制般又。這種情況可以在公網(wǎng)出口設(shè)置端口轉(zhuǎn)發(fā)彼绷,其他 Peer 就可以通過這個公網(wǎng) IP 和端口連接當(dāng)前 Peer。如果公網(wǎng) IP 是動態(tài)的倒源,可以通過 DDNS 來解決苛预,但 DDNS 會出現(xiàn)一些小問題,解決方法可以參考 WireGuard 的優(yōu)化笋熬。
  2. NAT 不受自己控制热某。這種情況無法在公網(wǎng)出口設(shè)置端口轉(zhuǎn)發(fā),只能通過 UDP 打洞來實現(xiàn)互聯(lián),具體可以參考 WireGuard 教程:使用 DNS-SD 進行 NAT-to-NAT 穿透昔馋。

接著上述方案再更進一步筹吐,打通所有 Peer 的私有網(wǎng)段,讓任意一個 Peer 可以訪問其他所有 Peer 的私有網(wǎng)段的機器秘遏。上述配置只是初步完成了全互聯(lián)丘薛,讓每個 Peer 可以相互訪問彼此而已,要想相互訪問私有網(wǎng)段邦危,還得繼續(xù)增加配置洋侨,還是直接看圖:

紅色字體部分就是新增的配置,表示允許訪問相應(yīng) Peer 的私有網(wǎng)段倦蚪,就是這么簡單希坚。詳細的配置步驟請看下一節(jié)。

2. 全互聯(lián)模式最佳實踐

對如何配置有了清晰的思路之后陵且,接下來就可以進入實踐環(huán)節(jié)了裁僧。我不打算從 WireGuard 安裝開始講起,而是以前幾篇文章為基礎(chǔ)添磚加瓦慕购。所以我建議讀者先按順序看下這兩篇文章:

咱們直接從配置開始說起聊疲。手擼配置的做法是不明智的,因為當(dāng)節(jié)點增多之后工作量會很大沪悲,我還是建議通過圖形化界面來管理配置获洲,首選 wg-gen-web

現(xiàn)在還是假設(shè)有上節(jié)所述的 4 個 Peer可训,我們需要從中挑選一個 Peer 來安裝 wg-gen-web昌妹,然后通過 wg-gen-web 來生成配置。挑選哪個 Peer 無所謂握截,這個沒有特殊限制,這里假設(shè)挑選 AWS 來安裝 wg-gen-web烂叔。

安裝的步驟直接略過谨胞,不是本文的重點,不清楚的可以閱讀我之前的文章 WireGuard 配置教程:使用 wg-gen-web 來管理 WireGuard 的配置蒜鸡。Server 配置如圖:

生成 Azure 的配置:

SUBMIT 之后再查看 wg0.conf 的內(nèi)容:

$ cat /etc/wireguard/wg0.conf

# Updated: 2021-02-24 07:34:23.805535396 +0000 UTC / Created: 2021-02-24 07:24:02.208816462 +0000 UTC
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = eEnHKGkGksx0jqrEDogjRj5l417BrEA39lr7WW9L9U0=

PreUp = echo WireGuard PreUp
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PreDown = echo WireGuard PreDown
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Azure /  / Updated: 2021-02-24 07:43:52.717385042 +0000 UTC / Created: 2021-02-24 07:43:52.717385042 +0000 UTC
[Peer]
PublicKey = OzdH42suuOpVY5wxPrxM+rEAyEPFg2eL0ZI29N7eSTY=
PresharedKey = 1SyJuVp16Puh8Spyl81EgD9PJZGoTLJ2mOccs2UWDvs=
AllowedIPs = 10.0.0.2/32

這里無法通過圖形化界面添加私有網(wǎng)段的配置胯努,我們可以直接修改 wg0.conf 添加配置:

$ cat /etc/wireguard/wg0.conf

# Updated: 2021-02-24 07:34:23.805535396 +0000 UTC / Created: 2021-02-24 07:24:02.208816462 +0000 UTC
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = eEnHKGkGksx0jqrEDogjRj5l417BrEA39lr7WW9L9U0=

PreUp = echo WireGuard PreUp
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PreDown = echo WireGuard PreDown
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Azure /  / Updated: 2021-02-24 07:43:52.717385042 +0000 UTC / Created: 2021-02-24 07:43:52.717385042 +0000 UTC
[Peer]
PublicKey = OzdH42suuOpVY5wxPrxM+rEAyEPFg2eL0ZI29N7eSTY=
PresharedKey = 1SyJuVp16Puh8Spyl81EgD9PJZGoTLJ2mOccs2UWDvs=
AllowedIPs = 10.0.0.2/32
AllowedIPs = 192.168.20.0/24

下載 Azure 配置文件:

可以看到配置文件內(nèi)容為:

$ cat Azure.conf

[Interface]
Address = 10.0.0.2/32
PrivateKey = IFhAyIWY7sZmabsqDDESj9fqoniE/uZFNIvAfYHjN2o=


[Peer]
PublicKey = JgvmQFmhUtUoS3xFMFwEgP3L1Wnd8hJc3laJ90Gwzko=
PresharedKey = 1SyJuVp16Puh8Spyl81EgD9PJZGoTLJ2mOccs2UWDvs=
AllowedIPs = 10.0.0.1/32, 192.168.10.0/24
Endpoint = aws.com:51820

先不急著修改,一鼓作氣生成所有 Peer 的配置文件:

這時你會發(fā)現(xiàn) wg0.conf 中已經(jīng)包含了所有 Peer 的配置:

$ cat /etc/wireguard/wg0.conf

# Updated: 2021-02-24 07:57:00.745287945 +0000 UTC / Created: 2021-02-24 07:24:02.208816462 +0000 UTC
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = eEnHKGkGksx0jqrEDogjRj5l417BrEA39lr7WW9L9U0=

PreUp = echo WireGuard PreUp
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PreDown = echo WireGuard PreDown
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Aliyun /  / Updated: 2021-02-24 07:57:45.941019829 +0000 UTC / Created: 2021-02-24 07:57:45.941019829 +0000 UTC
[Peer]
PublicKey = kVq2ATMTckCKEJFF4TM3QYibxzlh+b9CV4GZ4meQYAo=
PresharedKey = v818B5etpRlyVYHGUrv9abM5AIQK5xeoCizdWj1AqcE=
AllowedIPs = 10.0.0.4/32

# GCP /  / Updated: 2021-02-24 07:57:27.3555646 +0000 UTC / Created: 2021-02-24 07:57:27.3555646 +0000 UTC
[Peer]
PublicKey = qn0Xfyzs6bLKgKcfXwcSt91DUxSbtATDIfe4xwsnsGg=
PresharedKey = T5UsVvOEYwfMJQDJudC2ryKeCpnO3RV8GFMoi76ayyI=
AllowedIPs = 10.0.0.3/32

# Azure /  / Updated: 2021-02-24 07:57:00.751653134 +0000 UTC / Created: 2021-02-24 07:43:52.717385042 +0000 UTC
[Peer]
PublicKey = OzdH42suuOpVY5wxPrxM+rEAyEPFg2eL0ZI29N7eSTY=
PresharedKey = 1SyJuVp16Puh8Spyl81EgD9PJZGoTLJ2mOccs2UWDvs=
AllowedIPs = 10.0.0.2/32
AllowedIPs = 192.168.20.0/24

繼續(xù)修改 wg0.conf 添加私有網(wǎng)段配置:

cat /etc/wireguard/wg0.conf

# Updated: 2021-02-24 07:57:00.745287945 +0000 UTC / Created: 2021-02-24 07:24:02.208816462 +0000 UTC
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = eEnHKGkGksx0jqrEDogjRj5l417BrEA39lr7WW9L9U0=

PreUp = echo WireGuard PreUp
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PreDown = echo WireGuard PreDown
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Aliyun /  / Updated: 2021-02-24 07:57:45.941019829 +0000 UTC / Created: 2021-02-24 07:57:45.941019829 +0000 UTC
[Peer]
PublicKey = kVq2ATMTckCKEJFF4TM3QYibxzlh+b9CV4GZ4meQYAo=
PresharedKey = v818B5etpRlyVYHGUrv9abM5AIQK5xeoCizdWj1AqcE=
AllowedIPs = 10.0.0.4/32
AllowedIPs = 192.168.40.0/24

# GCP /  / Updated: 2021-02-24 07:57:27.3555646 +0000 UTC / Created: 2021-02-24 07:57:27.3555646 +0000 UTC
[Peer]
PublicKey = qn0Xfyzs6bLKgKcfXwcSt91DUxSbtATDIfe4xwsnsGg=
PresharedKey = T5UsVvOEYwfMJQDJudC2ryKeCpnO3RV8GFMoi76ayyI=
AllowedIPs = 10.0.0.3/32
AllowedIPs = 192.168.30.0/24

# Azure /  / Updated: 2021-02-24 07:57:00.751653134 +0000 UTC / Created: 2021-02-24 07:43:52.717385042 +0000 UTC
[Peer]
PublicKey = OzdH42suuOpVY5wxPrxM+rEAyEPFg2eL0ZI29N7eSTY=
PresharedKey = 1SyJuVp16Puh8Spyl81EgD9PJZGoTLJ2mOccs2UWDvs=
AllowedIPs = 10.0.0.2/32
AllowedIPs = 192.168.20.0/24

現(xiàn)在問題就好辦了逢防,我們只需將 wg0.conf 中的 Aliyun 和 GCP 部分的配置拷貝到 Azure 的配置中叶沛,并刪除 PresharedKey 的配置,再添加 Endpoint 的配置和 PostUP/PostDown 規(guī)則:

$ cat Azure.conf

[Interface]
Address = 10.0.0.2/32
PrivateKey = IFhAyIWY7sZmabsqDDESj9fqoniE/uZFNIvAfYHjN2o=

PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE


[Peer]
PublicKey = JgvmQFmhUtUoS3xFMFwEgP3L1Wnd8hJc3laJ90Gwzko=
PresharedKey = 1SyJuVp16Puh8Spyl81EgD9PJZGoTLJ2mOccs2UWDvs=
AllowedIPs = 10.0.0.1/32, 192.168.10.0/24
Endpoint = aws.com:51820

# Aliyun /  / Updated: 2021-02-24 07:57:45.941019829 +0000 UTC / Created: 2021-02-24 07:57:45.941019829 +0000 UTC
[Peer]
PublicKey = kVq2ATMTckCKEJFF4TM3QYibxzlh+b9CV4GZ4meQYAo=
AllowedIPs = 10.0.0.4/32
AllowedIPs = 192.168.40.0/24
Endpoint = aliyun.com:51820

# GCP /  / Updated: 2021-02-24 07:57:27.3555646 +0000 UTC / Created: 2021-02-24 07:57:27.3555646 +0000 UTC
[Peer]
PublicKey = qn0Xfyzs6bLKgKcfXwcSt91DUxSbtATDIfe4xwsnsGg=
AllowedIPs = 10.0.0.3/32
AllowedIPs = 192.168.30.0/24
Endpoint = gcp.com:51820

同理忘朝,GCP 的配置如下:

$ cat GCP.conf

[Interface]
Address = 10.0.0.3/32
PrivateKey = oK2gIMBAob67Amj2gT+wR9pzkbqWGNtq794nOoD3i2o=

PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE


[Peer]
PublicKey = JgvmQFmhUtUoS3xFMFwEgP3L1Wnd8hJc3laJ90Gwzko=
PresharedKey = T5UsVvOEYwfMJQDJudC2ryKeCpnO3RV8GFMoi76ayyI=
AllowedIPs = 10.0.0.1/32, 192.168.10.0/24
Endpoint = aws.com:51820

# Aliyun /  / Updated: 2021-02-24 07:57:45.941019829 +0000 UTC / Created: 2021-02-24 07:57:45.941019829 +0000 UTC
[Peer]
PublicKey = kVq2ATMTckCKEJFF4TM3QYibxzlh+b9CV4GZ4meQYAo=
AllowedIPs = 10.0.0.4/32
AllowedIPs = 192.168.40.0/24
Endpoint = aliyun.com:51820

# Azure /  / Updated: 2021-02-24 07:57:00.751653134 +0000 UTC / Created: 2021-02-24 07:43:52.717385042 +0000 UTC
[Peer]
PublicKey = OzdH42suuOpVY5wxPrxM+rEAyEPFg2eL0ZI29N7eSTY=
PresharedKey = 1SyJuVp16Puh8Spyl81EgD9PJZGoTLJ2mOccs2UWDvs=
AllowedIPs = 10.0.0.2/32
AllowedIPs = 192.168.20.0/24
Endpoint = azure.com:51820

Aliyun 的配置如下:

$ cat Aliyun.conf

[Interface]
Address = 10.0.0.4/32
PrivateKey = +A1ZESJjmHuskB4yKqTcqC3CB24TwBKHGSffWDHxI28=

PostUp = iptables -I FORWARD -i wg0 -j ACCEPT; iptables -I FORWARD -o wg0 -j ACCEPT; iptables -I INPUT -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -D INPUT -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE


[Peer]
PublicKey = JgvmQFmhUtUoS3xFMFwEgP3L1Wnd8hJc3laJ90Gwzko=
PresharedKey = v818B5etpRlyVYHGUrv9abM5AIQK5xeoCizdWj1AqcE=
AllowedIPs = 10.0.0.1/32, 192.168.10.0/24
Endpoint = aws.com:51820

# GCP /  / Updated: 2021-02-24 07:57:27.3555646 +0000 UTC / Created: 2021-02-24 07:57:27.3555646 +0000 UTC
[Peer]
PublicKey = qn0Xfyzs6bLKgKcfXwcSt91DUxSbtATDIfe4xwsnsGg=
AllowedIPs = 10.0.0.3/32
AllowedIPs = 192.168.30.0/24
Endpoint = gcp.com:51820

# Azure /  / Updated: 2021-02-24 07:57:00.751653134 +0000 UTC / Created: 2021-02-24 07:43:52.717385042 +0000 UTC
[Peer]
PublicKey = OzdH42suuOpVY5wxPrxM+rEAyEPFg2eL0ZI29N7eSTY=
PresharedKey = 1SyJuVp16Puh8Spyl81EgD9PJZGoTLJ2mOccs2UWDvs=
AllowedIPs = 10.0.0.2/32
AllowedIPs = 192.168.20.0/24
Endpoint = azure.com:51820

最后在各自的節(jié)點上通過各自的配置文件把 WireGuard 跑起來灰署,就搞定了。

整個圖形化界面配置過程中會出現(xiàn)好幾個地方需要手動調(diào)整配置,這是因為 wg-gen-web 的功能目前還不完善溉箕,需要給它一定的時間晦墙。如果你無法接受手動調(diào)整配置,可以嘗試另外一個項目:wg-meshconf肴茄,這個項目專門用來生成 mesh 的配置晌畅,但沒有圖形化管理界面。各有利弊吧寡痰,大家自行選擇抗楔。

3. 總結(jié)

我知道逮京,很多人可能還是一頭霧水忌穿,這玩意兒的應(yīng)用場景有哪些?我隨便舉個簡單的例子喘帚,假設(shè)你在云服務(wù)器上部署了 Kubernetes 集群贪婉,可以用本地的機器和云服務(wù)器的某臺節(jié)點組建 WireGuard 隧道反粥,然后在本地的 AllowedIPs 中加上 Pod 網(wǎng)段和 Service 網(wǎng)段,就可以那啥了疲迂,你懂吧才顿?

好吧,又埋了一個坑尤蒿,關(guān)于如何在家中直接訪問云服務(wù)器 k8s 集群的 Pod IP 和 Service IP郑气,后面會有專門的文章給大家講解,雖然我也不確定是多久以后腰池。尾组。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市示弓,隨后出現(xiàn)的幾起案子讳侨,更是在濱河造成了極大的恐慌,老刑警劉巖奏属,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跨跨,死亡現(xiàn)場離奇詭異,居然都是意外死亡囱皿,警方通過查閱死者的電腦和手機勇婴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘱腥,“玉大人耕渴,你說我怎么就攤上這事〕萃茫” “怎么了橱脸?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵础米,是天一觀的道長。 經(jīng)常有香客問我慰技,道長椭盏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任吻商,我火速辦了婚禮掏颊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘艾帐。我一直安慰自己乌叶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布柒爸。 她就那樣靜靜地躺著准浴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捎稚。 梳的紋絲不亂的頭發(fā)上乐横,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音今野,去河邊找鬼葡公。 笑死,一個胖子當(dāng)著我的面吹牛条霜,可吹牛的內(nèi)容都是我干的催什。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼宰睡,長吁一口氣:“原來是場噩夢啊……” “哼蒲凶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拆内,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤旋圆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后矛纹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臂聋,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年或南,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艾君。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡采够,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出冰垄,到底是詐尸還是另有隱情蹬癌,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站逝薪,受9級特大地震影響隅要,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜董济,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一步清、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虏肾,春花似錦廓啊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吹埠,卻和暖如春第步,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缘琅。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工粘都, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胯杭。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓驯杜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親做个。 傳聞我的和親對象是個殘疾皇子鸽心,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

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

  • [toc] 介紹 wireguard與openVPN、strongswanVPN居暖、ipsecVPN的優(yōu)劣請自行百度...
    zhf_sy閱讀 6,932評論 4 3
  • 夜鶯2517閱讀 127,712評論 1 9
  • 版本:ios 1.2.1 亮點: 1.app角標(biāo)可以實時更新天氣溫度或選擇空氣質(zhì)量顽频,建議處女座就不要選了,不然老想...
    我就是沉沉閱讀 6,878評論 1 6
  • 我是一名過去式的高三狗太闺,很可悲糯景,在這三年里我沒有戀愛,看著同齡的小伙伴們一對兒一對兒的省骂,我的心不好受蟀淮。怎么說呢,高...
    小娘紙閱讀 3,375評論 4 7
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月钞澳,有人笑有人哭怠惶,有人歡樂有人憂愁,有人驚喜有人失落轧粟,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,523評論 28 53