Total Pageviews

Thursday, 17 September 2015

OpenVPN使用“前置代理”

使用tcp 80或443端口的OpenVPN相比pptp/l2tp/ipsec有个优势就是可以使用前置代理。
这点有以下几个作用:
一、必须使用代理连外网时,有些公司的网络需要使用固定的代理服务器才能连接外网,这种情况下此类openvpn就可以一试了(还可以用于cmwap网络破解)。
二、openvpn服务器被墙时,有时候你好不容易找到一个好用的openvpn结果没GFW封锁了服务器IP,这种情况下此类openvpn就可以配合国外普通代理服务器来达到翻墙的目的。
三、用于VPN提速时,也是好不容易找来个openvpn,结果欧洲的服务器ping值很高导致速度较慢,这种情况下此类openvpn就可以配合美国普通代理服务器来达到中转提速的目的。
代理设置方法如下:
代理无需认证时,写字板打开.ovpn格式的openvpn配置文件,在配置末尾添加如下内容即可:
http-proxy-retry
http-proxy 210.150.23.87 8080
mute-replay-warnings
其中,210.150.23.87为你的代理服务器地址,8080为其端口,中间隔一个空格(如果是cmwap突破还要加上 http-proxy-option AGENT “NokiaN90″ 伪装以防移动)。
代理需要认证时,写字板打开.ovpn格式的openvpn配置文件,在配置末尾添加如下内容即可实现记住代理密码:
http-proxy-retry
http-proxy 208.100.56.10 8080 pass.txt basic
mute-replay-warnings
其中,208.100.56.10为你的代理服务器地址,8080为其端口,pass.txt为你创建的含有代理用户名和密码的文件名 字,basic为代理认证类型,中间隔一个空格(pass.txt为一个文本文件,第一行为代理用户名,第二行为代理密码,要和.ovpn格式的 openvpn配置文件在同一文件夹下;常用代理认证类型还有ntlm)
其实在OpenVPN GUI 上就有代理设置,不过设置在配置文件里不影响其他OpenVPN,还有比较方便的代理认证。
另外openvpn配置文件里加入以下设置,可以情况本机DNS缓存,保障清洁的本机DNS环境:
script-security 3 system
route-up "net stop dnscache"
route-up "net start dnscache"
route-up "ipconfig /flushdns"
route-up "ipconfig /registerdns”
-------------------
OpenVPN无法通过公司代理服务器验证的解决办法

先介绍一下我们公司的情况:我们使用代理服务器上网。(其实基本上大多数公司都这样),代理地址例如是192.168.1.10:8080,然后平时上网的时候直接就能上,不用输入用户名和密码.

但是今天我使用OpenVPN,公司代理死活验证不通过,我在Proxy setting里的设置是选择第二个,也就是use internet explore setting.
以下是日志

Mon May 14 13:39:39 2012 us=867000 LZO compression initialized
Mon May 14 13:39:39 2012 us=867000 Control Channel MTU parms [ L:1576 D:140 EF:40 EB:0 ET:0 EL:0 ]
Mon May 14 13:39:39 2012 us=867000 Socket Buffers: R=[8192->8192] S=[8192->8192]
Mon May 14 13:39:39 2012 us=867000 Data Channel MTU parms [ L:1576 D:1450 EF:44 EB:135 ET:32 EL:0 AF:3/1 ]
Mon May 14 13:39:39 2012 us=867000 Local Options String: ‘V4,dev-type tap,link-mtu 1576,tun-mtu 1532,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client’
Mon May 14 13:39:39 2012 us=867000 Expected Remote Options String: 'V4,dev-type tap,link-mtu 1576,tun-mtu 1532,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server’
Mon May 14 13:39:39 2012 us=867000 Local Options hash (VER=V4): '31fdf004’
Mon May 14 13:39:39 2012 us=867000 Expected Remote Options hash (VER=V4): '3e6d1056’
Mon May 14 13:39:39 2012 us=867000 Attempting to establish TCP connection with 192.168.1.10:8080
Mon May 14 13:39:39 2012 us=867000 TCP connection established with 192.168.1.10:8080
Mon May 14 13:39:39 2012 us=867000 Send to HTTP proxy: 'CONNECT 116.34.23.4:443 HTTP/1.0’
Mon May 14 13:39:40 2012 us=241000 HTTP proxy returned: 'HTTP/1.1 407 Proxy Authentication Required’
Mon May 14 13:39:40 2012 us=241000 Proxy requires authentication
Mon May 14 13:39:40 2012 us=241000 HTTP proxy: no support for proxy authentication method
Mon May 14 13:39:40 2012 us=241000 TCP/UDP: Closing socket
Mon May 14 13:39:40 2012 us=241000 SIGTERM[soft,init_instance] received, process exiting
443肯定没封,因为可以上一些https的网站.

