CentOS 7在5分钟内设置OpenVPN服务器

时间:2020-01-09 10:34:10  来源:igfitidea点击:

如何在CentOS 7 Linux服务器上设置OpenVPN服务器,以保护我的浏览活动免受公共Wi-Fi等恶意软件的侵害?
简介OpenVPN是功能齐全的SSL VPN(虚拟专用网络)。
它使用SSL/TLS协议实现OSI第2层或第3层安全网络扩展。
它是一个开源软件,在GNU GPL下分发。

VPN使您可以安全地连接到不安全的公共网络,例如机场或酒店的wifi网络。
还需要VPN来访问您的公司或企业或家庭服务器资源。
您可以绕开该地理位置受阻的网站,并在线提高您的隐私或安全性。
本教程提供了在CentOS Linux 7服务器上配置OpenVPN服务器的分步说明。

过程:CentOS 7在5分钟内设置OpenVPN服务器

步骤如下:

步骤1更新系统

运行yum命令:

{Hyman@centos7:~ }$  sudo yum update

步骤2查找并记下您的IP地址

使用ip命令,如下所示:

{Hyman@centos7:~ }$  ip a 
{Hyman@centos7:~ }$  ip a show eth0

另一个选择是运行以下dig命令/主机命令以从Linux命令行中找到您的公共IP地址:

{Hyman@centos7:~ }$ dig +short myip.opendns.com @resolver1.opendns.com

可以使用dig和awk命令获取IPv4地址:

{Hyman@centos7:~ }$ dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print }'

对于IPv6版本,请尝试:

{Hyman@centos7:~ }$ dig -6 TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print }'

从CLI查找AWS/EC2或Lighsail NAT IP地址

有关IP地址的注释

大多数云服务器具有两种类型的IP地址:

  • "公共静态IP地址直接"分配给您的设备并从Internet路由。例如,Linode,Digital Ocean等可以为您提供直接的公共IP地址。
  • 直接连接到服务器的静态静态IP地址,而您的服务器位于具有公共IP地址的NAT后面。例如,AWS EC2/Lightsail为您提供了这种NAT公用IP地址。

该脚本将自动检测您的网络设置。
您所要做的就是在要求时提供正确的IP地址。

步骤3下载并运行centos7-vpn.sh脚本

我将使用wget命令:

{Hyman@centos7:~ }$ wget https://raw.githubusercontent.com/Angristan/openvpn-install/master/openvpn-install.sh -O centos7-vpn.sh

使用chmod命令设置权限

{Hyman@centos7:~ }$  chmod +x centos7-vpn.sh

可以使用诸如vim/vi之类的文本编辑器查看脚本:

{Hyman@centos7:~ }$  vi centos7-vpn.sh

运行centos7-vpn.sh安装OpenVPN服务器

现在您要做的就是:

{Hyman@centos7:~ }$  sudo ./centos7-vpn.sh

来自我的云服务器位于NAT之后的AWS/Lightsail的示例会话:

来自"其中云服务器具有直接公共IPv4地址的Linode/DO服务器"中的会话示例:为避免问题,请始终选择DNS作为1.1.1.1或Google DNS。
这些是快速的DNS服务器,可以从Internet上的任何地方访问。

VPN客户端配置

在安装结束时,您需要提供一个客户端名称。
我们可以选择客户端名称,例如用于桌面VPN客户端的桌面或用于Apple iPhone的ios等。
我们还可以使用密码对私钥进行加密,以提高安全性。
因此,每次启动VPN会话时,出于增加安全性的原因,都需要提供密码:是否要使用密码保护配置文件?

如何在CentOS 7上启动/停止/重启OpenVPN服务器?

{Hyman@centos7:~ }$  sudo systemctl stop openvpn@server #<--- stop server
{Hyman@centos7:~ }$ sudo systemctl start openvpn@server #<--- start server
{Hyman@centos7:~ }$ sudo systemctl restart openvpn@server #<--- restart server
{Hyman@centos7:~ }$ sudo systemctl status openvpn@server #<--- get server status

步骤4使用IOS/Android/Linux/Windows客户端连接OpenVPN服务器

在服务器上,您将找到一个名为~/desktop.ovpn的客户端配置文件。
您所要做的就是使用scp命令将此文件复制到本地桌面:

{Hyman@centos7:~ }$ scp [email protected]:~/deskcop.ovpn .

或者

{Hyman@centos7:~ }$ scp [email protected]:~/deskcop.ovpn .

接下来,将此文件提供给您的OpenVPN客户端以进行连接:

  • 苹果应用商店:苹果iOS客户端
  • Google Play商店:Android客户端
  • Apple MacOS(OS X)客户端
  • Windows 8/10客户端

Linux桌面:OpenVPN客户端配置

