Networking

向 eth1 發送 WG 流量

  • March 6, 2022

我用 AWS 設置了一個wireguard 伺服器,用一個樹莓派設置了wireguard 客戶端。

現在我需要將 WG 流量 (wg0) 重定向到 eth1(eth0 是我的交換機的上行鏈路)

– 我的目標是在客戶端連接到 PI eth1(全隧道)時從我的 WG 伺服器獲取 IP

我的 WG 配置

[Interface]
Address = 10.1.1.1/24
ListenPort = 51820
PrivateKey = ##
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = ##
AllowedIPs = 10.1.1.2/32

我安裝了 Netplan,但我對配置很迷茫(我需要將 WG0 流量發送到 ETH1)

以下配置是否有意義:(可能不是……)

network:
   version: 2
   renderer: networkd
   bonds:
       bond0:
           dhcp4: yes
           interfaces:
               - wg0
               - eth1
           parameters:
               primary: wg0



It's would be even better for the Raspberry PI to joint my UniFi VLAN (uplink) and get an IP from there but still sent/receive all the traffic from WG server but that's to complex for me I guess

更新:我應該將 WG 配置添加到 Netplan 嗎?

tunnels:
network:
   version: 2
   renderer: networkd
   bonds:
       bond0:
           dhcp4: yes
           interfaces:
               - wg0
               - eth1
           parameters:
               primary: wg0
 wg0:
   mode: wireguard
   addresses: 10.1.1.1/24
   peers:
     - keys:
        Public_key?
       ...
   key: Private_key?

首先與此bond無關,基本上,練習是使用 ip 規則,該規則dev wg0為來自eth1.

ip route add default dev wg0 table 123
ip rule add iif eth1 lookup 123

(數字123是任意的。如果您希望eth1主機能夠訪問主機,則需要對其進行細化eth0。)

當然,IP 轉發也需要啟用(sysctl)和允許(防火牆,如果有)。

然後,您決定是否要為eth1IP 子網偽裝/NAT,或者在wireguard 伺服器上為其添加返迴路由。如果可能,建議使用後者,其中一個原因是您無論如何都需要在wireguard伺服器上進行偽裝/ NAT(對於任何一個10.1.1.2eth1IP子網),假設您想使用其介面之一進行Internet連接。(NAT 的層數應盡量減少。)

(我假設10.1.1.2是 Pi 上的 WG IP。目前尚不清楚您展示了哪個配置。)

如果您選擇不在 Pi 上對其進行 NAT,請確保eth1IP 子網與wireguard 伺服器上使用的任何子網不衝突。在這種情況下,還需要AllowIPs=在wireguard 伺服器上添加子網。

您很可能應該將PostUp=用於上述設置,因為我不確定 netplan 是否有辦法讓您指定它。(添加的路由消失了應該wg0也沒有了,所以只需要用Pre/刪除ip規則即可PostDown=。)

編輯:您可能應該Table=off在客戶端 conf 上使用,除非您希望 Pi 自己的流量也進入隧道。

引用自:https://serverfault.com/questions/1095450