我家里有几台设备在网络上运行。我希望能够远程访问它们,特别是 OpenHAB 和 OctoPrint 网页,而无需在我的网络上公开任何端口或在家中处理 DNS。
我计划在 DigitalOcean 上远程设置 OpenVPN 服务器并通过智能手机连接到它。有没有办法让一台计算机(例如 Raspberry Pi)将整个家庭网络暴露给 OpenVPN 服务器?
速度不是主要问题,但安全才是。这似乎是可行的,但我没有足够的网络背景来知道要搜索的正确词语,这将是我设置 VPN 服务器的时间。我不想在家里的每台设备上安装 VPN 软件,因为这样需要保持更新,有些只是我想要 ping 的小型 Arduino 板。当然,网络外的任何设备都会安装 VPN 软件。
答案1
有没有办法让一台计算机(比如 Raspberry Pi)将整个家庭网络暴露给 OpenVPN 服务器?
是的,这是路由器的基本功能。
服务器和 Raspberry 都需要启用 IP 路由(转发)。例如,在 Linux 上,这将是
net.ipv4.conf.all.forwarding
和net.ipv6.conf.all.forwarding
sysctls。VPN服务器需要一条路线到LAN 子网通过Raspberry Pi 的 IP 地址。(具体来说,通过其 VPN 地址,而不是 LAN 地址,因为路由是从 VPN 服务器的角度出发的。)
注意:当您在默认的“tun”模式下使用 OpenVPN 时,实际上需要将其分为两个配置:
1. 通过内核路由到家庭子网
tun0
(无网关),
2. 以及 OpenVPN伊洛特选择通过 Raspberry Pi 的 IP 作为网关连接到同一子网。在“tap”(以太网仿真)模式下,单个内核路由就足以满足您的需求。
你的局域网主路由器(例如 ISP 发布的“路由器/调制解调器”)需要一条反向路由——通过 Raspberry Pi 的局域网IP地址。
如果您无法进行此项配置,还有其他选择,但它们是单独线程的主题。
这树莓派本身已经具有所有必要的路由(因为它直接连接到 LAN 和 VPN)。
最后,你的 VPN 服务器需要推LAN 子网到所有其他客户端(例如您的手机),这样他们就知道需要通过 VPN 才能访问它。
(如果您已经采用“默认”路线,则这是可选的,但我还是建议这样做。)