我使用 RaspberryPi 作为家庭网络的 DHCP 和 DNS 服务器,并使用 wireguard 服务器来远程访问我的网络。
我的设置如下:192.168.1.4 - ISP 路由器 192.168.1.1 - 运行 Raspbian 的 Raspi 4
我在 Raspberry Pi 上运行:Docker 容器中的 pi-hole Wireguard DNSmasq HostAPd OpenVPN 客户端
Raspi 上的接口如下:br0 有 192.168.1.1,并为 HostAPd、DNSmasq 和 Wireguard 服务器桥接 eth0 和 wlan0。tun0 由 OpenVPN 客户端创建。
我想要实现的是,raspi 通过 OpenVPN 客户端从我的家庭网络路由互联网流量,同时保持 wireguard 服务器正常运行。
到目前为止,我只能使用 OpenVPN 和以下脚本:这里用于通过 VPN 隧道运行所有流量。然而,这会导致 Wireguard 服务器不再响应任何流量。我认为这是因为 OpenVPN 默认更改了所有互联网流量的默认路由。
我的另一个尝试是将“route-nopull”选项添加到 OpenVPN 配置中,并使用以下命令启用伪装:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i br0 -o tun0 -j ACCEPT
但是,通过该设置,我无法通过连接获得任何流量。
因此,我最终想要的是一个允许以下操作的配置:
所有出站流量,包括通过 OpenVPN 隧道来自 RaspberryPi 的流量,同时允许通过正常网关的入站流量。
或者
仅通过 OpenVPN 传输来自私有网络的流量,同时不改变 RaspberryPi 的路由。
感谢您的任何帮助!
编辑:添加输出
ip route show table main:
default via 172.21.2.1 dev tun0
default via 192.168.1.4 dev br0 src 192.168.1.1 metric 204
10.10.10.0/24 dev wg0 proto kernel scope link src 10.10.10.1
146.255.57.19 via 192.168.1.4 dev br0
169.254.0.0/16 dev vethcf887f2 scope link src 169.254.226.72 metric 210
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-743f216227c9 proto kernel scope link src 172.18.0.1
172.21.2.0/24 dev tun0 proto kernel scope link src 172.21.2.43
192.168.1.0/24 dev br0 proto dhcp scope link src 192.168.1.1 metric 204
目前的状态是,所有网络流量都通过 VPN 连接离开,这很好。现在我只想让所有入站流量直接进入 RaspberryPi。