CentOS 7在5分钟内设置OpenVPN服务器
如何在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。