解决依赖关系
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
2.由于我的mysql已经编译安装过,所以只安装pam相关的挂件包
yum install pam_krb5 pam_mysql pam pam-devel
3.编译安装lzo
tar -zxvf lzo-2.03.tar.gz cd lzo-2.03 ./configure make && make install
4.添加路径
vi /etc/ld.so.conf 添加以下内容 /lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
5.安装openvpn,需要两个版本2.2.2和2.0.9,2.0.9是因为2.2.2版本pam认证有问题,所以拿个低版本的
tar -zxvf openvpn-2.2.2.tar.gz ./configure --prefix=/usr/local/openvpn make && make install mkdir -pv /etc/openvpn cd /root/openvpn-2.2.2 cp -R easy-rsa /etc/openvpn/ cd /etc/openvpn/easy-rsa/2.0/ cp vars vars.bak 修改vars文件,如下: cat vars|egrep -v "(^#|^$)" export KEY_COUNTRY="CN" export KEY_PROVINCE="BJ" export KEY_CITY="beijing" export KEY_ORG="beijing" export KEY_EMAIL="32895@139.com" export KEY_EMAIL=32895@139.com export KEY_CN=CN export KEY_NAME=hello export KEY_OU=hello export PKCS11_MODULE_PATH=changeme export PKCS11_PIN=1234
保存退出,执行以下命令,生成服务器和客户端所需要的key,注意!有的地方需要交互
source ./vars ./clean-all ./build-ca ca ./build-key-server server ./build-dh /usr/local/openvpn/sbin/openvpn --genkey --secret keys/ta.key
6.MySQL配置×××账号
mysql> create database vpn; mysql> grant all on vpn.* to vpn@localhost identified by 'vpnadmin'; mysql> flush privileges; mysql> use vpn; mysql> create table vpnuser (name char(20) NOT NULL,password char(120) default null,active int(10) not null default 1,primary key (name)); mysql> insert into vpnuser (name,password) values('qd',password('qd123')); mysql> desc vpnuser
7.配置pam
创建openvpn pam验证配置文件 vim /etc/pam.d/openvpn 添加以下内容 auth sufficient pam_mysql.so user=vpn passwd=vpnadmin host=localhost db=vpn table=vpnuser usercolumn=name passwdcolumn=password where=active=1 sqllog=0 crypt=2 account required pam_mysql.so user=vpn passwd=vpnadmin host=localhost db=vpn table=vpnuser usercolumn=name passwdcolumn=password where=active=1 sqllog=0 crypt=2 保存退出
8.编译2.0.9openvpn源码,将openvpn-auth-pam.so文件拷贝到/etc/openvpn目录下
tar -zxvf openvpn-2.0.9.tar.gz cd openvpn-2.0.9/ ./configure cd plugin/auth-pam/ make cp openvpn-auth-pam.so /etc/openvpn/
9.测试pam
yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-lib cyrus-sasl-gssapi /etc/init.d/saslauthd restart [root@slave02 2.0]# testsaslauthd -u qd -p qd123 -s openvpn 0: OK "Success.
10.修改配置文件如下:
默认配置文件在源码包的sample-config-files/server.conf,直接复制到/etc/openvpn/下 修改为: port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem tls-auth /etc/openvpn/easy-rsa/2.0/keys/ta.key 0 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp bypass-dns" push "dhcp-option DNS 8.8.8.8" push "172.16.10.0 255.255.255.0" client-to-client keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log log openvpn.log verb 3 client-cert-not-required username-as-common-name plugin ./openvpn-auth-pam.so /usr/local/openvpn/sbin/openvpn
11.开启内核转发
net.ipv4.ip_forward = 1 记得sysctl -p
12.设置防火墙转发
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o em1 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source x.x.x.x #表示vpn内网ip地址 记得保存防火墙策略
13.创建启动脚本:
进入源码包目录 sample-scripts/openvpn.init /etc/init.d/openvpn 修改/etc/init.d/openvpn启动脚本的第69行改为 openvpn_locations="/usr/local/openvpn/sbin/openvpn /usr/sbin/openvpn /usr/local/sbin/openvpn"
客户端配置:
windows默认安装路径为C:\Program File(x86)\Open×××
将服务器端的ca.crt ca.key ta.key放到openvpn客户端的config下
将客户端默认安装路径中sample-config中的client复制到config目录,然后修改如下
client dev tun proto udp remote openvpn服务端的IP resolv-retry infinite nobind persist-key persist-tun ca ca.crt tls-auth ta.key 1 ns-cert-type server comp-lzo verb 5 auth-user-pass
在安装完客户端配置完成后桌面会有openvpn gui双击运行,输入数据库中vpn的账号密码,图标变绿表示已经连接上拉~~
感谢振兴的帮忙~~