当 OpenVPN 运行并连接到 VPN 服务器时,如何告诉 Firefox 实例使用 eth0 而不是 tun0?

当 OpenVPN 运行并连接到 VPN 服务器时,如何告诉 Firefox 实例使用 eth0 而不是 tun0?

有时我需要在不通过 VPN 的情况下连接到网站,是否可以打开 Firefox 实例并告诉它使用普通接口eth0而不是 tun0 ?

答案1

您可以为想要通过 eth0 传递的任何网站添加路由,如下所示:

ip route add websiteIP via gatewayIP dev eth0

在这里,您在 添加您要访问的网站的IP地址websiteIP,并在 添加您的正常网关IP gatewayIP

答案2

不久前,我使用 iptables 做了类似的事情。您的目标和我的项目之间的主要区别在于,我试图将所有来自网络的流量重定向到 tun0。无需对 Firefox 进行任何更改。要点如下:

  1. 创建自定义条目rt_tables来处理某些数据包
  2. 所有发往端口 80 或特定 IP 的数据包都会被标记
  3. 所有与步骤 2 中的标记匹配的数据包都将传递到步骤 1 中指定的 rt_table。
  4. 新数据包rt_tables需要有一个与其他数据包不同的网关——eth0 的 IP

我找到了一些我的旧代码,它们应该可以按原样或稍加修改后供您使用。这是我在网关上运行的一组经过稍微修改的代码:

# Create the new custom router table
echo 201 CustomRouter >> /etc/iproute2/rt_tables

# Mark the desired packets for special treatment
iptables -t mangle -A PREROUTING -d 123.123.123.123 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -d 123.123.123.123 -j MARK --set-mark 2

# Assign marked packets to CustomRouter
ip rule add fwmark 2 table CustomRouter

# Set the gateway
ip route add default via 192.168.0.123 dev eth0 table ClientRouter

以上假设 是123.123.123.123您想要通过 eth0 访问的网站的 IP,192.168.0.123是 的 IP eth0。 修改包含该 IP 的两行以匹配您想要的任何内容,无论是端口 80 上的所有内容,还是仅指定一个 IP。 只是123.123.123.123我用来测试的虚假 IP。

请注意,创建行不必每次都执行。我从中提取CustomRouterrt_tables内容的 perl 脚本会检查它是否已经存在,因此我相信它可能只需执行一次,或者每次启动时都执行一次。

答案3

具有 ip route 和 iptables 的网络规则不能使用程序名称作为条件

如果您只需要将流量路由到 Firefox 的其他接口,而无需将任何请求路由到端口 80,则可以在最新内核上使用网络命名空间。它们限制了进程可用的系统资源(“ip netns”)

以下是一个类似示例的介绍:

http://www.dasblinkenlichten.com/an-introduction-to-network-namespaces/

相关内容