我有一台机器连接到地址为 1.2.3.4 的 openvpn 服务器。我的机器的 IP 为 192.168.1.0/24,它可以访问地址 1.2.3.4。一旦我连接到 openvpn 服务器,就会创建一个新的接口 tun0,并为其分配 IP 地址 192.168.0.6。我可以 ping 托管 IP 地址为 192.168.0.1 的 VPN 的机器。流量按预期通过接口 tun0。
我可以设置一些 iptables 规则来强制流量通过 tun0,即使我直接 ping 1.2.3.4?特别是,我想将其限制在 1.2.3.4 的 80 端口上
答案1
因此,首先我们需要更改默认路由。运行ip route
应显示当前默认路由是 VPN 网络的网关192.168.0.0/24
。这需要通过删除当前默认路由并创建指向本地网络网关/路由器(而非 VPN)的新路由来更改(连接到 VPN 时)。因此,如果您的本地网络网关是,则172.16.2.1
您将运行:
sudo ip route del default
sudo ip route default via 172.16.2.1
现在,如果您运行ip route
,route -n
您应该会看到新的默认路由现在指向您的本地网络,并且默认情况下没有流量应该通过您的 VPN 隧道。
现在我们可以继续将端口 80/443 上的所有传出流量重定向到您的 VPN 网关。
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80
sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to-destination 192.168.0.1:443
现在,这应该会将所有出站的网络流量转发/重定向到您的 VPN 的默认网关/路由器,并且所有其他流量默认从本地出站。
尝试一下并告诉我它是否满足您的要求!