VPN 服务器/客户端如何避免通过自己路由自己的远程连接数据包?

64b*_*uid 5 networking linux vpn route tun

我正在尝试为使用 TUN 接口的 linux VPN 概念化网络是如何工作的。

我目前最好的猜测如下(请纠正我):

  1. 建立到远程客户端/服务器的连接。
  2. TUN 接口创建并启动
  3. 更新路由表以将默认网关设置为 TUN 接口

但是,发往远程客户端/服务器的数据包不会最终进入 TUN 接口并形成某种循环吗?VPN 系统如何解决这个问题?我的理解有什么差距?

小智 4

您是正确的,对于纯粹基于目的地的路由,这是一个问题,如果您通过隧道到达的目的地与隧道建立所需的路由重叠,等等......

我通常看到的完成此操作的方法以及我自己在各种路由器上完成的方法是使用策略路由:

  • 充当 VPN 端点的路由器通过其 ISP 链路保持指向 Internet 的默认路由
  • 它还具有一个策略路由,其中​​包含基于源的规则,规定来自其后面子网的流量,无论其目的地如何,都应通过隧道发送。