`
flashing
  • 浏览: 355532 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

使用公网的Windows做openvpn服务

阅读更多

关键字:openvpn,nat,路由,windows2003,网关,自由切换

首先thanks god总算是搞定了,查了无数资料啊。

话说我在公网有一台服务器放在朋友的机房,此服务器北连网通,南接电信,高速互联啊。

现在有如下的需求:我在公司的svn服务器上的代码,需要连接到公司的svn服务器上经常更新;并且我还要偶尔的使用该服务器做vpn的代理,必须同时满足这两个条件。

开始使用了windows2003/2008的服务器,经过试验发现vpn服务开启之后,只能连接一个客户端,之前设置过可以多个用户同时连接,服务器崩溃之后从新安装,但是这次不知道哪里设的不对,第一个用户连接之后,其他客户端都连不上(这个问题哪位朋友知道为什么麻烦回帖告知一下),都停止在核对用户名和密码这个对话框上;最后不得已只得干掉windows自带的vpn,尝试了isa 2006的vpn,发现还是不行,一样的问题,只好改用openvpn。

说明一下:openvpn的证书,用户名和密码的问题不在此文讨论范畴内,同类文章google一下一大把。

服务器的配置:

script-security 3
port 1001
proto tcp
;proto udp
dev tap
;dev tun

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh1024.pem

;server 10.8.0.0 255.255.255.0
server 192.168.18.0 255.255.255.0

ifconfig-pool-persist ipp.txt
;ifconfig 10.8.0.1 255.255.255.0
;mode server
;tls-server
ifconfig 192.168.18.1 255.255.255.0
;ifconfig-pool 192.168.18.2 192.168.18.6 255.255.255.0

;client-config-dir ccd
;push "redirect-gateway def1 bypass-dhcp"

#路由
push "route-gateway 192.168.18.1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 202.96.69.38"
client-to-client
;duplicate-cn

keepalive 10 120
;tls-auth ta.key 0 # This file is secret
comp-lzo
;max-clients 100
persist-key
persist-tun
status openvpn-status.log

;log         openvpn.log
;log-append  openvpn.log

# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 5
mute 20

==========================================================

客户端配置:

client
dev tap
proto tcp
remote 210.xxx.xxx.xxx 1001
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert ken.crt
key ken.key
comp-lzo
verb 4
redirect-gateway def1

============================================================

我改了默认端口,并且用了tcp协议,这些都是可以配置的。主要是使用了tap并且用了桥接,tun模式我没搞太明白,tap相对容易理解点。

这样客户端和服务器端同时拨号上来就可以互访了。

下面是要让该服务器做网关,当你访问ip.cn这样的网址的时候,显示的是服务器的ip地址而不是你自己的,这里必须在client的配置文件里面打开

redirect-gateway def1

当然如果你只想获得额外访问虚拟的能力而访问公网还是走本地,就在客户端把这行注释掉。这个地方的好处是客户端决定是否走服务器代理;如果这一句被配置在server的配置文件里面,那就是无论如何都会走服务器的网络了。

下面涉及到最关键的地方,怎么让这个子网能够通过服务器走公网从而起到加速作用呢?这里必须在windows 2003上做两件事情,第一打开ip转发,第二是开启nat服务。

以前我一直以为开启了nat服务ip转发就自动生效了,其实不然。

参考这两篇帖子设置注册表打开ip转发功能:

----------------------------------------------------------------------------------------------------------

如何在 Windows XP 中启用 TCP/IP 转发
http://support.microsoft.com/kb/315236

在 Windows Server 2003 中启用 TCP/IP 转发
http://support.microsoft.com/kb/323339/zh-cn

----------------------------------------------------------------------------------------------------------

打开ip转发之后,在2003的服务管理器里面打开nat功能,让公网的接口做nat,当然记得关闭防火墙或者添加例外,否则1001端口是无法访问的。

现在经过这样的配置之后,就可以自由切换网络了。

不得不说openvpn的确很灵活,就像官网上说的"smart",这个词用的还是很贴切的。不过前提是你得明白网络。

 

2011.01.22补充:Win7下,如果打开了UAC,要想通过服务器上网,一定让openvpn-gui以管理员启动,否则无法执行route add命令。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics