
背景
我正在為嵌入式設備添加對 WireGuard VPN 的支援。用戶將能夠AllowedIPs
自行設定配置。 WireGuard 使用允許的 IP 在主機上設定路由,因此使用者可以隔離裝置(使其無法透過 TCP 連線)。我一直在思考如何防止這種情況發生。
潛在的解決方案
一種可能的解決方案是為主機介面新增 IP 規則,以便具有介面來源 IP 的任何流量始終透過該介面進行路由。如果我們有一個 IP 為 172.17.0.2 的主機介面 eth0 和一個 IP 為 172.22.0.4 的wireguard 介面 wg0,設定將如下所示:
ip route add default via 172.17.0.1 dev eth0 table 1
ip rule add from 172.17.0.2 table 1
這表示源自設備的連線仍應正常路由,但如果有人使用 TCP(對於 HTTP 或 ssh)連接到設備,則應將回應路由回傳。
問題
從表面上看,這看起來是一個非常優雅的解決方案,但我不禁認為這不是預設的解決方案,這是有充分理由的。我只是沒有想到那個原因可能是什麼。這是一個壞主意嗎?它會為設備增加潛在的漏洞或類似的東西嗎?有沒有更好的方法來實現我避免設備隔離的預期目標?