用 VXLAN + WireGuard 保護 L2 流量的方法

在「Defend against vampires with 10 gbps network encryption (synacktiv.com)」這邊看到「Defend against vampires with 10 gbps network encryption」這篇,裡面在講怎麼保護 ethernet packet 的流量...

開頭就有提到各種從物理層面擷取流量的方式,像是現在主流的光纖要怎麼聽的方式,我記得當年 Snowden 揭露 PRISM 的時候蠻多細節被陸陸續續挖出來... 找了一下當年的報導:「NSA secretly taps Google, Yahoo data transmission worldwide」,在裡面提到:

In the case of Google, the most likely scenario is that the agencies have tapped into fibers and cables connecting the company’s privately owned or leased data centers in Chile, Ireland, Finland, Belgium, Taiwan, Hong Kong, Singapore and others.

這也是為什麼需要保護 ethernet packet 的流量,因為很有可能可以從路邊或是水溝邊直接夾光線聽到東西。

裡面有提到可以用 MACsec 保護,很久沒聽到這個技術了,以前有研究看過,不過記得當時覺得不太好用 (主要是設備支援的情況),作者在文章裡面也有提到這點。

另外作者有提到 MACsec 沒有保護 MAC address,這點會透漏出設備數量以及可能的廠牌資訊,這也是個隱患 (也就是從 MAC address 與 OUI 資訊得知)。

作者後來選擇的方案是用 VXLAN 將 ethernet packet 轉成 UDP packet,然後再用 WireGuard 傳輸,這樣就可以保護 L2 流量,是個還蠻有趣的組合,然後經過測試後確認現有的 server 在經過簡單的調教後就可以跑到接近 wire-speed 的 10Gbps。

印象中當年在處理同個園區跨辦公室的 case,有一段光纖是跑在園區管道間,好像是用 IPsec 的 site-to-site VPN 解,一方面是兩邊的 IP subnet 不同,所以可以用 L3 的方案解決;另外一方面 IPsec 這個方案在一般商用 VPN 硬體還算成熟,不用自己弄一堆東西。