我使用 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
需要优化它们。)eth1
eth0
当然,还需要启用(sysctl)和允许(防火墙,如果有)。
然后,您决定是否要对eth1
IP 子网进行伪装/NAT,或者在 wireguard 服务器上为其添加返回路由。如果可能,建议使用后者,原因之一是无论如何您都需要在 wireguard 服务器上进行伪装/NAT(对于 IP 子网10.1.1.2
或eth1
IP 子网),假设您想使用它的一个接口进行 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 自己的流量也进入隧道。