glpl 发表于 2012-7-6 13:44:01

ROS防封杀VPN上行、原线路下行解决方案

本帖最后由 glpl 于 2012-7-6 13:44 编辑

      封杀,是电信网通等运营商为了禁止多用户共享上网而采取的措施。封杀技术手段有很多种且一般封杀手段保密导致很难针对性的应对。

      不管采用何种封杀技术,都需要对用户的互联网访问数据流做检测(大多数要做传输层及应用层的检测)。要想达到防封杀目的,需要将用户的互联网访问做加密,而VPN正是此功能。

      使用VPN防封杀有两种方式:一种是用户的所有请求和应答均经过VPN服务器,如图中红线所示;一种是用户的所有请求通信数据(上行数据)经过VPN服务器,而应答通信数据(下行数据)则按原先路由走,如紫线和橙线所示。

      从图中可以很明显的看出,红线方式请求和应答数据均经过VPN服务器,也就是说VPN服务器要负担起用户的所有访问;紫线方式只有用户的请求数据(通常情况下,这种通信数据量很小)经过VPN服务器,应答数据则不经过VPN服务器,因此给VPN服务器带来的通信负担要小的多。

      要想让应答数据包走橙色线路,只需要向目标服务器请求的包的源IP为本地ROS的WAN接口IP即可。由于回程不走VPN服务器,因此,在VPN服务器上不能有对客户访问目标服务器的通信做NAT的(因为NAT是有状态的且NAT时包的某些字段会被修改)。也就是说,客户访问目标服务器的包从VPN服务器出时只是被简单的转发。这就需要在VPN服务器上的NAT规则的源要排除VPN客户端的公网IP。而一般情况下,VPN服务器上的NAT的src-address不可能是公网IP。

      本地ROS要达到此目的的方法是:从vpn客户端接口出去的数据包的源IP为本地ROS的WAN接口IP,即针对out-interface=VPN接口的包做SRC-NAT:

       chain=srcnat action=src-nat to-addresses=WAN接口IP out-interface=VPN接口名称

       当WAN接口IP变化时,大致可以用类似如下的脚本来重新配置:

:local wanip address]
:local wanip [:pick $wanip 0 [:find $wanip "/"]]
:local toaddress to-addresses]
:if ($wanip!=$toaddress) do={
ip firewall nat remove
ip firewall nat add chain=srcnat out-interface=pptp-out1 action=src-nat to-addresses=$wanip comment="forvpn"
}

上行包全部走VPN,就要去掉原先的缺省网关,改用VPN作为缺省网关(需要注意,需要添加一条静态路由,即本机到VPN服务器的通信包下一跳是本地网关。

huangfen 发表于 2012-7-6 13:49:14

一直不了解Isp关于封杀多台电脑上网的原理,现在学习了。谢谢分享

erdfdf 发表于 2012-10-7 04:13:39

求教程 有酬谢

wzl811@126.com 发表于 2014-7-19 08:39:52

有教程吗?
页: [1]
查看完整版本: ROS防封杀VPN上行、原线路下行解决方案