Debian 10在5分钟内设置OpenVPN服务器
如何在Debian Linux版本10服务器上设置OpenVPN服务器,以保护我的浏览活动不受公共Wi-Fi等恶意软件的侵害?
说明OpenVPN是功能齐全的SSL VPN(虚拟专用网络)。
它使用SSL/TLS协议实现OSI第2层或第3层安全网络扩展。
它是一个开源软件,在GNU GPL下分发。
VPN使您可以安全地连接到不安全的公共网络,例如机场或酒店的wifi网络。
还需要VPN来访问您的公司或企业或家庭服务器资源。
您可以绕开该地理位置受阻的网站,并在线提高您的隐私或安全性。
本教程提供了在Debian Linux 10服务器上配置OpenVPN服务器的分步说明。
过程:Debian 10在5分钟内设置OpenVPN服务器
步骤如下:
步骤1更新系统
运行apt命令:
{Hyman@deb10:~ }$ sudo apt update {Hyman@deb10:~ }$ sudo apt upgrade
步骤2查找并记下您的IP地址
使用ip命令,如下所示:
{Hyman@deb10:~ }$ ip a {Hyman@deb10:~ }$ ip a show eth0
另一个选择是运行以下dig命令/主机命令以从Linux命令行中找到您的公共IP地址:
{Hyman@deb10:~ }$ dig +short myip.opendns.com @resolver1.opendns.com
或者
{Hyman@deb10:~ }$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | awk -F'"' '{ print }'
有关IP地址的注释
大多数云服务器具有两种类型的IP地址:
- "公共静态IP地址直接"分配给您的设备并从Internet路由。例如,Linode,Digital Ocean等可以为您提供直接的公共IP地址。
- 直接连接到服务器的静态静态IP地址,而您的服务器位于具有公共IP地址的NAT后面。例如,AWS EC2/Lightsail为您提供了这种NAT公用IP地址。
该脚本将自动检测您的网络设置。
您所要做的就是在要求时提供正确的IP地址。
步骤3下载并运行debian10-vpn.sh脚本
我将使用wget命令:
{Hyman@deb10:~ }$ wget https://raw.githubusercontent.com/Angristan/openvpn-install/master/openvpn-install.sh -O debian10-vpn.sh
使用chmod命令设置权限
{Hyman@deb10:~ }$ chmod +x debian10-vpn.sh
可以使用诸如vim/vi之类的文本编辑器查看脚本:
{Hyman@deb10:~ }$ vi debian10-vpn.sh
运行debian10-vpn.sh安装OpenVPN服务器
现在您要做的就是:
{Hyman@deb10:~ }$ sudo ./debian10-vpn.sh
来自我的云服务器位于NAT之后的AWS EC2/Lightsail的示例会话:来自具有云服务器直接公共IPv4地址的Linode/DO服务器的示例会话:为避免出现问题,请始终选择DNS作为1.1.1.1或Google DNS。
这些是快速的DNS服务器,可以从Internet上的任何地方访问。
好的,这就是所有需要的脚本。
我们现在准备设置您的OpenVPN服务器。
您将能够在安装结束时生成客户端,如下所示:
如何在Debian 10上启动/停止/重启OpenVPN服务器?
{Hyman@deb10:~ }$ sudo systemctl stop openvpn@server # <--- stop server {Hyman@deb10:~ }$ sudo systemctl start openvpn@server # <--- start server {Hyman@deb10:~ }$ sudo systemctl restart openvpn@server # <--- restart server {Hyman@deb10:~ }$ sudo systemctl status openvpn@server # <--- get server status
步骤4使用IOS/Android/Linux/Windows客户端连接OpenVPN服务器
在服务器上,您将找到一个名为~/linuxDesktop.ovpn的客户端配置文件。
您所要做的就是使用scp命令将此文件复制到本地桌面:
{Hyman@deb10:~ }$ scp Hyman@:~/linuxDesktop.ovpn .
或者
{Hyman@deb10:~ }$ scp root@:~/linuxDesktop.ovpn .
接下来,将此文件提供给您的OpenVPN客户端以进行连接:
- 下载Apple iOS客户端
- 抢安卓客户端
- 访问Apple MacOS(OS X)客户端
- Microsoft用户下载:Windows 8/10客户端
Linux桌面:OpenVPN客户端配置
首先,为您的桌面安装openvpn客户端,输入:
{Hyman@deb10:~ }$ sudo yum install openvpn
或者
{Hyman@deb10:~ }$ sudo apt install openvpn
接下来,如下复制linuxDesktop.ovpn:
{Hyman@deb10:~ }$ sudo cp linuxDesktop.ovpn /etc/openvpn/client/
'linuxDesktop.ovpn' -> '/etc/openvpn/client/linuxDesktop.ovpn'
从CLI测试连接性:
{Hyman@deb10:~ }$ sudo openvpn --client --config /etc/openvpn/client/linuxDesktop.ovpn
输出示例:
Sat Jul 13 21:56:07 2019 Unrecognized option or missing or extra parameter(s) in /etc/openvpn/client/linuxDesktop.ovpn:17: block-outside-dns (2.4.7) Sat Jul 13 21:56:07 2019 OpenVPN 2.4.7 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Feb 20 2019 Sat Jul 13 21:56:07 2019 library versions: OpenSSL 1.1.1c FIPS 28 May 2019, LZO 2.08 Sat Jul 13 21:56:07 2019 Outgoing Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key Sat Jul 13 21:56:07 2019 Outgoing Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication Sat Jul 13 21:56:07 2019 Incoming Control Channel Encryption: Cipher 'AES-256-CTR' initialized with 256 bit key Sat Jul 13 21:56:07 2019 Incoming Control Channel Encryption: Using 256 bit message hash 'SHA256' for HMAC authentication Sat Jul 13 21:56:07 2019 TCP/UDP: Preserving recently used remote address: [AF_INET]172.105.51.63:1194 Sat Jul 13 21:56:07 2019 Socket Buffers: R=[212992->212992] S=[212992->212992] Sat Jul 13 21:56:07 2019 UDP link local: (not bound) Sat Jul 13 21:56:07 2019 UDP link remote: [AF_INET]172.105.51.63:1194 Sat Jul 13 21:56:07 2019 TLS: Initial packet from [AF_INET]172.105.51.63:1194, sid=0efbc848 675b12c1 Sat Jul 13 21:56:07 2019 VERIFY OK: depth=1, CN=cn_46pSC1RkaXtUzj8E Sat Jul 13 21:56:07 2019 VERIFY KU OK Sat Jul 13 21:56:07 2019 Validating certificate extended key usage Sat Jul 13 21:56:07 2019 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication Sat Jul 13 21:56:07 2019 VERIFY EKU OK Sat Jul 13 21:56:07 2019 VERIFY X509NAME OK: CN=server_CfvC2CLjZBl46fYN Sat Jul 13 21:56:07 2019 VERIFY OK: depth=0, CN=server_CfvC2CLjZBl46fYN Sat Jul 13 21:56:07 2019 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 256 bit EC, curve: prime256v1 Sat Jul 13 21:56:07 2019 [server_CfvC2CLjZBl46fYN] Peer Connection Initiated with [AF_INET]172.105.51.63:1194 Sat Jul 13 21:56:08 2019 SENT CONTROL [server_CfvC2CLjZBl46fYN]: 'PUSH_REQUEST' (status=1) Sat Jul 13 21:56:08 2019 PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS 1.0.0.1,dhcp-option DNS 1.1.1.1,redirect-gateway def1 bypass-dhcp,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.8.0.2 255.255.255.0,peer-id 0,cipher AES-128-GCM' Sat Jul 13 21:56:08 2019 OPTIONS IMPORT: timers and/or timeouts modified Sat Jul 13 21:56:08 2019 OPTIONS IMPORT: --ifconfig/up options modified Sat Jul 13 21:56:08 2019 OPTIONS IMPORT: route options modified Sat Jul 13 21:56:08 2019 OPTIONS IMPORT: route-related options modified Sat Jul 13 21:56:08 2019 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified Sat Jul 13 21:56:08 2019 OPTIONS IMPORT: peer-id set Sat Jul 13 21:56:08 2019 OPTIONS IMPORT: adjusting link_mtu to 1624 Sat Jul 13 21:56:08 2019 OPTIONS IMPORT: data channel crypto options modified Sat Jul 13 21:56:08 2019 Outgoing Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key Sat Jul 13 21:56:08 2019 Incoming Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key Sat Jul 13 21:56:08 2019 ROUTE_GATEWAY 192.168.1.1/255.255.255.0 IFACE=wlp1s0 HWADDR=b4:6b:fc:32:7a:12 Sat Jul 13 21:56:08 2019 TUN/TAP device tun0 opened Sat Jul 13 21:56:08 2019 TUN/TAP TX queue length set to 100 Sat Jul 13 21:56:08 2019 /sbin/ip link set dev tun0 up mtu 1500 Sat Jul 13 21:56:08 2019 /sbin/ip addr add dev tun0 10.8.0.2/24 broadcast 10.8.0.255 Sat Jul 13 21:56:08 2019 /sbin/ip route add 172.105.51.63/32 via 192.168.1.1 Sat Jul 13 21:56:08 2019 /sbin/ip route add 0.0.0.0/1 via 10.8.0.1 Sat Jul 13 21:56:08 2019 /sbin/ip route add 128.0.0.0/1 via 10.8.0.1 Sat Jul 13 21:56:08 2019 Initialization Sequence Completed
使用openvpn脚本/服务重新启动计算机时,您的Linux系统将自动连接:
{Hyman@deb10:~ }$ sudo systemctl start openvpn@client #
步骤5-验证/测试连接
从Linux桌面连接到OpenVPN服务器后,执行以下命令:
{Hyman@deb10:~ }$ ping 10.8.0.1 #Ping to the OpenVPN server gateway {Hyman@deb10:~ }$ ip route #Make sure routing setup working {Hyman@deb10:~ }$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com #Must return public IP address of OpenVPN server
172.105.51.63
第6步-添加/删除/撤消VPN用户
现在已经安装并正在运行OpenVPN,是时候添加新用户或删除现有VPN用户了。
通过再次运行debian10-vpn.sh脚本,我们可以顺利完成此操作。
在您的OpenVPN Debian Linux v10服务器上执行以下命令:
ssh Hyman@my-debian-10-server sudo ./debian10-vpn.sh
Gif.01:添加或删除OpenVPN用户/客户端
有关解决OpenVPN服务器和客户端问题的说明
检查OpenVPN服务器是否存在错误:
{Hyman@deb10:~ }$ journalctl --identifier ovpn-server
服务器上的防火墙规则设置正确吗?
使用iptables命令和sysctl命令命令来验证服务器上的NAT规则设置:
{Hyman@deb10:~ }$ sudo iptables -t nat -L -n -v {Hyman@deb10:~ }$ sysctl net.ipv4.ip_forward
如果未从/etc/rc.local插入规则,则将其插入
{Hyman@deb10:~ }$ sudo sh /etc/rc.local {Hyman@deb10:~ }$ sudo sysctl -w net.ipv4.ip_forward=1
OpenVPN服务器是否正在运行并且端口是否打开?
使用ss命令或netstat命令以及pidof命令/ps命令:
{Hyman@deb10:~ }$ netstat -tulpn | grep :1194 ## 1194 is the openvpn server port ## {Hyman@deb10:~ }$ ss -tulpn | grep :1194 ## 1194 is the openvpn server port ## {Hyman@deb10:~ }$ ps aux | grep openvpn ## is the openvpn server running? ## {Hyman@deb10:~ }$ ps -C openvpn ## is the openvpn server running? ## {Hyman@deb10:~ }$ pidof openvpn ## find the openvpn server PID ##
如果未运行,请重新启动OpenVPN服务器:
{Hyman@deb10:~ }$ sudo systemctl restart openvpn@server
注意错误:
{Hyman@deb10:~ }$ sudo systemctl status openvpn@server
Linux桌面客户端可以连接到OpenVPN服务器计算机吗?
首先,您需要运行一个简单的测试,以查看OpenVPN服务器端口(UDP 1194)是否接受连接:
{Hyman@deb10:~ }$ nc -vu 1194 `Connection to 1194 port [udp/openvpn] succeeded!`
如果未连接,则意味着Linux桌面防火墙或您的路由器正在阻止对服务器的访问。
确保客户端和服务器使用相同的协议和端口,例如UDP端口1194。