上边内容是我朋友的,她的电脑是入域的,所以上网从来不需要输入密码.

我在公司也有这个问题,但是我用无线连公司网络是OK的,连无线的话,需要输入域用户名和密码(因为我越域了),才能通过无线验证并拿到IP,这样再连VPN时就不再需要用户名和密码了,所以直接能上去,但是如果插网线,也是连不上的,但是错误日志稍有区别:

Mon May 14 09:31:18 2012 us=62000 LZO compression initialized
Mon May 14 09:31:18 2012 us=62000 Control Channel MTU parms [ L:1576 D:140 EF:40 EB:0 ET:0 EL:0 ]
Mon May 14 09:31:18 2012 us=62000 Socket Buffers: R=[8192->8192] S=[8192->8192]
Mon May 14 09:31:18 2012 us=62000 Data Channel MTU parms [ L:1576 D:1450 EF:44 EB:135 ET:32 EL:0 AF:3/1 ]
Mon May 14 09:31:18 2012 us=62000 Local Options String: 'V4,dev-type tap,link-mtu 1576,tun-mtu 1532,proto TCPv4_CLIENT,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client’
Mon May 14 09:31:18 2012 us=62000 Expected Remote Options String: 'V4,dev-type tap,link-mtu 1576,tun-mtu 1532,proto TCPv4_SERVER,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server’
Mon May 14 09:31:18 2012 us=62000 Local Options hash (VER=V4): '31fdf004’
Mon May 14 09:31:18 2012 us=62000 Expected Remote Options hash (VER=V4): '3e6d1056’
Mon May 14 09:31:18 2012 us=62000 Attempting to establish TCP connection with 192.168.88.88:1111
Mon May 14 09:31:18 2012 us=93000 TCP connection established with 192.168.88.88:1111
Mon May 14 09:31:18 2012 us=93000 Send to HTTP proxy: 'CONNECT 116.34.23.4:443 HTTP/1.0’
Mon May 14 09:31:18 2012 us=93000 Attempting Basic Proxy-Authorization
Mon May 14 09:31:18 2012 us=109000 HTTP proxy returned: 'HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied.  )’
Mon May 14 09:31:18 2012 us=109000 Proxy requires authentication
Mon May 14 09:31:18 2012 us=109000 Proxy requires authentication
Mon May 14 09:31:18 2012 us=109000 TCP/UDP: Closing socket
Mon May 14 09:31:18 2012 us=109000 SIGTERM[soft,init_instance] received, process exiting
经过我的不懈努力,终于成功了!!!
如果你公司的代理服务器地址是192.168.1.10:8080,那么在.ovpn的配置文件最后加一行,其他的地址以此类推:
http-proxy 192.168.1.10 8080 auth.txt ntlm

然后在同一个目录下新建一个auth.txt的记事本文件(什么?你想换个名字?OK,那么上面那句话里你也把名字换掉)
然后文本里第一行是你的用户名,第二行是你的密码.

然后,最重要的一点,也是我之前一直搞不定的原因,就是在Proxy setting里,一定要选择"Use OpenVPN Config-file Settings",不能选"Manual Configuration"!!!
ok,搞定!