如何配置 OpenVPN 客户端路由器

如何配置 OpenVPN 客户端路由器

我正在尝试设置 OpenVPN 路由器,以便我可以在 Ubuntu 12.10 上将我的平板电脑(无线)和蓝光(有线)连接到另一个国家的付费 VPN 服务。我已使用 DD-WRT(太慢)和 PFSense 虚拟实例(太有限)成功完成此操作。

我是 Linux 新手,但这个项目已经完成了 90%。硬件是 2 个有线以太网端口,其中一个连接到传统家用路由器,还有一个无线网卡。

到目前为止我已经..

  1. 使用 hostapd 将我的无线网络设置为真正的主接入点
  2. 在无线和本地局域网之间建立了一座桥梁(我认为)
  3. 设置一个 DHCP 服务器,成功地为网桥分配地址 - 无线和有线都可以获取这些地址。
  4. 设置 OpenVPN,以便它在启动时成功创建隧道连接。

当前行为将我的 Ubuntu 计算机的所有流量路由到 VPN 服务器。其他设备没有任何连接,这就是问题所在。

我的问题/目标:

我如何配置路由,以便 OpenVPN 仅通过 VPN 隧道引导来自我的网桥(192.168.10.x 下的设备)的流量,而不是来自实际 Ubuntu 计算机的流量?

OpenVPN 自动设置了一些路由,但它似乎忽略了我设置的桥。

我读了很多关于和的文档iptablesroute但对我来说没什么意义。尽管看过多个教程,我仍然不明白如何读取命令的结果。我还怀疑这可以通过 OpenVPN 配置文件中的和route来实现,但没有任何成功。route-noexecroute-up

我对配置文件和设置位置的了解有限。上述任务花了我至少 30 个小时的时间,所以请对我宽容一点 :)

谢谢!

编辑

我在下面发布了一个引导桥接流量的解决方案,但它并不能阻止 Ubuntu 计算机上的流量通过 VPN。

答案1

我不确定这是否理想,但至少是可行的。在理想情况下,Ubuntu 计算机上的流量不会通过 VPN 路由 - 只有连接到 Ubuntu 计算机的设备才会通过。无论如何,这是解决方案。

openvpn.conf文件中

script-security 2
up "/path/to/external/script.sh"

/path/to/external/script.sh文件中

iptables -A FORWARD -o tun0 -i br0 -s 192.168.10.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

上面tun0是 OpenVPN 创建的隧道,br0是我本地无线和本地局域网之间的桥梁,192.168.10.0/24是我本地局域网的子网/DHCP 池。

我不知道该脚本的作用是什么,但是我从 Internet 连接共享上的几个站点拼凑了它。

如果有人想提供更好的答案或解释如何防止 Ubuntu 计算机上的流量通过 VPN,我将保留此答案不变。

答案2

更轻松地配置路由器本身以连接到 VPN 服务器,以便网络上的所有设备都将通过它。您可以从路由器的软件 Web 界面执行此操作。

为了让连接到您的电脑的设备能够访问互联网,您必须将该电脑与其他电脑进行互联网共享。

相关内容