使用 Ubuntu 作为 VPN 网关路由器(互联网流量仅通过 VPN)

使用 Ubuntu 作为 VPN 网关路由器(互联网流量仅通过 VPN)

我有一台运行 Ubuntu 14.04.3 的 VirtualBox VM,我想

  1. 用作网关路由器。
  2. 从此虚拟机连接到 OpenVPN 服务器,并通过 VPN 将所有数据转发到互联网
  3. 直接连接到本地机器(不通过 VPN)

我遵循了这里设置转发,一切正常。我的 iptable 规则(在 up.sh 文件中)是

sudo iptables -A FORWARD -o tun0 -i eth0 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE

第一条规则是我添加的允许转发到本地资源的规则。

我有一个类似的 down.sh 文件来拆除转发(或者说,我希望如此)

sudo iptables -D POSTROUTING -t nat -j MASQUERADE
sudo iptables -D FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -D FORWARD -o tun0 -i eth0 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT

我还执行了以下命令来启用转发

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

在我的 openvpn config.conf 文件中,我将脚本设置为通过以下命令运行

script-security 2
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh

在虚拟机启动时,运行 up 脚本并通过 VPN 转发流量(尽管前几个数据包似乎是通过常规连接发送的)。为了测试 down 脚本,我接下来执行以下操作:

sudo killall openvpn

看起来脚本已成功运行,因为我的所有 iptable 规则都已删除。但是,流量现在通过我的常规互联网连接 (eth0) 转发。

如果 VPN 断开连接或不再运行,如何停止流量转发?理想情况下,我希望始终访问本地资源,并且仅通过 VPN(从我的客户端计算机)访问互联网。

谢谢

相关内容