openvpn部署文档 Linux教程


# Docker-OpenVPN 部署

https://abc.htmltoo.com/thread-46020.htm


# 配置iptables

iptables -A INPUT -s 10.2.2.0/24 -j ACCEPT
iptables -A INPUT -s 10.2.2.0/24 -m state --state NEW -m tcp -p tcp -j ACCEPT
iptables -A INPUT -m state --state NEW -m udp -p udp --dport 52114 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.2.2.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.2.2.0/24 -d 10.8.80.0/24 -o eth0 -j SNAT --to 10.8.80.1
iptables -t nat -A POSTROUTING -s 10.2.2.0/24 -d 10.8.81.0/24 -o eth0 -j SNAT --to-source 10.8.81.1
iptables -t nat -A POSTROUTING -s 10.2.2.0/24 -d 10.8.82.0/24 -o eth0 -j SNAT --to-source 10.8.82.1
service iptables save
service iptables restart


# 安装依赖

yum -y install openssl openssl-devel lzo expect


# 安装openvpn

yum -y install openvpn easy-rsa


# 修改easy-rsa配置文件

cd  /usr/share/easy-rsa/3.0.3/

vi  vars

export KEY_COUNTRY="CN"
export KEY_PROVINCE="FuJian"
export KEY_CITY="XiaMen"
export KEY_ORG="cndo.org"
export KEY_EMAIL="admin@cndo.org"
export KEY_OU="admin@cndo.org"
export KEY_NAME="EasyRSA"

source vars


# 创建各种加密证书和私钥

./clean-all && ./build-ca && ./build-key-server server && ./build-dh
openvpn --genkey --secret keys/ta.key
mkdir /etc/openvpn/keys
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/
cp vpn_expect.expect /usr/share/easy-rsa/2.0/
/usr/bin/expect
cp create_vpnuser.sh /usr/share/easy-rsa/2.0/
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf
sysctl –p
iptables -I INPUT -p tcp --dport 52114 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.2.2.0/24 -j MASQUERADE
service openvpn start
chkconfig openvpn on
create_vpnuser.sh add prepare.wuqf  ###脚本见附录
/etc/init.d/openvpn restart


# vi  create_vpnuser.sh

#!/bin/bash
canshu_num=$#
xuan_zhe=$1
vpn_user=$2
help() 
#帮助函数
{
echo '添加vpn用户执行命令sh create_vpnuser.sh add vpn用户名'
echo '删除vpn用户执行命令sh create_vpnuser.sh del vpn用户名'
}
add_user()
#新建vpn用户函数
{
if [ -f /usr/share/easy-rsa/2.0/keys/$vpn_user.crt ];then
   echo "新建vpn用户存在,请检查!"
   break
else
   cd /usr/share/easy-rsa/2.0/
   source ./vars
   ./vpn_expect.expect $vpn_user 
   cd /usr/share/easy-rsa/2.0/keys
   touch $vpn_user.ovpn
   echo "client" >>$vpn_user.ovpn
   echo "dev tun" >>$vpn_user.ovpn
   echo "proto tcp" >>$vpn_user.ovpn
   echo "remote 222.76.214.135 52114" >>$vpn_user.ovpn
   echo "resolv-retry infinite" >>$vpn_user.ovpn
   echo "nobind" >>$vpn_user.ovpn
   echo "persist-key" >>$vpn_user.ovpn
   echo "persist-tun" >>$vpn_user.ovpn
   echo "ca ca.crt" >>$vpn_user.ovpn
   echo "cert "$vpn_user.crt >>$vpn_user.ovpn
   echo "key "$vpn_user.key >>$vpn_user.ovpn
   echo "ns-cert-type server" >>$vpn_user.ovpn
   echo "comp-lzo" >>$vpn_user.ovpn
   echo "verb 3" >>$vpn_user.ovpn
   tar zcvf $vpn_user.tar.gz $vpn_user.* ca.crt
   echo "================================================<成功提示>================================================"
   echo "新建vpn用户:$vpn_user成功!" 
   echo "================================================<成功提示>================================================"
fi
}
del_user()
#删除vpn用户函数
{
   cd /usr/share/easy-rsa/2.0/
   source ./vars
   /usr/share/easy-rsa/2.0/revoke-full $vpn_user
   rm -rf /usr/share/easy-rsa/2.0/keys/$vpn_user.*
   echo "================================================<成功提示>================================================"
   echo "注销vpn用户:$vpn_user成功!" 
   echo "================================================<成功提示>================================================"
}
main()
#主函数
{
  if [ $canshu_num -ne 2 ];then
      echo "参数数量错误,请检查!"
      help
      break
  else
      if [ $xuan_zhe = "add" ];then
           add_user
      elif [ $xuan_zhe = "del" ];then
           del_user
      else
          echo '参数类型选择错误,类型只包含add|del'
          help
          break
      fi
  fi
}
main


# vi  vpn_expect.expect

#!/usr/bin/expect -f
if $argc<1 {
        puts stderr "Usage: $argv0 need argv.\n"
        exit 1
}
set vpnuser [lindex $argv 0]
set path /usr/share/easy-rsa/2.0
spawn $path/build-key $vpnuser
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "\r"
expect "*"
send "y\r"
expect "*"
send "y\r"
expect eof
exit


# 添加vpn帐号权限

sh /usr/share/easy-rsa/2.0/create_vpnuser.sh add prepare.wangdq


# Windown客户端安装及连接

把得到的私钥拷贝到openvpn客户端安装程序的config目录,默认C:\Program Files\OpenVPN\config,并解压,最后在桌面快捷方式找到图标并连接


# linux客户端安装及连接

yum install -y openvpn
cp prepare.wangdq.tar.gz /etc/openvpn/
tar xf /etc/openvpn/prepare.wangdq.tar.gz -C /etc/openvpn/
chkconfig openvpn on
service openvpn start
openvpn --config /etc/openvpn/prepare.wuqf.ovpn


注意config包含配置文件:   ca.crt    prepare.wangdq.crt  ....


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回