我目前正在 2 个站点设置环境。所有服务器都是基于 Linux 的。第一个站点是我的办公室,第二个站点是 AWS。
我在 AWS 中的 VPC 中有 2 台服务器,具有站点到站点 VPN:
- Web01 - 172.31.24.106 和 Revproxy01 - 172.31.17.216
我办公室有 1 台服务器 (Raspberry PI) 和 1 个 IP 摄像头
- Rasberry01 - 192.168.102.1 和相机 1 - 192.168.102.79。
Raspberry PI充当AP(使用hostapd和dnsmasq),相机通过wifi直接连接到PI(相机不连接到本地LAN,仅连接到自己LAN中的Raspberry PI)
VPN 位于 Raspberry1 (IPSec Strongswan) 上,并配置为连接到 AWS 端的 AWS 站点到站点 VPN。
经过大量的研究和时间,我已经把一切都准备好了并运行起来:
- 172.31.24.106 和 172.31.17.216 可以 ping 通 192.168.102.1 和
- 192.168.102.1 可以 ping 通 172.31.24.106 和 172.31.17.216。
路由是在 AWS 端设置的,因此发往 192.168.102.0/24 网络的流量将传递到 192.168.102.1
我的下一步是能够从 172.31.24.106 ping 192.168.102.79。我在 192.168.102.1 上执行了 TCPDump,当我从 172.31.24.106 ping 192.168.102.79 时,可以看到数据包到达@192.168.102.1。
我想我需要在 192.168.102.1 上路由流量,这样当 172.31.24.106 ping 192.168.102.79 时,它将从 eth0 (192.168.1.114) 转发到 wlan0 (192.168.102.1),然后转发到正确的目的地 192.168。 102.79
我最终想从 web01 和 Revproxy01 访问相机 http feed
网络图
+-------------+ +--------------+ +----------------------+
|Raspberry1 +--------------+ | | |
| |VPN to AWS | Office Router+-------------+ +-------------+ |
| +--------------+ | | | | | |
| |192.168.1.114 | | | +---+172.31.24.106| |
+-------------+ +--------------+ | | | | |
WLAN |192.168.102.1 | | +-------------+ |
|192.168.102.79 | | |
+-------------+ | | |
|Camera01 | | | |
| | | | +-------------+ |
| | | | | | |
| | | +---+172.31.14.216| |
+-------------+ | | | |
| +-------------+ |
| |
| |
| AWS VPC |
| |
+----------------------+
答案1
在我看来,整个 VPN 的内容与这个问题无关。最后这似乎是一个简单的路由问题。
为了让 Raspberry1(成功)转发流量,您需要:
在Raspberry1上启用路由功能(
sysctl
):net.ipv4.ip_forward = 1
允许在 Raspberry1 上的防火墙中转发(如果防火墙处于活动状态),如下所示:
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -s 172.31.24.106 -d 192.168.102.79 -j ACCEPT
您需要将 192.168.102.1 配置为 Camera01 上的默认网关或 Raspberry1 上的 SNAT,以便 Camera01 的流量似乎来自 192.168.102.1