Skip to content

2022

基于TUN设备的VPN组网

GOST最初是在v2.9版本中引入对TUN(和TAP)设备的支持,在v3版本(beta.4)中又将实现方式由songgao/water库(TAP未变化)改为了wireguard-go,并且增加了心跳和认证机制。

GOST中TUN设备的设计思想是简单轻量,因此没有添加过于复杂的配置,对数据也没有做过多的处理。只要能够满足一些特定的使用场景就达到目的了,如果需要更加复杂的应用完全可以通过wireguard来实现。

TUN设备可以有很多的用处,比较多的可能是用来构建VPN,这里就以讲一下基于GOST的TUN设备VPN组网方案。

流量控制-分流器

所谓的分流是指按照一定的规则对流量进行划分,再对划分后的流量执行相应的操作,以达到某种程度的流量控制。

举一个现实中的例子,对于一个网络管控比较严格的公司,流量大概可以分为以下几类:

  • 非法流量 - 不被允许的流量,例如被公司禁止访问的服务,直接访问会被拒绝。
  • 内网流量 - 例如访问公司内部服务器,这种流量只能在公司内网才有效,不能被转发到外网。
  • 外网流量 - 例如访问外网服务,可能需要通过公司的代理服务器才能访问。

GOST v3动态分流功能的一种实现方式

原文地址:https://groups.google.com/g/go-gost/c/b9Z0BcqUArw

分流是指根据一定的规则让需要通过转发链的请求走转发链,不需要走转发链则绕过转发链。分流在GOST v3中通过分流器来实现(bypass),具体的使用方式可以参考https://gost.run/concepts/bypass/。

GOST v3中新增了一个记录器模块(https://gost.run/concepts/recorder/),可以看作是另外一种日志记录方式,有别于日志的是记录器可以针对特定的数据进行记录,例如记录服务的所有访问用户IP,所有访问的目标地址等。

分流器和记录器在GOST v3版本中都增加了对redis服务的支持,对于分流器可以从redis中动态加载规则,对于记录器则可以将数据记录到redis服务中。

利用以上的特性,就可以实现类似与COW(https://github.com/cyfdecyf/cow)所提供的自动分流功能,默认情况下请求不使用转发链,当请求失败后切换为使用转发链。