将 WG 流量发送到 eth1

将 WG 流量发送到 eth1

我使用 AWS 设置了 wireguard 服务器,并使用 Raspberry PI 设置了 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?

答案1

首先bond与此无关,基本上,练习是利用 IP 规则,它会dev wg0为来自的所有流量查找另一个路由表(由带有的默认路由组成)eth1

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

(该数字是任意的。如果您希望主机能够访问主机,则123需要优化它们。)eth1eth0

当然,还需要启用(sysctl)和允许(防火墙,如果有)。

然后,您决定是否要对eth1IP 子网进行伪装/NA​​T,或者在 wireguard 服务器上为其添加返回路由。如果可能,建议使用后者,原因之一是无论如何您都需要在 wireguard 服务器上进行伪装/NA​​T(对于 IP 子网10.1.1.2eth1IP 子网),假设您想使用它的一个接口进行 Internet 连接。(NAT 层数应保持在最低限度。)

(我假设10.1.1.2是 Pi 上的 WG IP。不清楚您显示的是哪个配置。)

如果您选择不在 Pi 上对其进行 NAT,请确保IP 子网与 wireguard 服务器上使用的任何子网不冲突。在这种情况下,还需要在 wireguard 服务器上eth1添加子网。AllowIPs=

您很可能应该使用PostUp=上述设置,因为我不确定 netplan 是否有办法让您指定它。 (添加的路由应该在wg0消失时消失,因此您只需使用Pre/删除 ip 规则即可PostDown=。)

编辑:您可能应该Table=off在客户端配置上使用,除非您希望 Pi 自己的流量也进入隧道。

相关内容