VPN有两种协议:
1.点对点隧道协议(PPTP) 1723
2.第2层隧道协议(L2TP) 500
其中PPTP协议使用 1723 TCP端口号,L2TP协议使用 500 TCP端口号。
1.VPN定义:
VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”。顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内部专线。它可以通过特殊的加密的通讯协议在连接在Internet上的位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路,就好比是架设了一条专线一样,但是它并不需要真正的去铺设光缆之类的物理线路。
这就好比去电信局申请专线,但是不用给铺设线路的费用,也不用购买路由器等硬件设备。VPN技术原是路由器具有的重要技术之一,目前在交换机,防火墙设备或WINDOWS2000等软件里也都支持VPN功能,一句话,VPN的核心就是在利用公共网络建立虚拟私有网。
2.VPN网络协议:
针对不同的用户要求,VPN有三种解决方案:远程访问虚拟网(Access VPN)、企业内部虚拟网(Intranet VPN)和企业扩展虚拟网(Extranet VPN)(Easy VPN也叫做EzVPN),这四种类型的VPN分别与传统的远程访问网络、企业内部的Intranet以及企业网和相关合作伙伴的企业网所构成的Extranet(外部扩展)相对应。
想改变pptp 的端口,google了一下才发现似乎没有任何无痛的方法,每个方法都有点不足。1、服务器端使用pptpd,网上找到3种方法:添加iptables规则、修改/etc/services 文件和修改pptpd源代码。
1-1、添加iptables规则
这个方法很简单,就是在数据包进入网关时就修改其源端口为vpn的默认端口1723,实现端口重定向:
iptables -t nat -A PREROUTING -p tcp --dport 31723 -j REDIRECT --to-ports 1723
这样做的缺点是,占用了两个端口,而且还需要其他iptables规则来防止外网直接访问1723端口才能达到隐藏的目的。
1-2、修改 /etc/services 文件
/etc/services/ 文件里定义了标准网络服务所对应的端口。虽然不是强制使用,但pptpd就是使用其中定义的端口来提供服务的。搜索pptp,可以找到:
...
hks-lm 1722/tcp
hks-lm 1722/udp
pptp 1723/tcp
pptp 1723/udp
csbphonemaster 1724/tcp
csbphonemaster 1724/udp
...
将pptp开头的两行后面的1723改成想使用的端口。如果pptpd服务已经启动了的话,就重新启动一下,就可以使用新端口了。如果对于不能重启pptpd服务的情况,这种方法就没有第一种方法好,但相对下面的方法也算很简捷了。
1-3、修改pptpd源代码
下载了pptpd的源代码,grep了一下,发现在 pptpdefs.h 文件里有如下定义:
...
/* PPTP ctrl message port */
#define PPTP_PORT 1723
...
尝试修改了,再编译安装后,运行发现不起作用,但是无论是原来的端口还是修改后的端口都没法使用。也不知道是哪里出错,暂时没找到原因。不过有了上两种方法,这个方法能否成功也无所谓了。
2、客户端使用pptpclient,参考上面服务器的修改方法
2-1、添加iptables规则
这个方法不太适合这种情况,因为是要对发出去的包的端口号进行修改,则当包回来的时候也要将其端口改回来,其实就相当于建立了一个管道了,比较麻烦。而且要对包进行标记和跟踪,需要很多步骤。
2-2、修改 /etc/services 文件
这个方法对客户端无效,也许客户端根本就不会读取 /etc/services 。
2-3、修改pptpclient源代码
从pptpclient官网下载了源代码,grep之后,找到pptp端口的定义是在 pptp_msg.h文件中:
...
/* PPTP magic numbers: ----------------------------------------- */
#define PPTP_MAGIC 0x1A2B3C4D /* Magic cookie for PPTP datagrams */
#define PPTP_PORT 1723 /* PPTP TCP port number*/
#define PPTP_PROTO 47 /* PPTP IP protocol number */
/* Control Connection Message Types: --------------------------- */
...
修改其中 PPTP_PORT 的值后make,运行发现有效,可以顺利连接到已经修改过的pptp vpn的端口上。
发现pptpclient的结构比较简单,如果想嵌入到其他的软件里也比较方便,只需要了解一下其中主要函数的调用即可。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)