centos 5 yum 安装 openvpn 一对多客户端
centos 5 yum 安装 openvpn 一对多客户端
到服务器的用户,可以组成一个虚拟的局域网,这样多个办公室的人可以通过vpn,如同在同一个局域网一样了.
centos 5 默认的yum 源没有openvpn,所以需要添加外部的源,可以参考 http://www.unxmail.com/read.php?101
然后运行
yum makecache
yum install openvpn
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
# 或者是这个德行,貌似不同的系统,这个位置不一样
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
./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
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
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
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
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
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
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的方法,参考
目录 返回
首页