OpenVPN-了解路由表+如何通过VPN仅将流量路由到特定ip


12

我正在使用OpenVPN连接到VPN服务,并且一切正常。连接后,这些是自动设置的规则:

root@linux:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:AA:1B:01:AC:FB  
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46867 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37977382 (36.2 MiB)  TX bytes:5098121 (4.8 MiB)
          Interrupt:16 

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.7.7.126  P-t-P:10.7.7.125  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:23284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5817 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:31366374 (29.9 MiB)  TX bytes:308591 (301.3 KiB)

root@linux:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.7.7.125      128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
5.120.121.114   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
10.7.7.1        10.7.7.125      255.255.255.255 UGH   0      0        0 tun0
10.7.7.125      *               255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.7.7.125      128.0.0.0       UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

这是我的理解:

  • 我的本地IP地址是192.168.1.201
  • 本地网关是191.168.1.1
  • 5.120.121.114是VPN公共IP
  • tun0是VPN隧道,我的机器的地址为10.7.7.126
  • 我了解的ptp地址10.7.7.125是VPN的另一“端”

关于路由表,我了解:

  • 默认情况下,所有流量都是通过接口tun0上的10.7.7.125发送的(但是为什么要使用该掩码?)
  • 可通过tun0到达10.7.7.1
  • 通过eth0可以访问vpn的公共IP

我不了解第二个默认网关,这是VPN不活动时的默认网关,是否只是绕过了?

那10.7.7.1呢?看起来它是VPN的网关...

为什么选择目的地128.0.0.0?

OpenVPN自动创建所有这些规则。但是,这些是基于什么创建的?

我无法控制VPN的服务器端,而只能控制客户端配置。

现在,如果我想:

  • 强制所有流量到216.58.213.174都通过VPN tun0进行,其余的全部通过eth0进行?
  • 启动VPN时可以自动建立它吗?

感谢您的建议和支持,以帮助您理解这一点。

KR,dk

编辑:

root@linux:~# ip route list
0.0.0.0/1 via 10.7.7.125 dev tun0 
default via 192.168.1.1 dev eth0 
5.152.210.249 via 192.168.1.1 dev eth0 
10.7.7.1 via 10.7.7.125 dev tun0 
10.7.7.125 dev tun0  src 10.7.7.126 
128.0.0.0/1 via 10.7.7.125 dev tun0 
192.168.1.0/24 dev eth0  src 192.168.1.201 

1
仅需2美分:使用ip route list可以更好地了解您的路线。另外,因为ifconfig和route即将在LInux上弃用……

Answers:


15

我不了解第二个默认网关,这是VPN不活动时的默认网关,是否只是绕过了?

这是OpenVPN的黑客之一,可在保持默认网关的同时通过隧道路由流量。0.0.0.0/1和128.0.0.0/1路由优先于0.0.0.0/0路由,因为它们更具体,同时仍匹配所有地址。在OpenVPN文档中搜索“ def1”以获取更多详细信息

那10.7.7.1呢?看起来它是VPN的网关...

大概是

OpenVPN自动创建所有这些规则。但是,这些是基于什么创建的?

它们可能是从服务器推送的。如果可以在配置文件启动时从客户端提供输出,我可以提供更多信息。

我无法控制VPN的服务器端,而只能控制客户端配置。

是的,但是客户端是高度可配置的,因此您可以覆盖服务器希望客户端执行的几乎所有操作。尽管如此,您仍需要满足提供商的基本要求才能进行连接。您还应该检查提供商的“使用条款”,以确保最终不会惹恼他们。

现在,如果我想:

强制所有流量到216.58.213.174都通过VPN tun0进行,其余的全部通过eth0进行?

是的,在您的配置中包含“ route 216.58.213.174 255.255.255.255 10.7.7.125”。那应该设置您想要的路线。通过从配置中删除“重定向网关”选项,您应该能够保留其他路由

启动VPN时可以自动建立它吗?

是的,见上文

我描述的所有选项以及更多选项都可以在OpenVPN的在线文档中找到。 https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage


很多很多谢谢你!!!我花了几天时间浏览网络细节,试图了解0.0.0.0/1和128.0.0.0/1的可爱技巧。最后,我只需要添加一条完全冗余的路由,除非启用了VPN。
rlduffy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.