Windows XP+VMware+OpenVPN筹建VPN环境
《Windows XP+VMware+OpenVPN搭建VPN环境》
本文档的Copyleft归rosetta所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性。
本文旨在用最少的设备模拟搭建真实的VPN环境,用以学习研究(其实我只有一台电脑,不得己只能这样做……)。
只需要一台windows XP操作系统即可完成此次任务,虽然只用到一台电脑,但其完成的任务是相对比较复杂的。
最终模拟搭建一台OpenVPN服务器,使公司出差的员工或者分支机构通过windows操作系统下使用openvpn-gui拨号软件连接公司总部VPN并访问内网资源。
一,网络配置及软硬件环境
(出差员工/分支机构)VPN客户端运行环境 windows xp一台:
公网IP 10.10.10.22
虚拟IP 20.0.0.6
虚拟gw 20.0.0.5
(公司VPN服务器)VMware中运行的CentOS-5.4:
内网IP(eth0) 192.168.10.10
公网IP(eth1) 10.10.10.10
虚拟IP 20.0.0.1
虚拟gw 20.0.0.2
(公司局域网)VMware 中运行的windows xp:
IP 192.168.10.202
gw 192.168.10.10
Linux OpenVPN Server版本:openvpn-2.0.9
Windows OpenVPN 客户端版本:Openvpn-2.0.9-gui-1.0.3按上面说明配置相关IP及网关。需要说明的是,此次运行VPN客户端的xp主机使用的网卡接口是VMware的VMware Network Adapter VMnet8而不本地连接。VMware中的CentOS-5.4和windows xp网络设置使用VMnet8而不是桥接,设置如下图所示。
二,安装OpenVPN服务器
1,首先关闭SELinux和iptables,通过setup进行关掉,并执行:
service iptables stop
2,解压缩openvpn-2.0.9.tar.gz并进入openvpn-2.0.9目录
由于我不使用lzo压缩,所以加--disable-lzo
[root@xxx openvpn-2.0.9]# pwd
/root/openvpn/openvpn-2.0.9
[root@xxx openvpn-2.0.9]# ./configure --disable-lzo
[root@xxx openvpn-2.0.9]# make;make install
3,加载tun内核模块并启用转发:
[root@xxx openvpn-2.0.9]# modprobe tun
[root@xxx openvpn-2.0.9]# lsmod|grep tun
tun 21441 0
[root@xxx openvpn-2.0.9]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@xxx openvpn-2.0.9]# cat /proc/sys/net/ipv4/ip_forward
1
可以查看一下tun.ko放在的位置:
[root@xxx ~]# locate tun.ko
/lib/modules/2.6.18-164.el5xen/kernel/drivers/net/tun.ko
4,设置环境变量:
[root@xxx ~]# vim ~/.bash_profile
后面加以下内容:
D=/root/openvpn/openvpn-2.0.9/easy-rsa/
KEY_CONFIG=$D/openssl.cnf
KEY_DIR=$D/keys
KEY_SIZE=1024
KEY_COUNTRY=CN
KEY_PROVINCE=bj
KEY_CITY=bj
KEY_ORG="bj"
KEY_EMAIL="bj@126.com"
export KEY_CONFIG KEY_DIR KEY_SIZE KEY_COUNTRY KEY_PROVINCE KEY_CITY KEY_ORG KEY_EMAIL D
让环境变量立即生效:
[root@xxx ~]# source ~/.bash_profile
5,生成CA证书,签发客户端证书,生成证书及key过程中除Common Name字段唯一,其它字段可随意填写。
[root@xxx ~]# cd $D
[root@xxx easy-rsa]# ./clean-all
[root@xxx easy-rsa]# ./build-ca
[root@xxx easy-rsa]# ./build-key-server server
[root@xxx easy-rsa]# ./build-key client1
[root@xxx easy-rsa]# ./build-key client2
[root@xxx easy-rsa]# ./build-dh
[root@xxx easy-rsa]# cd keys //注意生成key时先进入keys目录
[root@xxx keys]# openvpn --genkey --secret ta.key
此时keys目录有如下证书及key文件:
[root@xxx keys]# pwd
/root/openvpn/openvpn-2.0.9/easy-rsa/keys
[root@xxx keys]# ls
01.pem ca.key client.crt index.txt serial server.key
02.pem client2.crt client.csr index.txt.attr serial.old ta.key
03.pem client2.csr client.key index.txt.attr.old server.crt
ca.crt client2.key dh1024.pem index.txt.old server.csr
把这个目录所有文件打包,因为一会客户端还需要使用:
[root@xxx keys]# tar -zcvf keys.tar.gz *
6,创建OpenVPN服务器配置文件
[root@xxx keys]# vim /usr//local/etc/server.conf
port 2194
proto udp
dev tun
;dev tap
server 20.0.0.0 255.255.255.0
push "route 192.168.10.0 255.255.255.0"
ifconfig-pool-persist /usr/local/etc/ipp.txt
ca /usr/local/etc/keys/ca.crt
cert /usr/local/etc/keys/server.crt
key /usr/local/etc/keys/server.key
dh /usr/local/etc/keys/dh1024.pem
tls-auth /usr/local/etc/keys/ta.key 0
keepalive 10 120
#comp-lzo
status /var/log/openvpn-status.loga
verb 4
persist-key
persist-tun
把之前keys目录下所有文件拷到:/usr/local/etc/keys/
7,配置就绪后启动OpenVPN
[root@xxx keys]# openvpn --config /usr//local/etc/server.conf
Wed Jul 25 16:00:28 2012 us=796069 UDPv4 link local (bound): [undef]:2194
Wed Jul 25 16:00:28 2012 us=796706 UDPv4 link remote: [undef]
Wed Jul 25 16:00:28 2012 us=797411 MULTI: multi_init called, r=256 v=256
Wed Jul 25 16:00:28 2012 us=798210 IFCONFIG POOL: base=20.0.0.4 size=62
Wed Jul 25 16:00:28 2012 us=799178 IFCONFIG POOL LIST
Wed Jul 25 16:00:28 2012 us=800104 client1,20.0.0.4
Wed Jul 25 16:00:28 2012 us=801389 Initialization Sequence Completed
最后一行提示Initialization Sequence Completed表明启动成功。
可以验证一下openvpn到底有没真正起来:
[root@xxx openvpn-2.0.9]# lsof -i :2194
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
openvpn 21355 root 5u IPv4 22646 UDP *:2194
[root@xxx openvpn-2.0.9]# lsmod |grep tun
tun 21441 2
所明一切正常。
openvpn-2.0.9-gui-1.0.3-install.exe 进行默认安装即可。
安装完毕后编辑c:\Program Files\OpenVPN\config\Office.ovpn
client
dev tun
proto udp
remote 10.10.10.10 2194
push "route 192.168.10.0 255.255.255.0"
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
;comp-lzo
verb 3
;redirect-gateway def1
tls-auth ta.key 1
并把之前打包的keys文件全部复制到此目录:c:\Program Files\OpenVPN\config\
打开OpenVPN GUI尝试连接,此时因为我们使用的是证书验证,所以不需要输入用户和密码,如果要输入那就是配置文件没有配对。
四、验证
1,在实验的过程中也遇到了好多问题,其中一个就是客户端连上后发现访问不了内网那台资源,后来发现是添加路由失败。
OpenVPN GUI连接时的信息如下图,添加到192.168.18.0/24的路由,并会分配一个虚拟IP 20.0.0.6,默认网关20.0.0.5:
2,连接成功情况下的路由表:
C:\>route PRINT
3,尝试ping访问
C:\>ping 192.168.10.202
Pinging 192.168.10.202 with 32 bytes of data:
Reply from 192.168.10.202: bytes=32 time=4ms TTL=63
Reply from 192.168.10.202: bytes=32 time=1ms TTL=63
Reply from 192.168.10.202: bytes=32 time=1ms TTL=63
Reply from 192.168.10.202: bytes=32 time=1ms TTL=63
Ping statistics for 192.168.10.202:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 4ms, Average = 1ms
在服务器处抓包:
4,tracert,它的下一跳就是OpenVPN服务器的虚拟IP。
C:\>tracert 192.168.10.202
Tracing route to 192.168.10.202 over a maximum of 30 hops
1 1 ms <1 ms <1 ms 20.0.0.1
2 1 ms <1 ms <1 ms 192.168.10.202
Trace complete.
5,ftp访问资源
C:\>ftp 192.168.10.202
Connected to 192.168.10.202.
220 ICS FTP Server ready
User (192.168.10.202:(none)):
331 Password required for .
Password:
230 User logged in.
ftp> dir
200 Port command successful.
150 Opening data connection for directory list.
-rwxrwxrwx 1 ftp ftp 0 Nov 06 2010 AUTOEXEC.BAT
-rw-rw-rw- 1 ftp ftp 0 Nov 06 2010 CONFIG.SYS
drw-rw-rw- 1 ftp ftp 0 Nov 06 2010 Documents and Settings
drw-rw-rw- 1 ftp ftp 0 Jun 27 2011 Program Files
drw-rw-rw- 1 ftp ftp 0 Jun 27 2011 WINDOWS
226 File sent ok
ftp: 收到 344 字节,用时 0.06Seconds 5.46Kbytes/sec.
内网资源图: