多個wireguard接口,每個接口直接使用“真實”接口,並且通過任一接口都能夠到達任何IP

多個wireguard接口,每個接口直接使用“真實”接口,並且通過任一接口都能夠到達任何IP

我需要wg-quick在一台機器上設置多個接口,兩個接口都直接獨立地使用真正的乙太網路卡。
我似乎遇到的問題是,透過這些,我想訪問整個互聯網,我認為這意味著AllowedIPs = ::0,但wg-quick喜歡在本地添加路由,以便所有去往任何地方的流量都將通過這個新介面;包括任何以下wg-quick嘗試..

有沒有辦法打電話wg-quick告訴它「嘿,不,我希望你專門使用eno1,而不是『預設網關』」?也許使用原始wg

我嘗試過在網路上閱讀很多內容,但我總是對其他人在問什麼感到困惑似乎就像類似的問題,但結果是託管多個wireguard服務或其他東西。

以下描述的是基本要點,有兩個工作組介面。在這種情況下,正在執行透明地竊取所有流量的wg0正常操作,其中有一個可用的接口,我可以在其中配置應用程式以專門與其通訊。 我不介意您的解決方案是否被迫以這種方式工作,我可以為不支援「使用此介面/IP 進行流量」標誌的軟體設定 SOCKS 和 HTTP 代理以獲得相同的效果。wg-quickwg1
wg0

                                                             
      Home                ║      ISP       ║       Internet  
                          ║                ║                 
                          ║                ║                 
  ┌─────────────┐         ║                ║                 
  │             │         ║                ║                 
  │             │         ║                ║        ┌───┐    
  │             │         ║                ║     ╔══╪        
  │         eno1│         ║                ║     ║  └───┘    
  │   wg0      ┐│         ╙────────────────╜     ║  VPN0     
  │     ┐      └─────────────┘                   ║           
  │     ╞════════════════════════════════════════╝           
  │     ┘   ╔════════════════════════════════════╗           
  │   wg1   ║  ┌─────────────┐                   ║           
  │     ╓   ║  ┘│  router                        ║  ┌───┐    
  │     ╠═══╝   │         ╓────────────────╖     ╚══╪        
  │     ╙       │         ║                ║        └───┘    
  │             │         ║                ║        VPN1     
  │             │         ║                ║                 
  └─────────────┘         ║                ║                 
        PC                                                   
                                                             

「為什麼?」。使用 openVPN,我的提供者允許開放端口,基本上本地防火牆允許,我可以公開路由,並且可以在我想要的任意數量的端口上託管服務。他們已經轉向wireguard,這很好,但他們只支援每個wireguard 連接一個開放連接埠。所以基本上對於每個我有端口轉發的應用程序,我想為其啟動一個 VPN 接口。

只使用wireguard,不使用iptables 或任何東西(我根本不明白),這可能嗎?

答案1

是的。好的。因此,從表面上看,解決方案確實很簡單,只要sudo ip route add $VPN1 via eno1允許它透過 eno1 連接到 VPN1,無論 wg0 是否存在。您完全可以::0相同的命名空間只要您的應用程式支援綁定到連接介面(例如netcat -s),就將其中一個作為預設值 (wg0)。需要注意的是,只有一個這樣的隧道可能會產生wg-quick's Table=auto


然而,上週我一直在努力奮鬥的是我最初想要這樣做的目的;讓這些 wg 介面傳送入站流量!

我嘗試了很多事情;

  • wg-quick天真地只是在路由就位的情況下運行多次(這會殺死所有內容並試圖wg-quick down完全破壞您的網路堆疊)
  • 如上所述,旋轉多個,其中一個為Table=auto,其他為Table=off
  • 如上所述,旋轉多個,其中一個為wg-quick,其他為wg
  • 旋轉多個eno1躲在一個後面namespace(我什至無法讓它適用於出站流量...)
  • 旋轉多個每個人wg都有自己的namespace

但即使這些工作[用於各自隧道中的出站流量](除非另有說明),所有這些都拒絕傳入連線(使用 進行測試netcat -l -p $assignedPort),無論ufw disable「VPN{0,1}」是否使用相同或不同的伺服器.


這裡的解決方案是我的昨天終於遇到了。魔法醬wg-quick正在做Table=auto; Fw馬克。

我試圖避免學習如何自己做的事情「只使用wireguard 可以嗎?」。好吧,您確實需要標記資料包並與表關聯,但是您不需要理解/模仿/重新實現什麼wg-quick......顯然您可以使用它。

wg-quick因此,使用該 FwMark設定到 VPN0 的預設隧道後,在設定ip routeVPN1 的重用該 FwMark為了wg。後一個連線現在透過 eno1(根據路由),但允許從 VPN1 轉送的傳入封包(感謝 VPN0 隧道設定的表)。

相關內容