我正在尝试建立一个网络,让外部用户可以使用 ovpn 文件连接到我在 VirtualBox 中创建的“team1”内部网络。目标是让这些用户只能看到内部网络内的设备,而看不到其他地方。事实上,最终目标是让他们甚至看不到 OpenVPN 服务器,但这对于建立可靠的连接来说是次要的。
到目前为止,我已经使用过此脚本构建我的 openvpn 文件,我可以连接到服务器,但 openvpn 为客户端分配了 10.8.0.0/24 IP,客户端无法访问网络上的任何设备。事实上,它看不到 openvpn 服务器两侧的网络设备。例如,我在 10.0.0.10 有一个家庭媒体服务器,对它的 ping/连接尝试失败,以及尝试连接到 10.10.10.101 的“目标盒”失败。
回想起来,我不应该使用如此相似的 IP 块,但我希望坚持使用 10.10/16 作为内部网络,以便连接的用户不必区分他们自己的家庭网络 IP 空间和这个虚拟网络的 IP 空间。
因此,最终目标是:
- 外部用户从我这里获取一个 ovpn 文件,并使用它连接到我的 IP(67.3.2.111)。
- 我的家庭路由器将此连接转发到 OpenVPN 服务器 VM(10.0.1.100)的内部 IP。
- OpenVPN 服务器接受连接尝试并为用户分配 VBox 内部网络空间中的 IP(10.10.10.200-250)。
- 用户只能看到VBox内部网络空间内的设备。
答案1
VPN 服务器必须配置为路由器,也就是说,以允许其转发网络数据包的方式配置。如果服务器是 Linux,要允许临时转发数据包,您应该执行:
echo 1 > /proc/sys/net/ipv4/ip_forward
为了使更改永久生效(更准确地说,使配置在 sysctl 进程重新启动时生效),请编辑 /etc/sysctl.conf 并进行配置:
net.ipv4.ip_forward = 1
您还应该检查 iptables 规则是否允许网络数据包转发
iptables -L
如果有避免转发的规则,您应该使用以下命令重新配置 iptables:
iptables -A FORWARD <你可以使用 -i 限制此处的输入> -j ACCEPT