我有以下设置:
物理路由器
- 互联网接口 192.168.1.1
- 将 IP 1194/udp 的端口转发到下面的虚拟机
虚拟机 (VM)
- Ubuntu 14.04.3 服务器 AMD64
- 一个虚拟网卡,用于桥接(透明共享)我的主机的物理网卡
- 物理路由器分配的静态租约(192.168.1.58)
- OpenVPN 安装并配置;虚拟接口 tun0 的 IP 为 10.8.0.1(按照指南https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-14-04)
成功的:
- 我的笔记本电脑可以连接并获取 IP 10.8.0.x
- 我的笔记本电脑可以 ping 内部设备
不成功:
- 内部设备无法 ping 10.8.0.x
- 他们甚至无法 ping 通 tun0 接口 10.8.0.1
因此路由从 10.8.0.x > 10.8.0.1 > 192.168.1.58 > 192.168.1.1 > 192.168.1.x 运行......但反向路由不起作用!
我在我的物理路由器中添加了一条路由(使用 DD-WRT v24-sp2):
- 目标 LAN NET:10.8.0.0
- 子网掩码:255.255.255.0
- 网关:192.168.1.58
- 接口:LAN 和 WLAN
但是路由仍然无法连接到 10.8.0.0 网络。我怀疑问题出在运行 OpenVPN 的 Ubuntu 服务器上。我怀疑问题在于,虽然上面的文章给出了从 10.8.0.0 到内部网络设置路由的步骤,但没有包括从内部网络到 10.8.0.0 的步骤。所以也许我只需要添加一条规则来实现这一点?我在考虑使用 iptables,但我也使用 UFW;所以我不知道该怎么做。
谢谢!
答案1
我遇到了类似的问题,搞了好几个小时才找到 Pritunl (https://github.com/pritunl/pritunl),它使用 OpenVPN,但会处理您需要的路由所需的所有 iptables 问题,并为您提供一个良好的 Web GUI 来管理客户端等。
这不是您想要的答案,但对我来说,这是一个务实的解决方案,平衡了“弄清楚”的愿望和仅拥有一个有效的 VPN 解决方案的愿望;-)