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

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

如何在CentOS 8 Linux服务器上设置OpenVPN服务器,以保护我的浏览活动免受公共Wi-Fi等恶意软件的侵害?

OpenVPN是一种开源和免费的虚拟专用网(VPN)软件。
它运行在Linux和类似Unix的操作系统上,并在GNU GPL许可下发布。

VPN使我们能够安全地连接到不安全的公共网络,例如机场或酒店的wifi网络。
通常,企业和企业用户需要某种VPN才能访问办公室托管的服务。
本教程提供了在CentOS 8 Linux服务器上配置OpenVPN服务器的分步说明。

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

步骤如下:

请注意,{Hyman @ centos8:~} $是我的shell提示符,不是实际命令的一部分。
换句话说,您需要在shell提示后复制并粘贴命令。

步骤1更新系统

运行dnf命令或yum命令来安装CentOS 8安全更新:

{Hyman@centos8:~ }$ sudo dnf update

或者

{Hyman@centos8:~ }$ sudo yum update

接下来,在CentOS上安装tar并在CentOS 8上也安装wget

{Hyman@centos8:~ }$ sudo yum install tar wget

步骤2查找并记下服务器的IPv4或IPv6地址

使用ip命令,如下所示:

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

我们可以尝试以下dig命令/主机命令从Linux命令行中找到您的公共IP地址:

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

或者

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

输出示例:

172.105.120.136

请记下172.105.120.136 IP地址。
您需要用实际的IPv4替换它。

有关您的IPv4和IPv6地址的注释

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

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

该脚本将自动检测您的网络设置。
您所要做的就是在要求时提供正确的IPv4或IPv6地址。
因此,我们使用上述命令预先确定了我们的IP地址。

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

我将使用wget命令:

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

确保使用chmod命令设置权限:

{Hyman@centos8:~ }$  chmod +x centos-8-vpn.sh

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

{Hyman@centos8:~ }$  vim centos-8-vpn.sh

使用centos-8-vpn.sh在CentOS 8 Linux上安装OpenVPN服务器

现在您要做的就是在Linux上运行shell脚本:

{Hyman@centos8:~ }$  sudo ./centos-8-vpn.sh

来自具有直接公共IPv4地址的Linode云服务器的示例会话:来自我的云服务器位于NAT之后的AWS/Lightsail的示例会话:

桌面或移动客户端配置

VPN服务器配置完成后,我们可以创建桌面/移动客户端VPN配置文件。
系统将提示您:是否要使用密码保护VPN配置文件?

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

#--- Stop the server ---#
{Hyman@centos8:~ }$ sudo systemctl stop [email protected]
#--- Start the server ---#
{Hyman@centos8:~ }$ sudo systemctl start [email protected]
#--- Restart the server ---#
{Hyman@centos8:~ }$ sudo systemctl restart [email protected]
#--- Get the server status ---#
{Hyman@centos8:~ }$ sudo systemctl status [email protected]

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

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

{Hyman@centos8:~ }$  scp [email protected]:~/DesktopVPNClient.ovpn .

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

  • 从Apple App Store下载Apple iOS客户端
  • 从Google Play商店获取Android客户端
  • Apple MacOS(OS X)客户端
  • Microsoft Windows 8/10客户端

OpenVPN Linux桌面客户端配置

首先,为您的桌面安装openvpn客户端,输入:

{Hyman@centos8:~ }$  sudo yum install openvpn

对于Debian/Ubuntu Linux,请尝试apt命令/apt-get命令:

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

接下来,如下复制DesktopVPNClient.ovpn:

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

从CLI测试连接性:

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

当使用openvpn脚本/服务重启计算机时,我们的Linux桌面系统将自动连接:

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

步骤5验证/测试连接

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

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

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

使用journalctl命令检查OpenVPN服务器是否存在错误

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

点击放大

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

{Hyman@centos8:~ }$ 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
exit 0

这是一个示例iptables脚本,用于删除OpenVPN规则:

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

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

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

如果未从/etc/rc.local插入规则,则将其插入

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

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

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

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

{Hyman@centos8:~ }$ sudo systemctl restart [email protected]

注意错误:

{Hyman@centos8:~ }$ sudo systemctl status [email protected]

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

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

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