公司最近有vpn业务需求,部署openvpn
环境如下 :
服务器环境:centos 6.5 软件环境:openvpn 2.0.9
网络环境:外网地址 (218.75.121.33) 内网地址(10.10.10.94)
内网服务器网段 10.10.10.0/255.0.0.1
openvpn 网段规划 10.8.0.0/255.255.255.0
部署安装openVPN
安装openVPN 依赖库
yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig
创建配置目录
mkdir -P /etc/openvpn/etc
进入openvpn 源文件
复制证书生成工具
cp -r easy-rsa /etc/openvpn
复制服务端配置文件到/etc/openvpn
cp -r sample-config-files/server.conf /etc/openvpn
进入/etc/openvpn/easy-rsa/2.0
编辑vars ,更改成自己想要的证书即可
export KEY_COUNTRY="CN"
export KEY_PROVINCE="ZheJiang"
export KEY_CITY="HangZhou"
export KEY_ORG="Funcool"
export KEY_EMAIL="
825534151@qq.com"
导入vars里的环境变量
source vars
清空keys目录下的原始证书
./clean-all
生成ca证书
./build-ca
生成server端证书
./build-key-server server
生成vpn客户端证书
./build-key yanfei
生成证书交换算法
./build-dh
修改服务器端的配置文件
vim /etc/openvpn/server.conf
local 218.75.121.12 #监听vpn公网地址
port 1194 #监听端口
proto tcp #使用的协议
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.8.0.0 255.255.255.0 ##指定连接vpn的网段
ifconfig-pool-persist ipp.txt #记录客户端所获取的IP
keepalive 10 120 #每隔120秒测试连接可用性,每次ping10秒
comp-lzo #允许客户端之间的相互通讯
persist-key
persist-tun
status openvpn-status.log #openvpn状态记录文件
verb 3 #指定vpn日志输出等级
push "route 10.0.0.0 255.0.0.0" #push至客户端的路由设置
push "route 10.8.0.0 255.255.255.0"
client-to-client #允许客户端相互通讯
注:路由设置 push路由一定要把vpn网段的路由和服务器内网网段的路由一起设置上,不设置有可能vpn连接上,访问不了vpn server 内网IP
创建vpn启动脚本
vim vpn.sh
#!/bin/bash
start_daemon="/usr/local/openvpn/sbin/openvpn --daemon --config /etc/openvpn/server.conf"
usage(){
echo "eg:vpn start|stop."
}
start_vpn(){
netstat -tulnp|grep 1194 >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "openVPN is already running."
else
while true
do
$start_daemon
if [ `netstat -tulnp|grep 1194|awk -F[" ":]+ '{print $5}'` -eq 1194 ];then
echo "openVPN is running."
break
fi
sleep 1
done
fi
}
stop_vpn(){
killall openvpn
netstat -tulnp|grep 1194 >/dev/null 2>&1
if [ $? -ne 0 ];then
echo "openVPN is shutdown."
fi
}
case $1 in
start)
start_vpn
;;
stop)
stop_vpn
;;
restart)
stop_vpn
start_vpn
;;
*)
usage
;;
esac
启动vpn
./vpn.sh start
查看vpn 启动是否正常端口是否开启
netstat -tulnp |grep openvpn
tcp 0 0 218.75.121.12:1194 0.0.0.0:* LISTEN 9671/openvpn
iptables 策略设置
-A INPUT -p tcp -m tcp --dport 1194 -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
阅读(2751) | 评论(0) | 转发(0) |