使用 OpenVPN 设置 Linux VPN 服务器和客户端

举报
Tiamo_T 发表于 2022/08/10 09:12:39 2022/08/10
【摘要】 VPN 代表虚拟专用网络。

VPN 代表虚拟专用网络。

虚拟专用网络使计算机能够将数据从一个专用网络发送和接收到另一个通过公共网络(Internet)连接的专用网络。

这对于那些在公司内网之外,并且喜欢安全地连接到办公网络以访问内部服务器的人来说是有帮助的。当您将多个分支机构连接在一起时,VPN 也很有帮助。

即使您没有将多个分支机构连接在一起,您仍然可以使用 VPN 设置让您的员工从他们的笔记本电脑远程连接到数据中心并访问系统。

有时公司会购买专线组成WAN(广域网),并与分支机构进行通信。专线虽然安全可靠,但价格昂贵。

VPN 通过通过公共网络提供点对点虚拟连接来填补这一空白。VPN 可以扩展以轻松容纳不同地理位置的更多用户。

VPN的类型

概括地说,以下是两种类型的 VPN:

  • 远程访问
  • 站点到站点

远程访问是通过 VPN 将个人计算机连接到网络。“站点到站点”通过 VPN 将两个网络连接在一起。


什么是 OpenVPN

来自 OpenVPN 人:

OpenVPN 是 James Yonan 的开源 VPN 守护程序。OpenVPN 是一个强大且高度灵活的 VPN 守护程序。OpenVPN 支持 SSL/TLS 安全性、以太网桥接、通过代理或 NAT 的 TCP 或 UDP 隧道传输、对动态 IP 地址和 DHCP 的支持、对成百上千用户的可扩展性以及对大多数主要操作系统平台的可移植性。

本教程解释了为远程访问设置和配置 OpenVPN 服务器和客户端的过程。

一、配置OpenVPN——服务器端

1. 安装 OpenVPN

在服务器和客户端机器上安装 openvpn 包。

$ sudo apt-get install openvpn

使用您正在使用的发行版的相应包管理器。如果您使用的是 yum,请执行以下操作

$ yum install openvpn

2.创建目录并设置Env变量

在/etc/openvpn中创建一个目录并将easy-rsa内容复制到其中。这样做是为了确保在升级包时对脚本所做的更改不会丢失。将所有者更改为当前用户,以便当前用户具有创建文件的权限。

$ sudo mkdir /etc/openvpn/easy-rsa 

$ sudo cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa 

$ sudo chown -R $USER /etc/ openvpn/easy-rsa/

接下来,编辑/etc/openvpn/easy-rsa/vars以适应您的环境。

export KEY_COUNTRY="IN" 
export KEY_PROVINCE="TN" 
export KEY_CITY="CHN" 
export KEY_ORG="tgs" 
export KEY_EMAIL="admin@hgst.com.cn"

3. 创建 CA – 证书颁发机构(根证书)

构建 openvpn 服务器的下一步是建立一个公钥基础设施,以便服务器和客户端可以相互验证。

$ cd /etc/openvpn/easy-rsa/

$ source vars

$ ./clean-all

$ ln -s openssl-1.0.0.cnf openssl.cnf

$ ./build-ca

Generating a 1024 bit RSA private key
........++++++
......++++++
unable to write 'random state'
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [IN]:
State or Province Name (full name) [TN]:
Locality Name (eg, city) [CHN]:
Organization Name (eg, company) [tgs]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:
Name [changeme]:lakshmanan
Email Address [mail@host.domain]:admin@hgst.com.cn

./build-ca完成后,您将在/etc/openvpn/easy-rsa/keys/中看到一个名为“ ca.key ”和“ ca.crt ”的文件

请记住,“. key ”文件必须保密。

4. 为服务器创建证书

下一步是为我们的 Openvpn 服务器创建一个证书。

$ /etc/openvpn/easy-rsa/build-key-server vpnserver
...
...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

请注意,vpnserver 是服务器的 HOSTNAME。该命令将接受用户的输入,类似于前一个命令。此命令将为服务器创建证书和密钥文件。

5. 为客户创建证书

VPN 客户端还需要证书来与服务器进行身份验证。如果要配置多个客户端,则需要为每个客户端分别创建证书。

$ ./build-key vpnclient1
...
...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

vpnclient1 是客户端的主机名。此命令将为客户端创建证书和密钥文件。

6. 创建 Diffie Hellman 参数

$ ./build-dh

成功完成上述所有步骤后,您将在/etc/openvpn/easy-rsa/keys中拥有许多密钥和证书文件。

7. 将证书复制到相应位置

我们已经创建了根证书、服务器证书和客户端证书。我们需要将它们复制到适当的位置。

$ cd /etc/openvpn/easy-rsa/keys/ 

$ sudo cp ca.crt vpnserver.crt vpnserver.key dh1024.pem /etc/openvpn/ 

$ scp ca.crt vpnclient1.key vpnclient1.crt root@vpnclient1:/etc /openvpn

现在我们已将客户端证书和密钥复制到客户端计算机。在复制密钥文件时,请记住使用 scp 之类的安全介质。

8. 配置服务器

OpenVPN 提供了一个默认的 server.conf。您可以根据需要对其进行修改。

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ 

$ sudo gzip -d /etc/openvpn/server.conf.gz

编辑“ /etc/openvpn/server.conf ”。

ca ca.crt
cert vpnserver.crt
key vpnserver.key
dh dh1024.pem

现在启动 OpenVPN 服务器:

$ sudo /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)... 
 * Autostarting VPN 'server'

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255

默认情况下,openVPN 会在 syslog 文件中记录错误。

二、配置 OpenVPN – 客户端

9. 设置客户端配置文件

现在我们将配置 openVPN 作为客户端工作。记住我们已经在客户端安装了openvpn包,我们在/etc/openvpn/中有“ca.crt”、“vpnclient1.key”、vpnclient1.crt”

将示例 client.conf 复制到/etc/openvpn

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

编辑/etc/openvpn/client.conf

...
# Specify that this is openvpn client
client

remote vpnserver 1194

ca ca.crt

cert vpnclient1.crt

key vpnclient1.key

现在在客户端启动 OpenVPN

$ /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)... 
 * Autostarting VPN 'client'

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255

10. 测试 VPN 设置

从客户端机器 ping vpnserver 以查看 VPN 是否正常工作。

$ ping 10.8.0.1

PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=2.14 ms

如果您能够 ping 通,那么您已经进行了正确的设置。

请记住以下几点:

  1. 确保客户端和服务器使用相同的协议和端口号。
  2. 客户端和服务器必须对一些参数使用相同的配置,如密钥大小、压缩等……
  3. 如果出现任何问题,请在配置中增加日志详细程度并检查 syslog 文件以进行故障排除。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。