openvpn in centos7 实现(垃圾)

验证方式:预设私钥;第三方证书;U-P;

环境:CentOS Linux release 7.2.1511 (Core) 3.10.0-327.el7.x86_64

工作模式:

tap网桥“不需要路由”(复杂环境–建立以太网侨)和tun路由(简单环境–建立ip隧道)两种模式

安装阶段

wget http://dl.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
rpm -Uvh epel-release-7-0.2.noarch.rpm

yum install openssl-devel openvpn

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn

vim /etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
user nobody
group nobody

2 使用easy-rsa生成证书及密钥

完成了对于配置文件的修改之后,我们接下来生成keys和certificates.
由于OpenVPN-2.3.2中没有了示例的easy-rsa相关文件,我们首先需要安装它:

yum install easy-rsa

将相关文件复制到OpenVPN的配置目录:
cp -R /usr/share/easy-rsa/ /etc/openvpn

现在有关的文件都在 /etc/openvpn/easy-rsa/2.0/ 这个目录中。
2.1 调整easy-rsa密钥生成配置

首先需要修改的是vars文件
vim /etc/openvpn/easy-rsa/2.0/vars

将以下这些值修改成你自己的值:
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SH"
export KEY_CITY="SHANGHAI"
export KEY_ORG="LATIAO"
export KEY_EMAIL="LATIAO@QQ.COM"
export KEY_CN=droplet.example.com
export KEY_NAME=server
export KEY_OU=server

另外这中间还有KEY_SIZE,可以自己修改,不过需要与之后的配置文件对应,默认为1024
export KEY_SIZE=1024

修改完成之后,执行 source ./vars, 清空目录并生成 Certificate Authority(CA):
cd /etc/openvpn/easy-rsa/2.0
source ./vars

2.2 生成密钥
2.2.1 生成CA, 服务器证书及密钥
在/etc/openvpn/easy-rsa/2.0目录中执行:

./clean-all
./build-ca

执行完成之后在/etc/openvpn/easy-rsa/2.0/keys目录中产生了CA,接下来为服务器生成密钥:
./build-key-server server

有了服务器密钥,再生成Diffie Hellman key exchange文件,这里生成的长度由之前的KEY_SIZE决定:
./build-dh

执行完成会产生dh1024.pem (如果你的KEY_SIZE = 2048,这里产生的文件是dh2048.pem)

将四个所需文件复制到OpenVPN配置目录中去:
cd /etc/openvpn/easy-rsa/2.0/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn

2.2.2 生成客户端证书和密钥
在/etc/openvpn/easy-rsa/2.0/目录中执行:

./build-key client

会在目录中产生客户端所需的证书和密钥
3 配置路由并启动OpenVPN Server
3.1 防火墙配置

在CentOS 7中,iptables防火墙已经被firewalld所取代,需要使用如下方法:

首先启动firewalld

systemctl status firewalld.service

查看有哪些服务已经在列表中允许通过:

# firewall-cmd --list-services
dhcpv6-client http https ssh

可以看到已经有了dhcpv6-client, http, https, ssh四项,接下来添加openvpn:

# firewall-cmd --add-service openvpn
success
# firewall-cmd --permanent --add-service openvpn
success

检查一下:

# firewall-cmd --list-services
dhcpv6-client http https openvpn ssh

最后添加masquerade:

# firewall-cmd --add-masquerade
success
# firewall-cmd --permanent --add-masquerade
success

以下命令用于确认masquerade是否添加成功:

# firewall-cmd --query-masquerade
yes

3.2 允许IP转发

在sysctl中开启IP转发

vim /etc/sysctl.conf

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

3.3 启动OpenVPN服务

启动OpenVPN服务器并添加自动启动项:至此服务端搭建完成。

sysctl -p
systemctl start openvpn@server
systemctl enable openvpn@server

4 客户端配置文件

取回之前生成的位于/etc/openvpn/easy-rsa/2.0/keys中的三个文件:

ca.crt
client.crt
client.key

在你的客户端创建一个文件client.ovpn, 将这三个文件与其放在同一目录中,编辑client.ovpn内容如下:

client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca ca.crt
cert client.crt
key client.key

将其中的xxx.xxx.xxx.xxx替换为你的服务器地址,如果端口、证书、密钥不同的话修改相应的项即可

4.1 Android
直接使用OpenVPN官方的OpenVPN Connect即可,选择import导入配置文件。

4.2 Mac OS X
使用第三方的Tunnelblick连接,注意根据你的操作系统版本选择合适的版本。

声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/490.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/12/3作者: 辣条①号

目标:网络规划设计师、系统工程师、ceph存储工程师、云计算工程师。 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录