利OpenVPN自带的http-proxy突破防火墙的封锁

miaoheping 2014-04-04

openVPN是差不多是大家用来做VPN服务器的首先,那openVPN如何突破防火墙的封锁咧,有两种解决方案,一是用openVPN自带的http-proxy,二是用HttpTunnel

一、利openVPN自带的http-proxy突破防火墙的封锁
OpenVPN本身可以使用http代理,也就是说,OpenVPN客户端不是直接和OpenVPN服务器连接,而是使用http代理进行连接。这个特性是OpenVPN的外围特性,不是其核心的,然而却能解决很多实际问题,它相当于隧道外面又套了一个隧道,不过这个外面的隧道并不是真实的隧道,因为它并没有封装,而仅仅是伪装了端口信息而已,然而不管怎么说,它还是使用http代理服务器的connect方法的。具体流程就是:

1.OpenVPN客户端连接http代理服务器(CONNECT方法);

2.http代理服务器连接OpenVPN服务器;

3.http代理服务器在OpenVPN客户端和OpenVPN服务器之间中转数据。

OpenVPN客户端 --> http代理服务器 --> OpenVPN服务器

http代理服务器和OpenVPN服务器可安装在同一台机器上
配置OpenVPN服务器(安装过程可见以前的博文):

cat /etc/openvpn/server.conf

  1. port 9091
  2. proto tcp #协议启用tcp
  3. dev tap
  4. ca ca.crt
  5. cert server.crt
  6. key server.key
  7. dh dh1024.pem
  8. server 10.9.0.0 255.255.255.0
  9. #ifconfig-pool-persist ipp.txt
  10. client-config-dir /etc/openvpn/ccd
  11. push "route 10.9.0.0 255.255.255.0"
  12. push "redirect-gateway def1 bypass-dhcp"
  13. push "dhcp-option DNS 8.8.8.8"
  14. keepalive 10 120
  15. comp-lzo
  16. user nobody
  17. group nobody
  18. persist-key
  19. persist-tun
  20. status status.log
  21. log openvpn.log
  22. verb 3

配置http代理服务器,这里就用squid(安装过程见以前博文)

cat /etc/squid/squid.conf

  1. http_port 8080 #启用一般不会被封的端口
  2. access_log /var/log/squid/access.log squid
  3. auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/userpw #用户名密码认证
  4. acl password proxy_auth REQUIRED
  5. http_access allow password
  6. acl all src 0.0.0.0/0.0.0.0
  7. http_access allow all
  8. coredump_dir /var/spool/squid
  9. header_access Via deny all
  10. header_access X-Forwarded-For deny all

OpenVPN客户端配置:

  1. client
  2. dev tap0
  3. dev-node vpn #tap网卡名称
  4. proto tcp
  5. remote 222.101.202.303 9091
  6. nobind
  7. persist-key
  8. persist-tun
  9. ca ca.crt
  10. cert client001.crt
  11. key client001.key
  12. ns-cert-type server
  13. comp-lzo
  14. verb 3
  15. http-proxy 222.101.202.303 8080 pw.txt #pw.txt为squid的用户名和密码认证文件,用户名一行,密码一行
  16. http-proxy-retry

cat pw.txt
test #squid认证用户名
test123 #squid认证密码

现在就开始用openVPN客户端去连接openVPN服务端,如果出现以下的提示信息,就说明通过http-proxy连接openVPN服务端成功了

Wed Dec 05 14:24:53 2012 Send to HTTP proxy: 'CONNECT 203.169.243.4:18181 HTTP/1.0'
Wed Dec 05 14:24:53 2012 Attempting Basic Proxy-Authorization
Wed Dec 05 14:24:55 2012 HTTP proxy returned: 'HTTP/1.0 200 Connection established'

OpenVPN 的详细介绍:请点这里
OpenVPN 的下载地址:请点这里

相关阅读:

相关推荐