`

centos 搭建 openvpn server

阅读更多
centos 6.5 安装openvpn
内网IP:10.1××.×.×
外网IP:119.195.xxx.xxx
1、安装前准备
# 关闭selinux
setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config

# 安装openssl和lzo,lzo用于压缩通讯数据加快传输速度
yum -y install openssl openssl-devel
yum -y install lzo

# 安装epel源
rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i 's/^mirrorlist=https/mirrorlist=http/' /etc/yum.repos.d/epel.repo

2、安装及配置OpenVPN和easy-rsa
# 安装openvpn和easy-rsa
yum -y install openvpn easy-rsa

# 修改vars文件
cd /usr/share/easy-rsa/2.0/
vim vars
# 修改注册信息,比如公司地址、公司名称、部门名称等。××× 下面的随便填 ×××××
export KEY_COUNTRY="CN"
export KEY_PROVINCE="Shandong"
export KEY_CITY="Qingdao"
export KEY_ORG="MyOrganization"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"
# 初始化环境变量
source vars

# 清除keys目录下所有与证书相关的文件
# 下面步骤生成的证书和密钥都在/usr/share/easy-rsa/2.0/keys目录里
./clean-all

# 生成根证书ca.crt和根密钥ca.key(一路按回车即可)
./build-ca

# 为服务端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key-server server

# 每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接,下面建立2份
# 为客户端生成证书和密钥(一路按回车,直到提示需要输入y/n时,输入y再按回车,一共两次)
./build-key jack
./build-key client2

# 创建迪菲·赫尔曼密钥,会生成dh2048.pem文件(生成过程比较慢,在此期间不要去中断它)
./build-dh

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


3、创建服务器端配置文件
# 在openvpn的配置目录下新建一个keys目录
mkdir /etc/openvpn/keys

# 将需要用到的openvpn证书和密钥复制一份到刚创建好的keys目录中
cp /usr/share/easy-rsa/2.0/keys/{ca.crt,server.{crt,key},dh2048.pem,ta.key} /etc/openvpn/keys/

# 复制一份服务器端配置文件模板server.conf到/etc/openvpn/
cp /usr/share/doc/openvpn-2.3.8/sample/sample-config-files/server.conf /etc/openvpn/
################ 查看server.conf里的配置参数 grep '^[^#;]' /etc/openvpn/server.conf

# 编辑server.conf===========server.conf=============================
vim /etc/openvpn/server.conf
port 1194 # 默认端口,可以修改
# 改成tcp,默认使用udp,如果使用HTTP Proxy,必须使用tcp协议
proto tcp
dev tun
# 路径前面加keys,全路径为/etc/openvpn/keys/ca.crt
ca keys/ca.crt
cert keys/server.crt
key keys/server.key  # This file should be kept secret
dh keys/dh2048.pem
# 默认虚拟局域网网段,不要和本地、服务器上的的局域网冲突即可 #
server 10.9.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# ,读者应该根据自身实际情况进行修改
push "route 10.0.0.0 255.0.0.0"
# 可以让客户端之间相互访问直接通过openvpn程序转发,根据需要设置
client-to-client
# 如果客户端都使用相同的证书和密钥连接VPN,一定要打开这个选项,否则每个证书只允许一个人连接VPN
duplicate-cn
在使用OpenVPN时,有的时候需要使用VPN的DNS,有的时候却需要使用本地网络的DNS。OpenVPN可以在配置中支持DNS设置,如果是server来配置客户端DNS, 需要在配置文件中加入:
push “dhcp-option DNS 202.106.0.20″
push “dhcp-option DNS 8.8.8.8″
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
# OpenVPN的状态日志,默认为/etc/openvpn/openvpn-status.log
status openvpn-status.log
# OpenVPN的运行日志,默认为/etc/openvpn/openvpn.log
log-append openvpn.log
# 改成verb 5可以多查看一些调试信息
verb 5

4、配置内核和防火墙,启动服务
# 开启路由转发功能
sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf (其实是在/etc/sysctl.conf 里加一句:net.ipv4.ip_forward = 1)
sysctl -p

# 配置防火墙,别忘记保存
iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADE
/etc/init.d/iptables save
/etc/init.d/iptables restart
再用 iptables -L  看看

# 启动openvpn并设置为开机启动
service openvpn start
chkconfig openvpn on
    5、创建客户端配置文件( linux ) ================================================
# 复制一份client.conf模板命名为client.ovpn
cp /usr/share/doc/openvpn-2.3.8/sample/sample-config-files/client.conf client.ovpn
# 编辑client.ovpn
vim client.ovpn
client
dev tun
# 改为tcp
proto tcp
# OpenVPN服务器的外网IP和端口
remote vpn.domain.com 1194  #vpn服务器外网ip
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
# client1的证书
cert client1.crt
# client1的密钥
key client1.key

# 去掉前面的注释
tls-auth ta.key 1
comp-lzo
verb 3
up /etc/openvpn/update-resolv-conf   #下面这两句 可以 让 服务器推送的 DNS 地址到本地的/etc/resolv.conf ,当断开连接时,又会自动从 /etc/resolv.conf 清除
down /etc/openvpn/update-resolv-conf #
-------------------------------------------------------
库户端 需要复制 client1.crt , client1.key ,  ca.crt , client.conf (  client.ovpn for windows )
到 /etc/openvpn/ 目录下 ,然后执行:
$ sudo openvpn  --config client.conf  --script-security 2 #启动openvpn 客户端

u Apr 14 11:36:04 2016 ERROR: Linux route add command failed: external program exited with error status: 2
Thu Apr 14 11:36:04 2016 Initialization Sequence Completed
看到上面的就说明成功连接到openvpn 服务器了,就可以上谷歌了 ,,上面的ERROR 忽略就行。


===============下面是windows 客户端配置=======================
# 编辑client.ovpn
vim client.ovpn
client
dev tun
# 改为tcp
proto tcp
# OpenVPN服务器的外网IP和端口
remote vpn.domain.com 1194  #vpn服务器外网ip
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
# client1的证书
cert client1.crt
# client1的密钥
key client1.key

# 去掉前面的注释
tls-auth ta.key 1
comp-lzo
verb 3
dhcp-option DNS 202.106.0.20 # 这两个可以解析域名,浏览不了网页
dhcp-option SNS 8.8.8.8





--------------------------------------the following are question:solution --------------------------------------
问题:MULTI: bad source address from client [192.168.1.224], packet dropped
解决方法:
在openvpn servers 端 加入如下iptables 规则:
# iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADE
# /etc/init.d/iptables save # 保存 规则
# /etc/init.d/iptables restart 重启iptables

2.---------------Openvpn – MULTI: bad source address from client –
-----------------solution:(add the following two line into server.conf,and restart openvpn)
client-config-dir ccd
route 192.168.1.0 255.255.255.0
××××××××××××××××××××××××××××××××××××
-
分享到:
评论

相关推荐

    Centos搭建OpenACS服务器所需包:JDK+Jboss+Mysql+Openacs

    Centos搭建OpenACS服务器用到的包,包含jdk-8u311-linux-x64.rpm,mysql-connector-java-8.0.28.zip,jboss-4.2.2.GA.zip,openacs-bin-0.5.0.3.zip,是自己在搭建OpenACS服务器过程中真实用到的包,目前服务器已...

    Centos搭建KMS服务器.

    Centos搭建KMS服务器

    centos 7.9服务器 离线 搭建svn服务器

    centos 7.9服务器 离线 搭建svn服务器 ,该文章适用于 开发人员 实施人员 项目经理用于项目文档管理 代码管理,而不指定如何在centos7.9环境下离线搭建svn服务器,因为大多数的网站只是介绍yum install 的方式,但是...

    centos7安装+还原+卸载sqlserver.docx

    "CentOS 7 安装、还原和卸载 SQL Server 方法详解" 在本文中,我们将详细介绍如何在 CentOS 7 平台下安装、还原和卸载 SQL Server。 安装 SQL Server 在开始安装 SQL Server 之前,我们需要配置阿里云在线 yum 源...

    Centos搭建EasyDarwin流媒体服务器

    ### Centos搭建EasyDarwin流媒体服务器的知识点详解 #### 一、EasyDarwin简介与应用场景 EasyDarwin是一款开源的轻量级流媒体服务器,主要用于实时音视频传输,支持RTSP、RTMP、HLS等多种协议。它适用于监控、直播...

    CentOS 7 FTP-Server部署

    ### CentOS 7 FTP-Server部署知识点详解 #### 一、FTP服务器简介 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的协议。它主要用于在不同主机之间传输文件,支持客户端与服务器之间的文件上传和下载...

    centos7搭建mysql集群

    ### CentOS 7 搭建 MySQL 集群详解 #### 一、概述 随着业务规模的扩大,单一数据库服务器往往难以满足高并发、大数据量的需求。为了提高系统的可用性和性能,采用 MySQL 集群成为一种常见的解决方案。本文将详细...

    CentOS搭建PHP服务器

    二、CentOS 7 搭建 FTP 服务器 在CentOS 7中,需要安装vsftpd以搭建FTP服务器。使用命令`yum install vsftpd.x86_64`安装vsftpd。然后,使用命令`rpm -ql vsftpd`查看vsFtpd安装情况。接着,使用命令`yum install ...

    Centos6搭建socket5教程

    centos6下搭建socket5的教程非常全面,拥有这个教程可以让你快速搭建,省去很多碰壁的麻烦

    CentOS系统安装SQLServer教程

    ### CentOS系统安装SQL Server 教程详解 #### 一、前言 随着数据库技术的不断发展,SQL Server 作为一款功能强大的关系型数据库管理系统,在企业级应用中占据着重要的地位。对于运行在Linux环境下的应用程序来说,...

    jumperServer_v0.5.0+Centos7.4 搭建

    文中附上下载地址,官方文档操作地址,以及本人亲自实操的过程!

    centos搭建安卓模拟器实现自动化抓包分析

    本文将详细介绍如何在CentOS操作系统上搭建安卓模拟器,实现自动化抓包分析,这对于安卓开发人员和APP接入服务分析至关重要。 首先,我们需要了解`AVD (Android Virtual Device)`。AVD是Android SDK的一部分,它...

    centos7 安装svn server

    在 CentOS 7 环境下搭建 SVN 服务器可以为开发团队提供一个稳定、安全的版本控制平台。本文将详细介绍如何在 CentOS 7 上安装并配置 SVN 服务器。 #### 二、服务器环境准备 在开始安装 SVN 服务器之前,需要确保...

    CentOS7 挂载Windows Server2008 R2共享目录实例

    ### CentOS7 挂载 Windows Server 2008 R2 共享目录实例 #### 知识点一:CentOS7与Windows Server 2008 R2 的配置及挂载过程 **1.1 Windows Server 2008 R2 配置** - **先决条件** - **开启“Microsoft网络文件...

    centos8 Open倒^PN搭建.zip

    本人写的《从0自学linux运维》系列之搭建篇 ,密码hualinux hualinux2.13 环境搭建: centos8 Open倒^PN搭建.pdf

    Centos8 搭建DNS服务器

    Centos8 搭建DNS服务器 一、 DNS概述 DNS(Domain Name System)是域名管理系统,负责将人类易于记忆的域名转换为机器易于识别的IP地址。域名由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,...

    centos7环境下搭建nas服务并完成数据迁移

    ### CentOS 7 环境下 NAS 服务搭建与数据迁移详细步骤 #### 一、NAS 服务端配置 在 CentOS 7 系统中搭建 NAS (Network Attached Storage) 服务,可以方便地实现局域网内的数据共享及管理。本部分将详细介绍如何在 ...

    CentOS搭建FTP服务器

    CentOS搭建FTP服务器 本文详细描述了如何在CentOS操作系统上安装部署FTP服务器。

Global site tag (gtag.js) - Google Analytics