通过OpenVPN隧道传输特定流量

亚历克斯

我有Ubuntu Server,我想过滤流量,并且只有特定的用户或组流量通过VPN发送,其余流量通过标准Internet连接发送。我认为这很容易做到,但是在设置时遇到了很多麻烦。

我已经能够使用以下方法成功建立VPN连接:

openvpn --config '/etc/openvpn/Sweden.ovpn' --auth-user-pass '/etc/openvpn/pia.txt' --persist-key --persist-tun --tls-client --remote-cert-tls server --user vpn &

OpenVPN的配置文件包含以下内容:

client
dev tun
proto udp
remote sweden.privateinternetaccess.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0

这将创建一个名为“ tun0”的新接口。使用该接口可以很好地工作:

curl -v --interface tun0 icanhazip.com

但是,当我尝试使用eth0接口时,连接将超时:

curl -v --interface eth0 icanhazip.com

如果我禁用OpenVPN连接,那么我通过eth0进行的curl调用将正常工作。

一旦我能够同时使eth0和tun0正常工作,我就计划使用与此命令类似的方法来通过OpenVPN隧道路由特定的组:

iptables -A OUTPUT -m owner --gid-owner vpn \! -o tun0 -j REJECT

有人知道我可以同时使用eth0和tun0来工作的一种方式,这样我就可以通过它路由特定用户/组的流量,而将其他所有流量都保留下来吗?

类似文章:如何通过OpenVPN路由特定流量?-我的求解器中只有一个网卡,该解决方案似乎使用了两个网卡。

马里乌斯·马图蒂亚

我知道如何解决您的curl -test问题,以及您的整个方案都有问题,我可以建议一个解决方案。

curl可能无法通过这种方式工作:启动VPN后,在该接口(eth0)上未定义网关:eth0 NIC具有IP地址,可以访问您的LAN,但是没有网关,Internet和icanhazip尤其可以访问.com。为了使curl以这种方式工作,您将必须指示内核到216.96.152.101(icanhazip.com)的特定路由是通过eth0接口进行的:

   ip ro add 216.69.252.101 via your_home_routers_IP_address

现在,curl调用将按您希望的方式工作。

如果您想通过VPN与其外部进行稳定,完整的通信,正确的进行方法是通过基于策略的路由来安装第二个路由表您可以在姊妹站点上找到David Schwartz对该主题的简洁明了的介绍之所以需要这种方式,是因为您正在设想一个具有两个不同网关的系统,除非有两个不同的路由表,否则不允许使用这些网关。

现在,为了实现您的目标,根据用户身份沿着不同的路由对数据包进行路由,您将必须设置适当的规则来选择相关的路由表。因此,让我们假设您现在有两个表,分别称为vpn和novpn。您将必须首先使用iptablesmangle根据用户身份对数据包进行标记,然后根据所述标记的存在(或不存在)为基于策略的路由提供规则。

它可以像这样工作:

  iptables -t mangle -I OUTPUT -m owner --uid-owner some-user -j MARK --set-mark 100
  ip rule add fwmark 100 table vpn

对于打算使用vpn的用户,以及

  iptables -t mangle -I OUTPUT -m owner --uid-owner some-other-user -j MARK --set-mark 300
  ip rule add fwmark 300 table novpn

对于那些要在VPN外部进行路由的用户。另外,总是最好为其他任何内容(例如,默认值)设置路由表希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过VPN隧道传输Tor流量

来自分类Dev

无法通过OpenVPN隧道传输流

来自分类Dev

通过openvpn隧道路由公共ipv6流量

来自分类Dev

通过OpenVPN隧道路由所有流量

来自分类Dev

仅通过隧道发送 openvpn ip 专用 ip 流量

来自分类Dev

如何设置通过SSH隧道传输流量的本地SOCKS代理?

来自分类Dev

如何设置通过SSH隧道传输流量的本地SOCKS代理?

来自分类Dev

如何通过SSH隧道传输所有网络流量?

来自分类Dev

通过端口53上的专用OpenVPN隧道传输

来自分类Dev

通过SSH隧道的OpenVPN

来自分类Dev

通过SSH SOCKS隧道将流量转发到特定IP

来自分类Dev

通过SSH通过另一台计算机隧道传输流量

来自分类Dev

通过SSH通过另一台服务器隧道传输yum流量

来自分类Dev

通过ssh进行端口隧道传输。流量是否通过端口22重定向?

来自分类Dev

配置openvpn客户端以通过Openwrt中的VPN隧道路由所有LAN流量

来自分类Dev

配置Linux路由器以通过OpenVPN隧道转发某些LAN主机的流量和DNS?

来自分类Dev

使用另一台计算机通过SSH隧道传输HTTP流量

来自分类Dev

使用SSH通过代理隧道传输流量-代理服务器看到什么?

来自分类Dev

VPN客户端如何通过隧道传输所有网络流量?

来自分类Dev

通过SSH隧道的UDP流量

来自分类Dev

通过SSH传输HTTP流量

来自分类Dev

在Linux中从SLIP隧道传输IPv6流量

来自分类Dev

如何配置哪些程序通过OpenVPN隧道?

来自分类Dev

4in6隧道(通过OpenVPN?)

来自分类Dev

如何配置哪些程序通过OpenVPN隧道?

来自分类Dev

通过OpenVPN的传输守护进程

来自分类Dev

通过OpenVPN的传输守护进程

来自分类Dev

通过ssh隧道传输VNC / rdesktop

来自分类Dev

通过ngrok隧道传输wordpress时的cookie

Related 相关文章

热门标签

归档