记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

centos 5 yum 安装 openvpn 一对多客户端 


openvpn 除了fanqiang以外,还是可以做一对多点的网关,即多个客户端从不同的地方联入服务器,然后服务器作为一个中间代理人角色,所有连接
到服务器的用户,可以组成一个虚拟的局域网,这样多个办公室的人可以通过vpn,如同在同一个局域网一样了.

centos 5 默认的yum 源没有openvpn,所以需要添加外部的源,可以参考 http://www.unxmail.com/read.php?101

然后运行
yum makecache
yum install openvpn


安装完成以后,开始配置

cp -R /usr/share/openvpn/easy-rsa /etc/openvpn/
# 或者是这个德行,貌似不同的系统,这个位置不一样
cp -R /usr/share/doc/openvpn-2.2.0/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa/2.0
chmod +x ./*
source ./vars


下面开始生成key等文件,所有的都回车默认
./clean-all

创建CA
./build-ca server

创建CA之后来生成服务器证书,输入
./build-key-server server

生成客户端证书,同样,都是默认回车
./build-key client1
./build-key client2

最后生成Diffie Hellman参数:
./build-dh


证书等生成完毕,开始设置配置文件,如下的配置文件支持 单server --->> 多client,而且不会修改默认的网关,所以运行后,不会影响现有的
网络路由,这样可以支持多客户端之间的互相连接
以下文件保存在 /etc/openvpn/server.conf
vim /etc/openvpn/server.conf


引用
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
status /var/run/openvpn.status
server 10.10.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/ccd
user nobody
group nobody
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
script-security 2
verb 3


如果想支持openvpn 能踢掉连接的用户,可以打开openvpn 的 management 功能,方法就是在配置文件里面添加如下

引用

management 127.0.0.1 9999


使用的方法就是用 telnet 127.0.0.1 9999
登陆进入后,help下就知道怎么操作了,非常的方便

如果要想修改客户端连接以后,自动修改网关为服务器的地址,并用来fan,用下面的配置文件
引用
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
server 10.10.10.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/ccd
user nobody
group nobody
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
script-security 2
verb 3


如果想让服务端支持同一个客户多次登录的化,服务器端配置文件添加如下

引用
duplicate-cn


上面的 client-config-dir /etc/openvpn/ccd  表示固定客户的ip,即每个客户拨号上来以后,ip是固定的

创建 /etc/openvpn/ccd 目录, 在目录里面创建CN的名字的文件名,如上,应该为 client1 client2 等样子的文件,内容如下

ifconfig-push 10.10.10.5 10.10.10.6


批量创建这个文件的命令
for i in `seq 1 10`
do
((IPA=i+4))
((IPB=i+5))
echo "ifconfig-push 10.10.10.${IPA} 10.10.10.${IPB}" > /etc/openvpn/ccd/client${i}
done


注意, 每个ip之间,ip间隔4个, 5,9,13 等,依次类推

配置完成openvpn以后,开始配置iptables,设置开启ipv4的路由转发
vim /etc/sysctl.conf

修改为
引用
net.ipv4.ip_forward = 1

运行如下命令,配置nat

iptables -t nat -A POSTROUTING -j MASQUERADE


保持开机运行
chkconfig openvpn on
echo 'iptables -t nat -A POSTROUTING -j MASQUERADE' >> /etc/rc.local


重新启动openvpn服务
/etc/init.d/openvpn restart


打包 keys 目录下的文件,并下载到客户端,具体配置方法,不做说明了,配置文件如下
--------------------------------------------------
以下为客户端配置文件
引用
client
dev tun
proto udp
remote  x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
comp-lzo
script-security 2
verb 3


ps: 经过我的测试,在网络不好的情况下,会发生掉包的情况,而且掉包比较厉害,重新连接又可以用.解决的方法如下:

在客户端的配置文件中,添加如下两行,经过测试,这个方法非常有效,服务端不用做修改

引用
mssfix 1300
tun-mtu-extra 32


如果是用用户名和密码的方法来验证登陆,需要 openvpn 2.2 的版本,官方最新版本的已经支持
配置文件如下,这里仅仅需要 ca 就可以了,其他的都不需要

引用

client
dev tun
proto udp
remote  xxxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
comp-lzo
script-security 2
verb 3
auth-user-pass pass.txt
explicit-exit-notify 2
no-replay


更高级的自动fan的方法,参考


转载请标明出处【centos 5 yum 安装 openvpn 一对多客户端 】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论