首先,根据您的发行版为您的桌面安装openvpn客户端。

CentOS/RHEL/Oracle Linux桌面

执行yum命令:

{Hyman@centos7:~ }$ sudo yum install openvpn
Fedora Linux桌面

运行dnf命令:

{Hyman@centos7:~ }$ sudo dnf install openvpn
Debian/Ubuntu Linux destkop

我们需要使用apt命令/apt-get命令:

{Hyman@centos7:~ }$ sudo apt install openvpn

接下来,按如下所示复制desktop.ovpn:

{Hyman@centos7:~ }$ sudo cp desktop.ovpn /etc/openvpn/client.conf

从CLI测试连接性:

{Hyman@centos7:~ }$ sudo openvpn --client --config /etc/openvpn/desktop.conf

使用openvpn脚本/服务重新启动计算机时,您的Linux系统将自动连接:

{Hyman@centos7:~ }$ sudo systemctl enable openvpn@client
{Hyman@centos7:~ }$ sudo systemctl start openvpn@client

步骤5验证/测试连接

从Linux桌面连接到OpenVPN服务器后,执行以下命令:

{Hyman@centos7:~ }$ ping 10.8.0.1  #Ping to the OpenVPN server gateway
{Hyman@centos7:~ }$ ip route  #Make sure routing setup working
{Hyman@centos7:~ }$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com  #Must return public IP address of OpenVPN server

步骤6如何在CentOS 7上添加其他OpenVPN客户端

首先,使用ssh命令登录到基于openvpn的CentOS 7服务器:

ssh Hyman@your-centos7-server-ip

再次运行下载的centos7-vpn.sh脚本:

sudo ./centos7-vpn.sh

会话示例:

Welcome to OpenVPN-install!
The git repository is available at: https://github.com/angristan/openvpn-install
 
It looks like OpenVPN is already installed.
 
What do you want to do?
   1) Add a new user
   2) Revoke existing user
   3) Remove OpenVPN
   4) Exit
Select an option [1-4]:

现在,我们可以添加一个新的VPN用户或删除现有的VPN用户。

有关解决OpenVPN服务器和客户端问题的说明

检查OpenVPN服务器是否存在错误:

{Hyman@centos7:~ }$  journalctl --identifier openvpn

服务器上的防火墙规则设置正确吗?
使用cat命令查看规则:

{Hyman@centos7:~ }$ sudo cat /etc/iptables/add-openvpn-rules.sh
#!/bin/sh
iptables -t nat -I POSTROUTING 1 -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -I INPUT 1 -i tun0 -j ACCEPT
iptables -I FORWARD 1 -i eth0 -o tun0 -j ACCEPT
iptables -I FORWARD 1 -i tun0 -o eth0 -j ACCEPT
iptables -I INPUT 1 -i eth0 -p udp --dport 1194 -j ACCEPT

另一个选择是运行iptables命令和sysctl命令命令来验证服务器上的NAT规则设置:

{Hyman@centos7:~ }$  sudo iptables -t nat -L -n -v 
{Hyman@centos7:~ }$  sysctl net.ipv4.ip_forward

如果未从/etc/iptables/add-openvpn-rules.sh插入规则,则将其插入

{Hyman@centos7:~ }$  sudo sh /etc/iptables/add-openvpn-rules.sh
{Hyman@centos7:~ }$  sudo sysctl -w net.ipv4.ip_forward=1

OpenVPN服务器是否正在运行并且端口是否打开?
使用ss命令或netstat命令以及pidof命令/ps命令:

{Hyman@centos7:~ }$  netstat -tulpn | grep :1194  ## 1194 is the openvpn server port ##
{Hyman@centos7:~ }$  ss -tulpn | grep :1194  ## 1194 is the openvpn server port ##
{Hyman@centos7:~ }$  ps aux | grep openvpn  ## is the openvpn server running? ##
{Hyman@centos7:~ }$  ps -C openvpn  ## is the openvpn server running? ##
{Hyman@centos7:~ }$  pidof openvpn  ## find the openvpn server PID ##

如果未运行,请重新启动OpenVPN服务器:

{Hyman@centos7:~ }$ sudo systemctl restart openvpn@server

注意错误:

{Hyman@centos7:~ }$ sudo systemctl status openvpn@server

Linux桌面客户端可以连接到OpenVPN服务器计算机吗?
首先,您需要运行一个简单的测试,以查看OpenVPN服务器端口(UDP 1194)是否接受连接:

{Hyman@centos7:~ }$ nc -vu 139.162.60.234 1194 
`Connection to 139.162.60.234 1194 port [udp/openvpn] succeeded!`

如果未连接,则意味着Linux桌面防火墙或您的路由器正在阻止对服务器的访问。
确保客户端和服务器使用相同的协议和端口,例如UDP端口1194。