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端口
- Centos7中openvpn搭建
- centos7搭建openvpn服务器
- CentOS7搭建OpenVPN服务器
- CentOS7使用桥接模式搭建openvpn的问题汇总
- 在阿里云centos7上搭建openvpn(未成功)
- openvpn 搭建
- 搭建openvpn
- 搭建OpenVPN
- Centos7中安装openvpn并配置pam_mysql登录验证
- centos7安装配置openvpn
- centos7 安装openvpn客户端
- Centos7安装OpenVPN
- openvpn +radiusplugin centos7.2
- CENTOS7安装配置openVPN
- CentOS7中搭建SVN服务器
- DO上CentOS7配置OpenVPN
- OpenVPN 服务器搭建详解
- openvpn搭建完全指南
- c++ 类静态变量 类常变量Mark
- linux mysql 报错ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
- Android NDK 第一行代码
- SpringMVC是单例的,高并发情况下,如何保证性能的?
- 我的博客
- Centos7中openvpn搭建
- this*到底在哪里定义
- 安装SQL Server 2017卡死,一直卡在一个界面很久不动的解决方案
- Android自定义ViewGroup实现水平排列样式(1)
- Redis 数据类型及应用场景
- 如何让自己的程序在开机时自动启动
- 测试用的博客
- java opencv 调用摄像头实现拍照及本地保存 支持上传FTP 路径配置
- 17个新手常见Python运行时错误