Centos7中openvpn搭建

来源:互联网 发布:淘宝网儿童冬季服装 编辑:程序博客网 时间:2024/06/06 11:39

一、环境及目标

        目标:实现外网到公司内网之间的通信

        环境:内网--192.168.206.0/24

                    openvpn server:192.168.206.76

                    可映射的外网ip一个   (如果没有的话就算了吧)


二、步骤

A:更新yum源并安装

#yum upgrade  #更新源
#yum install epel-release -y   #安装epel库
#yum install easy-rsa openssh-server lzo openssl openssl-devel openvpn NetworkManager-openvpn openvpn-auth-ldap -y    #安装一系列相关软件


B:配置openvpn配置文件

1、cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn    #拷贝server.conf到/etc/openvpn目录下

2、主配置如下:

[root@hserver1 ~]# cat  /etc/openvpn/server.conf    | egrep  -v "^$|^;" 
local 192.168.206.76                                                             #配置为server端内网ip
port 8888                                                                                  #openvpn的监听端口
proto tcp                                                                                    #协议选tcp,选udp过不去,原因未知
dev tun                                                                                           
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh2048.pem
topology subnet
server 10.8.0.0 255.255.255.0                                               #vpn分配给客户端的网段,只要不是内网的网段,其他任意网段都可以 
ifconfig-pool-persist ipp.txt

push  "route 192.168.206.0 255.255.255.0"                        #告诉客户端你的内网网段路由,如果有多个网段,多加几个push route条目

#push "redirect-gateway def1 bypass-dhcp"                       #设置客户端默认流量走vpn,不要加,加了上外网会额外消耗vpn所在网段的带宽
push "dhcp-option DNS 114.114.114.114"                           #告诉客户端自己的dns是什么
client-to-client                                                                            #允许客户端之间通信
duplicate-cn                                                                               #允许一个公钥多次认证,不信任使用人的话,关掉,信任的话开着
keepalive 10 120 
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
max-clients 100
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log                                                          #这些日志默认的路径都是openvpn的安装路径,也就是/etc/openvpn
verb 5                                                                                            #日志级别5师debug,反正写的不多建议开高点


C、    制作证书

1、编辑vars(随便写写,反正我没见过这个写错了导致后边报错的):

mkdir -p  /etc/openvpn/easy-rsa/keys
cp  -a  /usr/share/easy-rsa/2.0/*  /etc/openvpn/easy-rsa/

[root@hserver1 ~]# cat /etc/openvpn/easy-rsa/vars | egrep   -v "^$|^#" 
export EASY_RSA="`pwd`"  
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="CN"                                    
export KEY_PROVINCE="ZJ"                                     
export KEY_CITY="HZ"
export KEY_ORG="xihu"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="trs"
export KEY_NAME="openvpn"
export KEY_CN="APEC"


2、生成证书

cp  /etc/openvpn/easy-rsa/openssl-1.0.0.cnf  /etc/openvpn/easy-rsa/openssl.cnf
cd /etc/openvpn/easy-rsa    
source ./vars                                                                                                                                 #让配置文件生效
./clean-all
./build-ca                                                                                                                                        #之前已配置好相关参数,故执行命令后,按回车键,一直到结束即可。

./build-key-server server                                                                                                             #创建通用名(common name)为"server"的证书

                                                                                                                                                         #制作时一路空格,输入一次密码和一次公司名,之后两个yes,即可完成

openvpn --genkey --secret keys/ta.key                                                                                    # 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击)

./build-dh                                                                                                                                        #创建秘钥文件,耗时2分钟左右(生成/etc/openvpn/easy-rsa/keys/dh2048.pem )

cd  /etc/openvpn/easy-rsa/keys
cp  dh2048.pem  ca.crt  server.crt  server.key  ta.key   /etc/openvpn                                  #讲生成的文件放到安装目录中
cd  /etc/openvpn/easy-rsa

./build-key client                                                                                                                            #创建一个通用名(common name)为 client的客户端证书

                                                                                                                                                         #制作时一路空格,输入一次密码和公司名字,要和执着server的时候保持一致,之后两                                                                                                                                                          # 个yes,如果server端没加duplicate-cn 则每个用户都要单独制作一个客户端证书,名                                                                                                                                                            # 字可以任意,不都叫client


D:设置路由转发及iptables规则

yum install -y iptables-services
systemctl enable iptables
systemctl stop firewalld   #关闭firewall防火墙,我的OS没有预装防火墙,因此这条命令不用输,
systemctl start iptables   #启动iptables
iptables  -F     #清空默认的iptables规则
iptables -t nat -A POSTROUTING -s 10.8.0.0/24  -j MASQUERADE     #设置iptables NAT转发规则
service iptables save   #保存防火墙规则
echo 1 > /proc/sys/net/ipv4/ip_forward     #临时开启路由转发
vi  /etc/sysctl.conf   #编辑配置文件,修改以下配置,设置永久路由转发
net.ipv4.ip_forward = 1


E、启动server

systemctl -f enable openvpn@server.service      #设置启动文件
systemctl start openvpn@server.service          #启动openvpn的命令


F:映射外网ip并开通端口

将 server映射一个外网ip并开通8888端口




原创粉丝点击