• 免费公共DNS服务器IP地址大全

    国内常用公共DNS 114 DNS: (114.114.114.114;114.114.115.115) 114DNS安全版 (114.114.114.119;114.114.115.119) 114DNS家庭版 (114.114.114.110;114.114.115.110) 阿里 AliDNS: (223.5.5.5; 223.6.6.6) 百度 BaiduDNS(新增ipv6地址 new): (180.76.76.76;ipv6地址:2400:da00::6666) DNSPod DNS+(腾讯公共DNS,推荐前两个)(119.29.29.29;119.28.28.28;182.254.118.118;182.254.116.116) CNNIC SDNS(1.2.4.8;210.2.4.8) oneDNS 更新(目前官方DNS:117.50.11.11;117.50.22.22)(之前官方的还可使用:112.124.47.27;114.215.126.16) DNS 派 电信/移动/铁通 (101.226.4.6;218.30.118.6) DNS 派 联通 (123.125.81.6;140.207.198.6) DNS ONE 北方推荐:(123.207.137.88 南方推荐:115.159.220.214) DNS TWO 北方推荐:(122.114.245.45 南方推荐:115.159.96.69) DNS THREE 北方推荐:(115.159.157.26 南方推荐:115.159.158.38) 中科大防污染DNS(202.141.162.123(中国电信);202.141.178.13(电信线路);202.38.93.153(教育网);202.141.176.93(中国移动)) BAI DNS支持EDNS智能解析,无污染dns,快速安全 : (223.113.97.99) PdoMo-DNS (主DNS:101.132.183.99;辅DNS:193.112.15.186)注:可过滤广告,纯净无劫持 FUN DNS(119.23.248.241) 骆驼云安全 camelyundns 公共 dns:(63.223.94.66) CuteDNS: 高速DNS(原汁原味,高速解析): 华北 123.206.61.167;华南 119.29.105.234 去广告DNS(可屏蔽广告及违法信息): 华北 101.236.28.23 ;华南 120.77.212.84 我国首个IPv6公共DNS:首选DNS:240c::6666,备用DNS:240c::6644。 P站DNS:DNS 1: 123.207.137.88,DNS 2: 115.159.220.214 ;备用DNS 1: 115.159.146.99,DNS 2: 123.206.21.48 清华大学TUNA DNS666:101.6.6.6;2001:da8::666 HI!XNS(纯净无劫持):40.73.101.101 港澳台地区DNS 台湾网络资讯中心 TWNIC Quad 101 DNS:(主DNS:101.101.101.101;备用:101.102.103.104) IPv6部分:主DNS:2001:de4::101;备用:2001:de4::102 香港宽频DNS:(203.80.96.10;203.80.96.9) 中国(香港)电信全球有限公司NS1(202.55.11.100 )测试未 ping 通 中国(香港)电信全球有限公司NS4(202.55.21.85)ping 在90左右 西门子菠菜服务器(香港)(112.121.178.187)ping 在50左右 中国台湾中华电信 HiNet DNS:(168.95.192.1; 168.95.1.1) 和记黄埔有限公司(202.45.84.58) 国外公共DNS Cloudflare & APNIC ( IPv4: 主DNS:1.1.1.1,备用:1.0.0.1;IPv6: 主DNS:2001:2001::,备用2001:2001:2001::)PS:最牛逼最简洁的ip AdGuard DNS(测试版): 默认(可拦截广告,跟踪和钓鱼网址) 176.103.130.130;176.103.130.131 IPv6 地址为:2a00:5a60::ad1:0ff;2a00:5a60::ad2:0ff 家庭保护(默认 + 拦截成人网站 + 安全搜索) 176.103.130.132;176.103.130.134 IPv6 地址使用:2a00:5a60::bad1:0ff;2a00:5a60::bad2:0ff Google DNS (8.8.8.8; 8.8.4.4) 谷歌Google Public DNS IPv6 DNS (2001:4860:4860::8888; 2001:4860:4860::8844) level 3:(4.2.2.1;4.2.2.2 ) IBM Quad9 DNS(9.9.9.9) Comodo Secure (8.26.56.26;8.20.247.20) V2EX DNS (199.91.73.222;178.79.131.110) OpenDNS (208.67.222.222;208.67.220.220) OpenDNS Family:(208.67.222.123、208.67.220.123) UltraDNS (156.154.70.1;156.154.71.1) Norton ConnectSafe (199.85.126.10;199.85.127.10) 威瑞信公共 DNS (64.6.64.6;64.6.65.6) Dyn DNS (216.146.35.35;216.146.36.36) Freenom World DNS (80.80.80.80;80.80.81.81) Yandex Basic ( 77.88.8.8;77.88.8.1) Yandex Basic (77.88.8.8 ;77.88.8.2) Yandex Basic ( 77.88.8.7;77.88.8.3) 柬埔寨 CN2 DNS (103.197.104.178;103.197.106.75;203.189.136.148)ping在110-120左右 Hurricane Electric HEDNS (IPV4:74.82.42.42;IPV6:2001:470:20:2;IPV4:66.220.18.42) UCOM日本东京(203.112.2.4) DNS.WATCH (IPV4:84.200.69.80;84.200.70.40;IPV6:2001:1608:10:25::1c04:b12f;2001:1608:10:25::9249:d69b) SafeDNS (195.46.39.39;195.46.39.40) puntCAT DNS (IPV4:109.69.8.51;IPV6:2a00:1508:0:4::9) 韩国电信(不是韩国长安大学)DNS ( 168.126.63.1;168.126.63.2 )

    2021.10.30 浏览:3917
  • 在Debian 10 Buster上设置OpenConnect VPN服务器(ocserv)

    本教程将向您展示如何通过在Debian 10 Buster上安装OpenConnect VPN服务器来运行自己的VPN服务器。OpenConnect VPN服务器,又名ocserv,是Cisco AnyConnnect VPN协议的开源实现,广泛应用于企业和大学。AnyConnect是一种基于SSL的VPN协议,允许单个用户连接到远程网络。 为什么要设置自己的VPN服务器? 也许你是VPN服务提供商或系统管理员,这就要求你设置自己的VPN服务器。 你不信任VPN服务提供商的禁止登录策略,所以你选择了自主机路径。 您可以使用VPN来实施网络安全策略。例如,如果您运行自己的电子邮件服务器,则可以通过在防火墙中创建IP地址白名单,要求用户仅从VPN服务器的IP地址登录。因此,您的电子邮件服务器经过加固以防止黑客活动。 也许你只是想知道VPN服务器是如何工作的。 OpenConnect VPN服务器的功能 轻便快速。在我的测试中,我可以通过OpenConnect VPN观看YouTube 4K视频。YouTube在我的国家(中国)被屏蔽。 在Linux和大多数BSD服务器上运行。 与Cisco AnyConnect客户端兼容 有针对Linux、macOS、Windows和OpenWRT的OpenConnect客户端软件。对于Android和iOS,您可以使用Cisco AnyConnect客户端。 支持密码身份验证和证书身份验证 支持RADIUS记帐。 易于设置 我特别喜欢这样一个事实:与其他VPN技术相比,最终用户使用OpenConnect VPN非常简单方便。每当我在我的计算机上安装Linux发行版,并想快速解锁网站或隐藏我的IP地址时,我就会安装OpenConnect客户端,只需两行命令即可连接到服务器: sudo apt install openconnect sudo openconnect -b vpn.mydomain.com 此外,还有用于Fedora、RHEL、CentOS、Arch Linux和OpenSUSE的OpenConnect VPN客户端。您可以使用软件包管理器轻松安装它。 sudo dnf install openconnect sudo yum install openconnect sudo pacman -S openconnect 要求 要学习本教程,您需要一个VPS(虚拟专用服务器),可以自由访问被屏蔽的网站(在您的国家或互联网过滤系统之外)。我推荐Kamatera VPS,其特点是: 30天免费试用。 起价为每月4美元(1GB内存) 基于KVM的高性能VPS 世界各地的9个数据中心,包括美国、加拿大、英国、德国、荷兰、香港和ISRALL。 按照下面链接的教程在Kamatera创建Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 一旦你有了一个运行Debian 10 buster的VPS,请按照下面的说明操作。 您还需要一个域名来为OpenConnect VPN启用HTTPS。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 步骤1:在Debian 10 Buster上安装OpenConnect VPN服务器 通过SSH登录Debian 10 Buster服务器。然后使用apt从Debian存储库安装ocserv包。 sudo apt update sudo apt install ocserv 一旦安装,OpenConnect VPN服务器将自动启动。您可以通过以下方式检查其状态: systemctl status ocserv 样本输出: ● ocserv.service - OpenConnect SSL VPN server Loaded: loaded (/lib/systemd/system/ocserv.service; enabled; vendor preset: enabled Active: active (running) since Thu 2017-11-30 05:45:07 UTC; 11s ago Docs: man:ocserv(8) Main PID: 19235 (ocserv-main) CGroup: /system.slice/ocserv.service ├─19235 ocserv-main └─19242 ocserv-secm 提示:如果上述命令没有立即退出,您可以按Q键重新控制终端。 如果它没有运行,则可以从以下内容开始: sudo systemctl start ocserv 默认情况下,OpenConnect VPN服务器监听TCP和UDP端口443。如果web服务器正在使用它,则VPN服务器无法启动。稍后我们将在OpenConnect VPN配置文件中看到如何更改端口。 如果你的服务器上有防火墙,那么你需要打开端口80和443。例如,如果使用UFW,则运行以下命令。 sudo ufw allow 80/tcp sudo ufw allow 443/tcp 第2步:在Debian 10 Buster服务器上安装Let's Encrypt Client(Certbot) 与ocserv一起安装的gnutls bin包提供了创建您自己的CA和服务器证书的工具,但我们将获取并安装Let's Encrypt certificate。使用Let’s Encrypt证书的优点是,它是免费的,更容易设置,并且受VPN客户端软件的信任。 运行以下命令在Debian 10上安装Let's Encrypt client(certbot)。 sudo apt install certbot 要检查版本号,请运行 certbot --version 样本输出: certbot 0.31.0 步骤3:从Let's Encrypt获取受信任的TLS证书 我建议使用standalone或webroot插件来获取TLS证书。 独立插件 如果Debian 10 Buster服务器上没有运行web服务器,并且您希望OpenConnect VPN服务器使用端口443,那么您可以使用独立插件从Let's Encrypt获取TLS证书。为vpn设置DNS记录。你的地盘。com,然后运行以下命令以获取证书。 sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d vpn.example.com 说明: certonly:获取证书,但不要安装它。 --standalone:使用standalone插件获取证书 --首选挑战http:执行http-01挑战以验证我们的域,该域将使用端口80。 --同意:同意让我们加密服务条款。 --电子邮件:电子邮件地址用于帐户注册和恢复。 -d:指定你的域名。 从下面的截图可以看出,我成功地获得了证书。 使用webroot插件 如果Debian 10 Buster服务器的web服务器监听端口80和443,那么最好使用webroot插件来获取证书,因为webroot插件几乎适用于所有web服务器,我们不需要在web服务器中安装证书。 首先,您需要为vpn创建一个虚拟主机。实例通用域名格式。 阿帕奇 如果您使用的是Apache web服务器,则在/etc/apache2/sites available/目录下创建虚拟主机。 sudo nano /etc/apache2/sites-available/vpn.example.com.conf 并将以下行粘贴到文件中。 <VirtualHost *:80> ServerName vpn.example.com DocumentRoot /var/www/ocserv </VirtualHost> 保存并关闭文件。然后创建web根目录。 sudo mkdir /var/www/ocserv 将www数据(Apache用户)设置为web根目录的所有者。 sudo chown www-data:www-data /var/www/ocserv -R 启用此虚拟主机。 sudo a2ensite vpn.example.com 重新加载Apache以使更改生效。 sudo systemctl reload apache2 创建并启用虚拟主机后,运行以下命令以获取使用webroot插件加密证书。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv/ Nginx 如果您使用的是Nginx web服务器,那么在/etc/Nginx/conf.d/下创建虚拟主机。 sudo nano /etc/nginx/conf.d/vpn.example.com.conf 将以下行粘贴到文件中。 server { listen 80; server_name vpn.example.com; root /var/www/ocserv/; location ~ /.well-known/acme-challenge { allow all; } } 保存并关闭文件。然后创建web根目录。 sudo mkdir /var/www/ocserv 将www数据(Nginx用户)设置为web根目录的所有者。 sudo chown www-data:www-data /var/www/ocserv -R 重新加载Nginx以使更改生效。 sudo systemctl reload nginx 创建并启用虚拟主机后,运行以下命令以获取使用webroot插件加密证书。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv/ 第4步:编辑OpenConnect VPN服务器配置文件 编辑ocserv配置文件。 sudo nano /etc/ocserv/ocserv.conf 首先,配置密码身份验证。默认情况下,通过PAM(可插拔认证模块)进行密码认证是启用的,这允许您使用Debian系统帐户从VPN客户端登录。可以通过注释掉以下行来禁用此行为。 auth = "pam[gid-min=1000]" 如果我们希望用户使用单独的VPN帐户而不是系统帐户登录,我们需要添加以下行以启用密码文件的密码身份验证。 auth = "plain[passwd=/etc/ocserv/ocpasswd]" 编辑完这个配置文件后,我们将看到如何使用ocpasswd工具生成/etc/ocserv/ocpasswd文件,其中包含用户名和编码密码的列表。 注意:Ocserv支持客户端证书身份验证,但我们来加密它不会颁发客户端证书。如果要启用证书身份验证,则需要设置自己的CA以颁发客户端证书。 接下来,如果您不想让ocserv使用TCP和UDP端口443(有一个web服务器使用端口443),请找到以下两行并更改端口号。否则就别管他们。 tcp-port = 443 udp-port = 443 然后找出下面两行。我们需要改变它们。 server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem server-key = /etc/ssl/private/ssl-cert-snakeoil.key 将默认设置替换为让我们加密服务器证书和服务器密钥文件的路径。 server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem 然后,设置客户端的最大数量。默认值为128。设置为零表示无限。 max-clients = 128 设置用户可以同时登录的设备数量。默认值为2。设置为零表示无限。 max-same-clients = 2 默认情况下,keepalive数据包每300秒(5分钟)发送一次。我更喜欢使用短时间(30秒)来减少VPN连接中断的机会。 keepalive = 30 接下来,找到下面这行。将false更改为true以启用MTU发现。 try-mtu-discovery = false 您可以通过以下两个参数设置在断开连接之前允许客户端保持空闲的时间。如果您希望客户端无限期地保持连接,那么请注释掉这两个参数。 idle-timeout=1200 mobile-idle-timeout=1800 之后,将默认域设置为vpn。实例通用域名格式。 default-domain = vpn.example.com 默认情况下,IPv4网络配置如下所示。这将导致问题,因为大多数家庭路由器还将IPv4网络范围设置为192.168.1.0/24。 ipv4-network = 192.168.1.0 ipv4-netmask = 255.255.255.0 我们可以使用另一个专用IP地址范围(如10.10.10.0/24)来避免IP地址冲突,因此将ipv4网络的值更改为 ipv4-network = 10.10.10.0 现在取消注释下面这行,通过VPN隧道所有DNS查询。 tunnel-all-dns = true 更改DNS解析程序地址。你可以使用谷歌的公共DNS服务器。 dns = 8.8.8.8 dns = 8.8.4.4 或者Cloudflare的公共DNS服务器。 dns = 1.1.1.1 dns = 1.0.0.1 注意:如果您是VPN服务提供商,最好运行自己的DNS解析器。如果在同一台服务器上运行DNS解析程序,请将DNS指定为 dns = 10.10.10.1 10.10.10.1是VPN LAN中OpenConnect VPN服务器的IP地址。这将稍微加快客户端的DNS查找,因为VPN服务器和DNS解析程序之间的网络延迟已消除。 然后注释掉所有路由参数(在下面几行的开头添加#字符),这将把服务器设置为客户端的默认网关。 #route = 10.0.0.0/8 #route = 172.16.0.0/12 #route = 192.168.0.0/16 #route = fd00::/8 #route = default #no-route = 192.168.5.0/255.255.255.0 保存并关闭文件,然后重新启动VPN服务器,以使更改生效。 sudo systemctl restart ocserv 第5步:创建VPN帐户 现在使用ocpasswd工具生成VPN帐户。 sudo ocpasswd -c /etc/ocserv/ocpasswd username 系统将要求您为用户设置密码,信息将保存到/etc/ocserv/ocpasswd文件中。要重置密码,只需再次运行上述命令。 步骤6:在Linux内核中启用IP转发 为了让VPN服务器在VPN客户端和Internet之间路由数据包,我们需要启用IP转发。编辑sysctl。conf文件。 sudo nano /etc/sysctl.conf 在该文件末尾添加以下行。 net.ipv4.ip_forward = 1 保存并关闭文件。然后使用下面的命令应用更改。p选项将从/etc/sysctl加载sysctl设置。conf文件。此命令将在系统重新启动时保留所做的更改。 sudo sysctl -p 第7步:在防火墙中配置IP伪装 我们需要在服务器防火墙中设置IP伪装,以便服务器成为VPN客户端的虚拟路由器。我将使用UFW,它是iptables防火墙的前端。在Debian上安装UFW时使用: sudo apt install ufw 首先,需要允许SSH通信。 sudo ufw allow 22/tcp 接下来,找到服务器主网络接口的名称。 ip addr 正如你所看到的,在我的Debian服务器上它的名字是ens3。 要配置IP伪装,我们必须在UFW配置文件中添加iptables命令。 sudo nano /etc/ufw/before.rules 默认情况下,过滤器表有一些规则。在该文件末尾添加以下行。将ens3替换为您自己的网络接口名称。 # NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o ens3 -j MASQUERADE # End each table with the 'COMMIT' line or these rules won't be processed COMMIT 在Nano文本编辑器中,按Ctrl+W,然后按Ctrl+V,可以转到文件的末尾。 以上几行将在nat表的后路由链的末尾附加(-A)条规则。它将把你的虚拟专用网络与互联网连接起来。同时也会对外界隐藏你的人际网络。所以互联网只能看到VPN服务器的IP,却看不到VPN客户端的IP,就像你的家庭路由器隐藏了你的私人家庭网络一样。 默认情况下,UFW禁止数据包转发。我们可以允许为我们的专用网络转发。在该文件中找到ufw BEFORT forward链,并添加以下3行,如果源IP或目标IP在10.10.10.0/24范围内,这3行将接受数据包转发。 # allow forwarding for trusted network -A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT -A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT 保存并关闭文件。然后启用UFW。 sudo ufw enable 如果以前启用过UFW,那么可以使用systemctl重新启动UFW。 sudo systemctl restart ufw 现在,如果使用以下命令列出NAT表的后路由链中的规则: sudo iptables -t nat -L POSTROUTING 你可以看到化装规则。 UFW处理防火墙规则可能需要一些时间。如果伪装规则未显示,则再次重新启动UFW(sudo systemctl restart UFW)。 步骤8:打开防火墙中的443端口 运行以下命令打开TCP和UDP端口443。如果您为ocserv配置了不同的端口,则将443更改为您配置的端口。 sudo ufw allow 443/tcp sudo ufw allow 443/udp 现在,OpenConnect VPN服务器已准备好接受客户端连接。 对于运行本地DNS解析程序的用户,如果指定10.10.10.1作为VPN客户端的DNS服务器,则必须允许VPN客户端使用以下UFW规则连接到端口53。 sudo ufw insert 1 allow in from 10.10.10.0/24 您还需要编辑绑定DNS服务器的配置,以允许VPN客户端发送如下递归DNS查询。 allow-recursion { 127.0.0.1; 10.10.10.0/24; }; 如何在Debian 10 Buster桌面上安装和使用OpenConnect VPN客户端 运行以下命令在Debian桌面上安装OpenConnect VPN命令行客户端。 sudo apt install openconnect 您可以从下面的命令行连接到VPN-b标志将使其在连接建立后在后台运行。 sudo openconnect -b vpn.example.com 默认情况下,openconnect客户端将联系服务器的端口443。如果为服务器配置了其他端口,则可以添加端口号。 sudo openconnect -b vpn.example.com:port-number 您将被要求输入VPN用户名和密码。如果成功建立连接,您将看到以下消息。 Got CONNECT response: HTTP/1.1 200 CONNECTED CSTP connected. DPD 60, Keepalive 300 Connected as 10.10.10.139, using SSL + LZ4, with DTLS + LZ4 in progress Continuing in background; pid 17050 如果连接失败,可以查看ocserv日志以了解原因。(可能您没有正确输入密码。) sudo journaltcl -eu ocserv 要停止连接,请运行: sudo pkill openconnect 要以非交互方式运行客户端,请使用以下语法。 echo -n password | sudo openconnect -b vpn.example.com -u username --passwd-on-stdin 如果要使用Network Manager管理VPN连接,则需要安装这些软件包。 sudo apt install network-manager-openconnect network-manager-openconnect-gnome 如果您成功连接到VPN服务器,但您的公共IP地址没有更改,这是因为IP转发或IP伪装不起作用。我的iptables命令有一次输入错误,导致我的电脑无法浏览互联网。 系统启动时自动连接 为了让OpenConnect VPN客户端在启动时自动连接到服务器,我们可以创建一个systemd服务单元。 sudo nano /etc/systemd/system/openconnect.service 将以下行放到文件中。替换红色文本。 [Unit] Description=OpenConnect VPN Client After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -u username --passwd-on-stdin' KillSignal=SIGINT Restart=always RestartSec=2 [Install] WantedBy=multi-user.target 保存并关闭文件。然后启用此服务,使其在引导时启动。 sudo systemctl enable openconnect.service 文件内容说明: After=网络在线。目标和需求=网络在线。目标使此服务在网络启动后运行。 实际上,这项服务仍然可以在网络开通之前运行。如果服务失败,我们添加Restart=always和RestartSec=2以在2秒后重新启动该服务。 Systemd无法识别管道重定向。因此,在ExecStart指令中,我们将命令用单引号括起来,并使用Bash shell运行它。 由于OpenConnect VPN客户端将作为在后台运行的systemd服务运行,因此不需要在OpenConnect命令中添加-b标志。 当发出systemctl stop openconnect命令时,KillSignal指令告诉Systemd发送SIGINT信号。这将通过注销会话、恢复DNS服务器设置和Linux内核路由表来执行完全关闭。 要立即启动此Systemd服务,请运行 sudo systemctl start openconnect 要停止此Systemd服务,请运行 sudo systemctl stop openconnect VPN连接中断时自动重启 有时VPN连接会由于各种原因而中断。要使VPN客户端自动重新启动,请编辑根用户的crontab文件。 sudo crontab -e 在该文件末尾添加以下行。 * * * * * ping -c 10 10.10.10.1 > /dev/null || systemctl restart openconnect 此Cron作业将每分钟运行一次,以检查VPN客户端是否可以ping VPN服务器的专用IP地址(10.10.10.1)。如果ping失败,则将执行右侧的命令以重新启动VPN客户端。|是Bash中的OR运算符。只有当左边的命令返回错误时,它才会执行右边的命令。 保存并关闭文件。 适用于Windows和MacOS的OpenConnect GUI客户端 它们可以从OpenConnect GUI Github页面下载。 速度 OpenConnect VPN非常快。我可以用它在YouTube上观看4k视频。如您所见,连接速度为63356kbps,相当于61Mbit/s。 这是速度测试的测试结果。网 速度优化 OpenConnect默认使用TLS over UDP协议(DTLS)来实现更快的速度,但UDP无法提供可靠的传输。TCP比UDP慢,但可以提供可靠的传输。我可以给你的一个优化技巧是禁用DTL,使用标准TLS(通过TCP),然后启用TCP BBR以提高TCP速度。 要禁用DTL,请在ocserv配置文件中注释掉以下行(在开头添加#符号)。 udp-port = 443 保存并关闭文件。然后重启ocserv服务。 sudo systemctl restart ocserv.service 要启用TCP BBR,请查看以下教程。请注意,您需要在ocserv中禁用DTL,否则TCP BBR将无法工作。 如何通过启用TCP BBR轻松提升Debian网络性能 在我的测试中,启用TCP BBR的标准TLS比DTL快两倍。 影响速度的另一个非常重要的因素是本地计算机和VPN服务器之间的连接有多好。如果你住在中东和VPN服务器位于美国,速度将是缓慢的。选择一个离你住的地方近的数据中心。 自动续订让我们加密证书 编辑root用户的crontab文件。 sudo crontab -e 在文件末尾添加以下行以每天运行Cron作业。如果证书将在30天后过期,certbot将尝试续订证书。VPN服务器需要重新启动ocserv服务才能获取新的证书和密钥文件。 @daily certbot renew --quiet && systemctl restart ocserv 故障排除提示 请注意,如果您使用的是OpenVZ VPS,请确保在VPS控制面板中启用TUN虚拟网络设备。(如果你使用Kamatera VPS,那么你有基于KVM的VPS,所以你不必担心这一点。) 如果遇到任何问题,请查看OpenConnect VPN服务器日志。 sudo journalctl -eu ocserv.service 我发现如果我把443端口换成另一个端口,中国的防火长城会阻止这个VPN连接。 如果ocserv告诉您它无法加载/etc/ocserv/ocserv。conf文件,您可以停止ocserv。 sudo systemctl stop ocserv 然后在前台运行它,并启用调试。 sudo /usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf --debug=10 然后,输出可能会给您一些ocserv不工作的线索。 使OpenConnect VPN服务器和Web服务器同时使用端口443 请阅读以下文章: 运行OpenConnect VPN服务器&amp;Apache/Nginx与HAProxy在同一个盒子上 如何在ocserv中禁用TLS 1.0和TLS 1.1 PCI理事会在2018年6月30日否决了TLS 1.0,主流网络浏览器将在2020年禁用TLS 1.0和TLS 1.1。对于VPN服务器,我们也应该这样做。编辑主配置文件。 sudo nano /etc/ocserv/ocserv.conf 找到以下行: tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128" 要在OpenConnect VPN服务器中禁用TLS 1.0和TLS 1.1,只需添加-VERS-TLS1。0和-VERS-TLS1。1号排队。 tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1" 保存并关闭文件。然后重启ocserv。 sudo systemctl restart ocserv 现在ocserv只接受TLS1.3和TLS1.2。有关在ocserv中配置TLS参数的更多信息,请参阅GnuTLS优先级字符串。 要检查OpenConnect VPN服务器是否支持TLS 1.0,请运行以下命令。 openssl s_client -connect vpn.your-domain.com:443 -tls1 并检查TLS 1.1 openssl s_client -connect vpn.your-domain.com:443 -tls1_1 如果在输出中看到以下消息,则表示不支持TLS版本。 New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported 每用户或每组配置 Ocserv允许按用户和按组配置。要启用此功能,请取消注释/etc/ocserv/ocserv中的以下两行。conf文件。 config-per-user = /etc/ocserv/config-per-user/ config-per-group = /etc/ocserv/config-per-group/ 保存并关闭文件。然后创建每个用户和每个组的配置目录。 sudo mkdir /etc/ocserv/config-per-user/ sudo mkdir /etc/ocserv/config-per-group/ 接下来,您可以在这两个目录下创建一个文件。例如,创建user1文件以允许对user1进行自定义配置。 sudo nano /etc/ocserv/config-per-user/user1 还可以创建group1文件,以允许对名为group1的组进行自定义配置。 sudo nano /etc/ocserv/config-per-group/group1 您可以在文件中添加如下内容。 route = 10.10.10.0/255.255.255.0 这意味着,在user1连接到此VPN服务器后,只有到10.10.10.0/24网络的流量将通过VPN服务器路由。到其他IP地址的流量通过原始网关路由。这被称为分裂隧道,在以下情况下非常有用: 您只希望VPN客户端能够浏览内部资源,而不希望所有流量都通过VPN服务器。 你需要为云服务器构建一个专用网络。 客户端需要连接到多个VPN。一个VPN可以使用拆分隧道,另一个使用完整隧道。 保存并关闭文件。重新启动ocserv以使更改生效。 如何运行ocserv的多个实例 一个ocserv进程只能绑定到服务器上的一个TCP或UDP端口。如果希望允许ocserv绑定到多个TCP或UDP端口,则需要运行多个ocserv进程。这很简单。复制/lib/systemd/system/ocserv。新文件的服务。 sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv2.service 然后编辑新文件。 sudo nano /etc/systemd/system/ocserv2.service 改变 /etc/ocserv/ocserv.conf 到 /etc/ocserv/ocserv2.conf 保存并关闭文件。接下来,您可以编辑/etc/ocserv/ocserv2。conf文件并添加自定义配置。完成后,启动第二个ocserv服务。 sudo systemctl start ocserv2 收尾 就这样!我希望本教程能帮助您在Debian 10 Buster服务器上安装和配置OpenConnect VPN。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:2164
  • 使用BIND9在Debian 10 Buster上设置自己的DNS解析器

    本教程将向您展示如何使用广泛使用的BIND9 DNS软件在Debian 10 Buster上设置本地DNS解析器。DNS解析器有很多同义词,下面列出了其中一些。它们都指同一件事。 全解析程序(与存根解析程序相反) DNS递归器 递归DNS服务器 递归解析器 还要注意,DNS服务器也可以称为名称服务器。DNS解析器的示例有8.8.8.8(谷歌公共DNS服务器)和1.1.1.1(Cloudflare公共DNS服务器)。你电脑上的操作系统也有一个解析器,不过由于功能有限,它被称为存根解析器。存根解析器是终端用户计算机上的一个小型DNS客户端,它接收来自Firefox等应用程序的DNS请求,并将请求转发给递归解析器。几乎每个解析器都可以缓存DNS响应以提高性能,因此它们也被称为缓存DNS服务器。 为什么要运行自己的DNS解析程序 通常情况下,您的计算机或路由器使用ISP的DNS解析器查询域名以获得IP地址。运行自己的本地DNS解析器可以加快DNS查找,因为 本地DNS解析程序只侦听您的DNS请求,不响应其他人的DNS请求,因此您直接从解析程序上的缓存获得DNS响应的可能性要高得多。 您的计算机和DNS解析器之间的网络延迟被消除(几乎为零),因此DNS查询可以更快地发送到根DNS服务器。 如果您运行邮件服务器并使用DNS黑名单(DNSBL)阻止垃圾邮件,则建议您运行本地DNS解析程序以加快DNS查找。如果您在VPS(虚拟专用服务器)上运行自己的VPN服务器,那么在同一个VPS上安装DNS解析器也是一个很好的做法。 如果你不喜欢你的互联网浏览历史记录存储在第三方服务器上,你可能还想运行自己的DNS解析器。 如果您拥有一个网站,并且希望您自己的DNS服务器处理您的域名的名称解析,而不是使用您的域注册商的DNS服务器,那么您需要设置一个权威DNS服务器,它不同于DNS解析程序。BIND可以同时充当权威DNS服务器和DNS解析程序,但最好在不同的框中分离这两个角色。本教程介绍如何设置本地DNS解析器,因为它将在本地主机/本地网络上使用,所以不需要加密(通过TLS的DNS或通过HTTPS的DNS)。设置DoT或DoH服务器将在以后的文章中讨论。 请注意,在Debian上安装软件时,您需要拥有root权限。可以在命令开头添加sudo,或者使用su-command切换到root用户。 在Debian 10 Buster上安装BIND9 BIND(Berkeley Internet Name Domain)是一款开源DNS服务器软件,由于其稳定性和高质量,在Unix/Linux上得到了广泛应用。它最初由加州大学伯克利分校(UC Berkeley)开发,后来在1994年被转移到互联网系统联盟(Internet Systems Consortium,Inc.)进行开发。 运行以下命令,从默认存储库在Debian 10 Buster上安装BIND 9。BIND 9是当前版本,BIND 10是一个死项目。 sudo apt update sudo apt install bind9 bind9utils bind9-doc bind9-host dnsutils 检查版本信息。 sudo named -v 样本输出: BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c> 要检查版本号和生成选项,请运行 sudo named -V 默认情况下,绑定在安装后自动启动。您可以通过以下方式检查其状态: systemctl status bind9 提示:如果上述命令没有立即退出,请按Q。 如果它没有运行,那么从以下内容开始: sudo systemctl start bind9 并在启动时启用自动启动: sudo systemctl enable bind9 BIND服务器将以BIND用户的身份运行,该用户是在安装过程中创建的,并在TCP和UDP端口53上侦听,如运行以下命令所示: sudo netstat -lnptu | grep named 通常DNS查询被发送到UDP端口53。TCP端口53用于大小大于512字节的响应。 绑定守护进程被称为named。(守护进程是在后台运行的软件。)命名的二进制文件由bind9包安装,还有另一个重要的二进制文件:rndc,远程名称守护程序控制器,由bind9utils包安装。rndc二进制文件用于重新加载/停止和控制绑定守护进程的其他方面。通信通过TCP端口953完成。 例如,我们可以检查绑定名称服务器的状态。 sudo rndc status 本地DNS解析程序的配置 /etc/bind/是包含bind配置的目录。 命名的。conf:主配置文件,包括其他三个文件的配置。 db。127:本地主机IPv4反向映射区域文件。 db。本地:本地主机转发IPv4和IPv6映射区域文件。 db。空:一个空的区域文件 Debian 10上的bind9软件包没有附带db。根文件,它现在使用位于/usr/share/dns/root的根提示文件。提示。DNS解析程序使用根提示文件来查询根DNS服务器。有13组根DNS服务器,来自a.root-servers。net到m.root服务器。网 Debian上的BIND9服务器开箱即用,只为本地主机和本地网络客户端提供递归服务。外界的质疑将被拒绝。所以你不必编辑配置文件。为了让您熟悉BIND 9配置,我将向您展示如何启用递归服务。 主绑定配置文件/etc/BIND/named。conf从其他3个文件中获取设置。 /etc/bind/named。形态选项 /etc/bind/named。conf.local /etc/bind/named。conf.default-zones 要启用递归服务,请编辑第一个文件。 sudo nano /etc/bind/named.conf.options 在options子句中,添加以下行。将allow recursion语句中的IP地址替换为您自己的本地网络地址。 // hide version number from clients for security reasons. version "not currently available"; // optional - BIND default behavior is recursion recursion yes; // provide recursion service to trusted clients only allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; }; // enable the query log querylog yes; 保存并关闭文件。然后测试配置文件语法。 sudo named-checkconf 如果测试成功(由静默输出指示),则重新启动BIND9。 sudo systemctl restart bind9 如果绑定服务器上运行防火墙,则需要打开端口53,以允许LAN客户端发送DNS查询。如果使用UFW防火墙,可以运行以下命令。 sudo ufw allow in from 192.168.0.0/24 to any port 53 这将打开专用网络192.168.0.0/24的TCP和UDP端口53。然后从同一局域网内的另一台计算机上,我们可以运行以下命令来查询google的A记录。通用域名格式。用绑定解析程序的IP地址替换192.168.0.102。 dig A google.com @192.168.0.102 现在,在绑定解析器上,使用以下命令检查查询日志。 sudo journalctl -eu bind9 这将显示bind9服务单元的最新日志消息。我可以在日志中找到以下行,这表明谷歌的DNS查询。com的A记录已从IP地址为192.168.0.103的端口57806收到。 named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102) 在Debian 10 Buster服务器上设置默认DNS解析程序 在绑定服务器上,我们需要将127.0.0.1设置为默认DNS解析程序。您可以使用以下命令检查Debian 10上的当前DNS解析器。 cat /etc/resolv.conf 样本输出: # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 2001:19f0:300:1704::6 nameserver 108.61.10.10 Debian 10上的bind9软件包附带一个Systemd服务单元bind9 resolvconf。服务,这将帮助我们在Debian服务器上将BIND设置为默认DNS解析程序。默认情况下,这个服务是禁用的,我们需要启动它并在启动时启用自动启动。 sudo systemctl start bind9-resolvconf sudo systemctl enable bind9-resolvconf 现在可以检查/etc/resolv的内容。又来了。如您所见,127.0.0.1(BIND)现在是Debian 10 Buster上的默认DNS解析程序。 如果DNS解析程序不是127.0.0.1,则可能是系统没有resolvconf二进制文件,这会导致bind9 resolvconf服务失败。您需要安装resolvconf包并重新启动服务。 sudo apt install resolvconf sudo systemctl restart bind9-resolvconf 在客户端计算机上设置默认DNS解析程序 现在,您可以在局域网上配置其他计算机,将绑定服务器用作DNS解析程序。对于Windows和MacOS计算机,您可以在谷歌上搜索以了解如何设置默认DNS解析程序。在这里,我将向您展示如何在Linux桌面计算机上设置DNS解析器。以下方法适用于任何使用NetworkManager的Linux发行版。 单击Linux桌面上的Network Manager图标以查找编辑连接。(在某些Linux发行版上,需要右键单击网络管理器。) 然后选择当前连接并单击cog图标以编辑此连接。 选择IPv4设置选项卡,将方法从自动(DHCP)更改为仅自动(DHCP)地址,这将阻止Ubuntu系统从路由器获取DNS服务器地址。然后指定一个DNS服务器。在这里,我在局域网中输入绑定服务器的IP地址。 保存更改。然后重新启动NetworkManager,使更改生效。 sudo systemctl restart NetworkManager 重新连接后,再次单击网络管理器图标并选择连接信息。您可以看到您的Linux桌面计算机现在正在使用绑定DNS服务器。 如何在绑定中禁用IPv6 如果您的网络中没有使用IPv6,那么最好在BIND中关闭IPv6,否则,BIND日志中会出现很多关于IPv6的错误,如下所示。 network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53 network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53 要在Ubuntu上的BIND中禁用IPv6,只需打开/etc/default/bind9文件 sudo nano /etc/default/bind9 在选项中添加-4。 OPTIONS="-u bind -4" 保存并关闭文件。然后重启BIND,就完成了。 sudo systemctl restart bind9 绑定服务失败 如果绑定解析程序无法回答DNS查询(SERVFAIL),并且在绑定日志中看到以下行。 dnssec: warning: managed-keys-zone: Unable to fetch DNSKEY set '.': timed out 这可能是因为您的服务器没有可用的IPv6连接。这发生在我的一台服务器上。我以为IPv6连接正常工作,但由于我不知道的原因,它突然中断了。一旦我在BIND中禁用了IPv6,DNS解析将再次工作。 绑定自动重启 如果由于任何原因导致绑定进程被终止,则需要运行以下命令来重新启动它。 sudo systemctl restart bind9 我们不需要手动输入这个命令,而是可以通过编辑指定的。服务系统服务单位。为了覆盖默认的systemd服务配置,我们创建了一个单独的目录。 sudo mkdir -p /etc/systemd/system/bind9.service.d/ 然后在这个目录下创建一个文件。 sudo nano /etc/systemd/system/bind9.service.d/restart.conf 在文件中添加以下行,这将使Bind在检测到故障5秒后自动重新启动。 [Service] Restart=always RestartSec=5s 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload 要检查这是否有效,请使用以下方法杀死Bind: sudo pkill named 然后检查绑定状态。你会发现Bind自动重启。 systemctl status bind9 绑定最大缓存大小 BIND可以在服务器上缓存DNS结果,以加快客户端的DNS查找。BIND假设您正在运行一个专用的DNS解析程序,即没有其他web服务在同一台主机上运行,因此默认缓存大小(由最大缓存大小定义)设置为总RAM的90%,以实现最佳性能。绑定开始时,可以在绑定日志(sudo journalctl-eu bind9)中看到下面这样的一行。 none:100: 'max-cache-size 90%' - setting to 7165MB (out of 7961MB) 请注意,BIND不会立即使用90%的RAM。如果只有几个DNS请求,BIND只使用少量RAM,因为缓存的DNS结果不多。如果有大量DNS请求,那么它将使用大量RAM来存储DNS缓存。 如果RAM有限,您可能不希望BIND将90%的RAM用于缓存。编辑绑定配置文件/etc/BIND/named。形态选项。 sudo nano /etc/bind/named.conf.options 在options子句中添加以下指令。将50%更改为您的首选值。 max-cache-size 50%; 重新启动BIND以使更改生效。 sudo systemctl restart bind9 结论 我希望本教程能帮助您使用BIND9在Debian 10 Buster上设置本地DNS解析器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:860
  • 使用Apache(LAMP Stack)在Ubuntu 20.04上安装NextCloud

    本教程将向您展示如何使用Apache web服务器在Ubuntu 20.04 LTS上安装NextCloud。 接下来是什么? NextCloud是一个免费的开源自托管云存储解决方案。它的功能类似于Dropbox。专有的云存储解决方案(Dropbox、Google Drive等)很方便,但代价是:它们可以用于收集个人数据,因为您的文件存储在它们的计算机上。如果您担心隐私问题,可以切换到NextCloud,您可以将其安装在您的私人家庭服务器或虚拟私人服务器(VPS)上。您可以通过NextCloud将文件上传到服务器,然后将这些文件同步到台式电脑、笔记本电脑或智能手机。这样你就可以完全控制你的数据。 NextCloud功能 免费开源 端到端加密,这意味着文件可以在上传到服务器之前在客户端设备上进行加密,因此即使有人窃取了您的服务器,他们也无法读取您的文件。 可与在线办公套件(Collobora online,OnlyOffice)集成,因此您可以直接从NextCloud创建和编辑文档、ppt、xls文件。 app store包含数百个扩展功能的应用程序(如日历应用程序、联系人应用程序、笔记应用程序、视频会议应用程序等)。 同步客户端可在Linux、macOS、Windows、iOS和android上使用。 先决条件 NextCloud是用PHP编程语言编写的。要学习本教程,首先需要在Ubuntu 20.04上安装LAMP stack。如果您还没有这样做,请查看以下教程。 如何在Ubuntu 20.04上安装LAMP Stack(Apache、MariaDB、PHP7.4-FPM) 您可以在家庭服务器或VPS(虚拟专用服务器)上安装NextCloud。您还需要一个域名,以便以后能够启用HTTPS来加密HTTP流量。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。Nextcloud可以在没有域名的情况下安装,但如果不加密HTTP连接以防止窥探,那么它真的没有意义。如果你真的想修补服务器软件并充分利用它们,我建议你买一个域名。 现在让我们安装NextCloud。 第一步:在Ubuntu 20.04上下载NextCloud 登录你的Ubuntu 20.04服务器。然后将NextCloud压缩文件下载到服务器上。撰写本文时,最新的稳定版本是21.0.1。您可能需要更改版本号。去https://nextcloud.com/install然后单击下载服务器按钮查看最新版本。 可以运行以下命令将其下载到服务器上。 wget 21.0.1.zip 您始终可以使用上述URL格式下载NextCloud。如果出现新版本,只需用新版本号替换21.0.1即可。 下载后,使用解压功能提取归档文件。 sudo apt install unzip sudo unzip nextcloud-21.0.1.zip -d /var/www/ -d选项指定目标目录。NextCloud web文件将被提取到/var/www/NextCloud/。然后我们需要将该目录的所有者更改为www数据,以便web服务器(Apache)可以写入该目录。 sudo chown www-data:www-data /var/www/nextcloud/ -R 步骤2:在MariaDB数据库服务器中为Nextcloud创建数据库和用户 使用以下命令登录MariaDB数据库服务器。由于MariaDB现在使用unix_socket插件来验证用户登录,因此无需输入MariaDB根密码。我们只需要在mysql命令前面加上sudo。 sudo mysql 然后为Nextcloud创建一个数据库。本教程将数据库命名为nextcloud。你可以用任何你喜欢的名字。 create database nextcloud; 创建数据库用户。同样,您可以使用此用户的首选名称。用首选密码替换密码。 create user nextclouduser@localhost identified by 'your-password'; 授予此用户在nextcloud数据库上的所有权限。 grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'your-password'; 刷新权限并退出。 flush privileges; exit; 步骤3:为Nextcloud创建Apache虚拟主机 创建一个nextcloud。conf文件位于/etc/apache2/sites available/directory中,带有像Nano这样的命令行文本编辑器。 sudo nano /etc/apache2/sites-available/nextcloud.conf 将以下文本复制并粘贴到文件中。更换nextcloud。实例com与您自己的首选子域。不要忘记在DNS区域编辑器中为此子域创建DNS记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 <VirtualHost *:80> DocumentRoot "/var/www/nextcloud" ServerName nextcloud.example.com ErrorLog ${APACHE_LOG_DIR}/nextcloud.error CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined <Directory /var/www/nextcloud/> Require all granted Options FollowSymlinks MultiViews AllowOverride All <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud Satisfy Any </Directory> </VirtualHost> 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。) 然后启用这个虚拟主机。 sudo a2ensite nextcloud.conf 运行以下命令以启用所需的Apache模块。 sudo a2enmod rewrite headers env dir mime setenvif ssl 然后测试Apache配置。 sudo apache2ctl -t 如果语法正确,请重新加载Apache以使更改生效。 sudo systemctl restart apache2 第4步:安装并启用PHP模块 运行以下命令安装NextCloud所需或推荐的PHP模块。 sudo apt install imagemagick php-imagick libapache2-mod-php7.4 php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp 重新加载Apache以使用这些模块。 sudo systemctl reload apache2 第5步:启用HTTPS 现在,通过输入Nextcloud安装的域名,您可以在web浏览器中访问Nextcloud web安装向导。 nextcloud.example.com 如果网页无法加载,您可能需要在防火墙中打开端口80。 sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT 还有443端口。 sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT 在输入任何敏感信息之前,我们应该在Nextcloud上启用安全的HTTPS连接。我们可以从Let's Encrypt获得免费的TLS证书。从Ubuntu20.04存储库安装Let's Encrypt client(certbot)。 sudo apt install certbot python3-certbot-apache Python3 certbot apache是apache插件。接下来,运行以下命令,使用Apache插件获取免费的TLS证书。 sudo certbot --apache --agree-tos --redirect --staple-ocsp --email [email protected] -d nextcloud.example.com 哪里: –apache2:使用Apache验证器和安装程序 –同意:同意让我们加密服务条款 –重定向:通过添加301重定向来强制HTTPS。 –装订ocsp:启用ocsp装订。 –电子邮件:用于注册和恢复联系的电子邮件。 -d标志后面是域名列表,以逗号分隔。你最多可以添加100个域名。 你会被问到是否想收到来自EFF(电子前沿基金会)的电子邮件。选择Y或N后,将自动获取并为您配置TLS证书,如下消息所示。 我发现Certbot无法在Nextcloud的Apache配置文件中自动添加HSTS头。如果要启用HSTS(HTTP严格传输安全),请编辑该文件。 sudo nano /etc/apache2/sites-enabled/nextcloud-le-ssl.conf 然后,我们可以在SSL服务器块中添加以下行以启用HSTS头。 Header always set Strict-Transport-Security "max-age=31536000" 如下图所示。 保存并关闭文件。然后发短信给Apache配置。 sudo apache2ctl -t 如果测试成功,请重新加载Apache以使更改生效。 sudo systemctl reload apache2 以上配置将在SSL测试中获得+分。 第6步:在Web浏览器中完成安装 现在,您可以使用HTTPS连接访问Nextcloud web安装向导。 要完成安装,您需要创建一个管理员帐户,输入Nextcloud数据文件夹的路径,输入在步骤2中创建的数据库详细信息。您可以使用默认的localhost作为主机地址,也可以在MariaDB侦听端口3306时输入localhost:3306。 数据文件夹是存储用户文件的地方。为了安全起见,最好将数据目录放在Nextcloud webroot目录之外。因此,我们可以将用户的文件改为/var/www/nextcloud/data/,而不是存储在/var/www/nextcloud/data/下。可以使用以下命令创建: sudo mkdir /var/www/nextcloud-data 然后确保Apache用户(www数据)对数据目录具有写入权限。 sudo chown www-data:www-data /var/www/nextcloud-data -R 单击Finish Setup(完成设置)按钮,您将看到Nextcloud的Web界面。恭喜!您可以开始将其用作您的私有云存储。 如何设置NextCloud电子邮件通知 如果您的NextCloud实例将被多人使用,那么NextCloud服务器可以发送事务性电子邮件,例如密码重置电子邮件,这一点很重要。首先,你应该为自己的账户设置一个电子邮件地址。转到设置-&gt;个人信息,并为您的帐户设置电子邮件地址。 然后进入设置-&gt;基本设置。您将找到电子邮件服务器设置。有两种发送模式:sendmail和smtp。如果您的NextCloud主机运行SMTP服务器,则可以选择sendmail模式。 如果要使用在另一台主机上运行的SMTP服务器,请选择SMTP模式并输入SMTP服务器地址和登录凭据,如下所示。选择STARTTLS进行加密。 有关如何设置电子邮件服务器,请查看以下教程。请注意,我强烈建议在全新干净的操作系统上运行iRedMail邮件服务器。在具有其他web应用程序的操作系统上安装iRedMail可能会失败,并可能破坏现有的应用程序。 如何使用iRedMail在Ubuntu20.04上轻松设置功能齐全的邮件服务器 如何从命令行重置Nextcloud用户密码 如果丢失了管理员帐户密码,并且没有在Nextcloud中设置电子邮件传递,则需要在服务器上运行以下命令来重置密码。用真实用户名替换nextcloud_用户名。 sudo -u www-data php /var/www/nextcloud/occ user:resetpassword nextcloud_username 还有其他一些命令可能会很有用。列出以下可用命令: sudo -u www-data php /var/www/nextcloud/occ 或 sudo -u www-data php /var/www/nextcloud/console.php 如何移动数据目录 如果需要移动NextCloud数据目录,有4个步骤可以完成。首先,需要使用cp命令将数据目录复制到新目录。例如,我的外部硬盘的安装点是/media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731。我在外部硬盘上创建了新的数据目录。 sudo mkdir /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ 然后我将原始数据目录复制到新的数据目录-R标志表示复制操作是递归的。 sudo cp /var/www/nextcloud-data/* /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R 你还需要复制文件。ocdata文件。 sudo cp /var/www/nextcloud-data/.ocdata /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ 接下来,需要将www数据(Apache用户)设置为所有者。 sudo chown www-data:www-data /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R 最后,您需要编辑配置。php文件。 sudo nano /var/www/nextcloud/config/config.php 找到以下行并更改datadirectory的值。 'datadirectory' => '/var/www/nextcloud-data', 保存并关闭文件。重新加载NextCloud网页,就完成了。 第7步:增加PHP内存限制 默认的PHP内存限制是128MB。NextCloud建议512MB以获得更好的性能。要更改PHP内存限制,请编辑PHP。ini文件。 sudo nano /etc/php/7.4/apache2/php.ini 找到下面这行。(第409行) memory_limit = 128M 更改值。 memory_limit = 512M 保存并关闭文件。或者,您可以运行以下命令来更改值,而无需手动打开文件。 sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/apache2/php.ini 然后重新加载Apache以使更改生效。 sudo systemctl reload apache2 如果您的服务器具有/etc/php7。4/fpm/php。ini文件,这意味着您的服务器也运行PHP-FPM。我还建议更改PHP-FPM中的内存限制。 sudo nano /etc/php/7.4/fpm/php.ini 找到memory_limit参数并更改其值。保存文件后,重新加载PHP-FPM以使更改生效。 sudo systemctl reload php7.4-fpm 第8步:为NextCloud配置Redis缓存 如果您进入下一步设置-&gt;概述页面,您可能会看到以下警告: No memory cache has been configured. To enhance your performance please configure a memcache if available. 我们将使用Redis为nextCloud启用内存缓存。运行以下命令从Ubuntu存储库安装Redis server。 sudo apt install redis-server 您可以通过以下方式检查版本: redis-server -v 样本输出: Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923 现在我们可以检查redis服务器是否正在运行。 systemctl status redis 提示:如果上述命令没有立即退出,您可以按Q键重新控制终端。 从上面的屏幕截图中,我们可以看到它正在运行,并且自动启动已启用。如果出于任何原因,它没有运行,请执行以下命令: sudo systemctl start redis-server 如果未启用启动时自动启动,则可以使用以下命令启用它: sudo systemctl enable redis-server 为了将Redis配置为nextCloud的缓存,我们需要安装与Redis接口的PHP扩展。 sudo apt install php-redis 检查扩展是否已启用。 php --ri redis 我们可以看到Redis扩展已启用。如果未启用,请运行以下命令: sudo phpenmod redis 如果redis扩展仍然未启用,您可能还需要重新加载Apache。 sudo systemctl reload apache2 接下来,编辑nextCloud配置文件。 sudo nano /var/www/nextcloud/config/config.php 在结尾上方添加以下行);线 'memcache.distributed' => '/OC/Memcache/Redis', 'memcache.local' => '/OC/Memcache/Redis', 'memcache.locking' => '/OC/Memcache/Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ), 保存并关闭文件。然后重启Apache和PHP-FPM。 sudo systemctl restart apache2 php7.4-fpm 现在转到NextCloud设置-&gt;再次浏览网页并刷新网页,有关内存缓存的警告应该消失。 添加缺少的索引 如果在NextCloud设置中看到以下消息-&gt;概览页面, The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. 然后需要手动添加这些索引。更改为Nextcloud webroot目录。 cd /var/www/nextcloud/ 运行以下命令向Nextcloud数据库添加索引。 sudo -u www-data php occ db:add-missing-indices 现在,如果刷新NextCloud设置-&gt;概述页面,关于缺少索引的警告应该消失。 转换为大整数 如果在NextCloud设置中看到以下消息-&gt;概览页面, Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. 然后需要手动更改列类型。更改为Nextcloud webroot目录。 cd /var/www/nextcloud/ 将Nextcloud更改为维护模式,以防止用户登录并进行更改。 sudo -u www-data php occ maintenance:mode --on 然后运行以下命令更改列类型。 sudo -u www-data php occ db:convert-filecache-bigint 完成后,关闭维护模式。 sudo -u www-data php occ maintenance:mode --off 现在,如果刷新NextCloud设置-&gt;概述页面,关于大整数的警告应该消失。 如何在Ubuntu 20.04桌面上安装NextCloud客户端 在Ubuntu20.04桌面上运行以下命令,从默认存储库安装客户端。 sudo apt install nextcloud-client Ubuntu 20.04上的NextCloud客户端 macOS、Windows、Android和iOS的客户端软件可以在Nextcloud下载页面上找到。 如何启用OnlyOffice/Collabora Online 默认情况下,Nextcloud附带对OnlyOffice的支持,OnlyOffice是一个在线办公套件,允许您直接从Nextcloud编辑文档、ppt和xls文件。我们只需要安装一个应用程序就可以使用这个功能。转到Nextcloud应用程序-&gt;办公室及;文本查找并启用社区文档服务器应用程序。 现在,当您在Nextcloud中单击add按钮(+)时,您将能够从Nextcloud服务器上创建Word、电子表格和演示文档。 然而,我发现这个应用程序不是很可靠。而社区版最多只允许20名用户。如果用户超过20,则需要购买企业版。还有另一个基于LibreOffice的开源在线办公套件Collabora online,它具有相同的功能,但不受用户数量的限制。您可以阅读以下文章,将其与Nextcloud集成。 将Collabora Online与Ubuntu上的Nextcloud与Docker集成 增加上传文件大小限制 如果使用ApachePHP模块运行PHP脚本,则没有上传文件大小限制。如果使用PHP-FPM运行PHP脚本,则需要更改文件大小限制。在PHP-FPM中上传的默认最大文件大小为2MB。要增加上传大小限制,请编辑PHP配置文件。 sudo nano /etc/php/7.4/fpm/php.ini 找到下面一行(第846行)。 upload_max_filesize = 2M 更改值,如下所示: upload_max_filesize = 1024M 保存并关闭文件。或者,您可以运行以下命令来更改值,而无需手动打开文件。 sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini 然后重启PHP-FPM。 sudo systemctl restart php7.4-fpm 启用HTTP/2协议 HTTP/2协议可以极大地提高页面加载速度。您可以阅读以下指南来在Apache上启用HTTP/2协议。 如何在Ubuntu 20.04上使用Apache启用HTTP/2协议 添加本地DNS条目 建议在Nextcloud服务器上编辑/etc/hosts文件,并添加以下条目,这样Nextcloud本身就不必查询公共DNS,从而提高整体稳定性。如果您的Nextcloud服务器无法解析Nextcloud。实例com主机名,则可能会遇到504网关超时错误。 127.0.0.1 localhost nextcloud.example.com /etc/hosts文件中的IP地址可以有多个主机名,因此如果在同一个框中安装了其他应用程序,也可以在同一行中添加其他主机名或子域,如下所示: 127.0.0.1 localhost focal ubuntu nextcloud.example.com collabora.example.com 使用Cron运行后台作业 默认情况下,Nextcloud使用AJAX在每次页面加载时执行一个任务。您可以使用更高效的系统cron服务来运行后台作业。转到Nextcloud设置-&gt;基本设置并选择Cron。 接下来,编辑www数据用户的crontab文件。 sudo -u www-data crontab -e 在该文件中添加以下行,这样cron作业将每5分钟运行一次。 */5 * * * * php7.4 -f /var/www/nextcloud/cron.php 保存并关闭文件。 故障排除提示 如果遇到错误,可以检查以下日志文件之一,以找出问题所在。 Apache错误日志:/var/log/apache2/error。日志 Nextcloud虚拟主机的Apache错误日志:/var/log/apache2/Nextcloud。错误 Nextcloud应用程序日志:/var/www/Nextcloud/data/Nextcloud。日志 例如,我的Nextcloud实例和/var/log/nginx/Nextcloud上有一个“内部服务器错误”。错误文件告诉我 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught OC/HintException: [0]: Memcache /OC/Memcache/Redis not available for local cache (Is the matching PHP module installed and enabled?) 事实证明,因为我在Ubuntu服务器上使用了ppa:ondrej/php-ppa,所以我还需要安装php7。除了php redis包之外,还有4-redis。 如果在nextcloud中看到以下错误消息。日志文件,您可以忽略它。 Could not detect any host in https:///data/htaccesstest.txt 升级Nextcloud 让你的Nextcloud服务器保持最新的安全和漏洞修复非常重要。阅读下面的教程,了解如何升级Nextcloud。 2种升级Nextcloud[命令行和GUI]的方法 收尾 我希望本教程能帮助您在带有Apache的Ubuntu 20.04服务器上安装NextCloud。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:595
  • 使用Let's Encrypt在Ubuntu 18.04/16.04上设置OpenConnect VPN服务器(ocserv)

    本教程将向您展示如何在Ubuntu 16.04/18.04上安装OpenConnect VPN服务器。OpenConnect VPN服务器,又名ocserv,是Cisco AnyConnnect VPN协议的开源实现,该协议在企业和大学中很受欢迎。AnyConnect是一种基于SSL的VPN协议,允许单个用户连接到远程网络。 OpenConnect VPN服务器的功能: 轻便快速。在我的测试中,我可以用OpenConnect VPN观看4k的YouTube。YouTube在我的国家被屏蔽了。 与Cisco AnyConnect客户端兼容 支持密码身份验证和证书身份验证 易于设置 我特别喜欢这样一个事实:与其他VPN技术相比,最终用户使用OpenConnect VPN非常简单方便。每当我在我的计算机上安装基于Debian的Linux发行版,并想快速解锁网站或隐藏我的IP地址时,我都会安装OpenConnect客户端,并通过两行命令连接到服务器: sudo apt install openconnect sudo openconnect -b vpn.mydomain.com gnutls bin软件包提供了创建您自己的CA和服务器证书的工具,但我们将获取并安装Let's Encrypt certificate。使用Let’s Encrypt证书的优点是,它是免费的,更容易设置,并且受VPN客户端软件的信任。 要求 要学习本教程,您需要一个VPS(虚拟专用服务器),可以自由访问被屏蔽的网站(在您的国家或互联网过滤系统之外)。我推荐Kamatera VPS,其特点是: 30天免费试用。 起价为每月4美元(1GB内存) 基于KVM的高性能VPS 世界各地的9个数据中心,包括美国、加拿大、英国、德国、荷兰、香港和ISRALL。 按照下面链接的教程在Kamatera创建Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 一旦你有了运行Ubuntu18.04的VPS,请按照下面的说明操作。 您还需要一个域名来为OpenConnect VPN启用HTTPS。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 第一步:在Ubuntu 16.04/18.04上安装OpenConnect VPN服务器 登录你的Ubuntu 16.04/18.04服务器。然后使用apt安装ocserv软件包,该软件包自16.04以来就包含在Ubuntu存储库中。 sudo apt install ocserv 一旦安装,OpenConnect VPN服务器将自动启动。您可以通过以下方式检查其状态: systemctl status ocserv 样本输出: ● ocserv.service - OpenConnect SSL VPN server Loaded: loaded (/lib/systemd/system/ocserv.service; enabled; vendor preset: enabled Active: active (running) since Thu 2017-11-30 05:45:07 UTC; 11s ago Docs: man:ocserv(8) Main PID: 19235 (ocserv-main) CGroup: /system.slice/ocserv.service ├─19235 ocserv-main └─19242 ocserv-secm 如果它没有运行,则可以从以下内容开始: sudo systemctl start ocserv 默认情况下,OpenConnect VPN服务器监听TCP和UDP端口443。如果web服务器正在使用它,则VPN服务器无法启动。稍后我们将在OpenConnect VPN配置文件中看到如何更改端口。 第2步:在Ubuntu 16.04/18.04服务器上安装Let's Encrypt Client(Certbot) 运行以下命令从官方PPA安装最新版本的certbot。如果要从PPA安装软件包,则需要使用通用软件属性。你的Ubuntu服务器上可能没有。 sudo apt install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt update sudo apt install certbot 要检查版本号,请运行 certbot --version 样本输出: certbot 0.31.0 步骤3:从Let's Encrypt获取TLS证书 独立插件 如果您的Ubuntu 16.04/18.04服务器上没有运行web服务器,并且您希望OpenConnect VPN服务器使用端口443,那么您可以使用独立插件从Let's Encrypt获取TLS证书。运行以下命令。别忘了为你的域名设置一个记录。 sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email your-email-address -d vpn.example.com 说明: certonly:获取证书,但不要安装它。 --standalone:使用standalone插件获取证书 --首选挑战http:执行http-01挑战以验证我们的域,该域将使用端口80。默认情况下,独立插件将使用端口443执行tls sni挑战。由于端口443已经被OpenConnect VPN服务器使用,我们需要更改默认行为。 --同意:同意让我们加密服务条款。 --电子邮件:电子邮件地址用于帐户注册和恢复。 -d:指定你的域名。 从下面的截图可以看到,我成功地获得了证书。 使用webroot插件 如果你的Ubuntu 16.04/18.04服务器有一个web服务器在监听端口80和443,你想让OpenConnect VPN服务器使用另一个端口,那么最好使用webroot插件来获取证书,因为webroot插件几乎适用于所有web服务器,我们不需要在web服务器中安装证书。 首先,您需要为vpn创建一个虚拟主机。实例通用域名格式。 阿帕奇 如果您使用的是Apache,那么 sudo nano /etc/apache2/sites-available/vpn.example.com.conf 并将以下行粘贴到文件中。 <VirtualHost *:80> ServerName vpn.example.com DocumentRoot /var/www/vpn.example.com </VirtualHost> 保存并关闭文件。然后创建web根目录。 sudo mkdir /var/www/vpn.example.com 将www数据(Apache用户)设置为web根目录的所有者。 sudo chown www-data:www-data /var/www/vpn.example.com -R 启用此虚拟主机。 sudo a2ensite vpn.example.com 重新加载Apache以使更改生效。 sudo systemctl reload apache2 创建并启用虚拟主机后,运行以下命令以获取使用webroot插件加密证书。 sudo certbot certonly --webroot --agree-tos --email your-email-address -d vpn.example.com -w /var/www/vpn.example.com Nginx 如果您使用的是Nginx,那么 sudo nano /etc/nginx/conf.d/vpn.example.com.conf 将以下行粘贴到文件中。 server { listen 80; server_name vpn.example.com; root /var/www/vpn.example.com/; location ~ /.well-known/acme-challenge { allow all; } } 保存并关闭文件。然后创建web根目录。 sudo mkdir -p /var/www/vpn.example.com 将www数据(Nginx用户)设置为web根目录的所有者。 sudo chown www-data:www-data /var/www/vpn.example.com -R 重新加载Nginx以使更改生效。 sudo systemctl reload nginx 创建并启用虚拟主机后,运行以下命令以获取使用webroot插件加密证书。 sudo certbot certonly --webroot --agree-tos --email your-email-address -d vpn.example.com -w /var/www/vpn.example.com 第4步:编辑OpenConnect VPN服务器配置文件 编辑ocserv配置文件。 sudo nano /etc/ocserv/ocserv.conf 首先,配置密码身份验证。默认情况下,通过PAM(可插拔认证模块)进行密码认证是启用的,这允许您使用Ubuntu系统帐户从VPN客户端登录。可以通过注释掉以下行来禁用此行为。 auth = "pam[gid-min=1000]" 如果我们希望用户使用单独的VPN帐户而不是系统帐户登录,我们需要添加以下行以启用密码文件的密码身份验证。 auth = "plain[passwd=/etc/ocserv/ocpasswd]" 编辑完这个配置文件后,我们将看到如何使用ocpasswd工具生成/etc/ocserv/ocpasswd文件,其中包含用户名和编码密码的列表。 注意:Ocserv支持客户端证书身份验证,但我们来加密它不会颁发客户端证书。您需要设置自己的CA来颁发客户端证书。 接下来,如果您不希望ocserv使用TCP和UDP端口443,请找到以下两行并更改端口号。否则就别管他们。 tcp-port = 443 udp-port = 443 然后找出下面两行。我们需要改变它们。 server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem server-key = /etc/ssl/private/ssl-cert-snakeoil.key 将默认设置替换为让我们加密服务器证书和服务器密钥文件的路径。 server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem 然后,设置客户端的最大数量。默认值为16。设置为零表示无限。 max-clients = 16 设置用户可以同时登录的设备数量。默认值为2。设置为零表示无限。 max-same-clients = 2 接下来,找到下面这行。将false更改为true以启用MTU发现,这可以优化VPN性能。 try-mtu-discovery = false 之后,将默认域设置为vpn。实例通用域名格式。 default-domain = vpn.example.com 默认情况下,IPv4网络配置如下所示。这将导致问题,因为大多数家庭路由器还将IPv4网络范围设置为192.168.1.0/24。 ipv4-network = 192.168.1.0 ipv4-netmask = 255.255.255.0 我们可以使用另一个专用IP地址范围(10.10.10.0/24)来避免IP地址冲突,因此将ipv4网络的值更改为 ipv4-network = 10.10.10.0 现在取消注释下面这行,通过VPN隧道所有DNS查询。 tunnel-all-dns = true 更改DNS解析程序地址。你可以使用谷歌的公共DNS服务器。 dns = 8.8.8.8 注意:在同一台服务器上运行自己的DNS解析程序是一种很好的做法,尤其是如果您是VPN提供商。如果在同一台服务器上运行DNS解析程序,请将DNS指定为 dns = 10.10.10.1 10.10.10.1是VPN LAN中OpenConnect VPN服务器的IP地址。这将稍微加快客户端的DNS查找,因为VPN服务器和DNS解析程序之间的网络延迟已消除。 然后注释掉所有路由参数(在下面四行的开头添加#符号),这将把服务器设置为客户端的默认网关。 route = 10.10.10.0/255.255.255.0 route = 192.168.0.0/255.255.0.0 route = fef4:db8:1000:1001::/64 no-route = 192.168.5.0/255.255.255.0 保存并关闭文件,然后重新启动VPN服务器,以使更改生效。 sudo systemctl restart ocserv 步骤5:修复DTLS握手失败 在Ubuntu16.04和Ubuntu18.04上,ocserv守护程序ocserv。套接字不尊重配置文件中的“侦听主机”值,这将在客户端连接到VPN服务器时导致以下错误。 DTLS handshake failed: Resource temporarily unavailable, try again. 要修复此错误,我们需要编辑ocserv。服务文件。我们首先将/lib/systemd/system/directory中的原始文件复制到/etc/systemd/system/directory,然后对其进行编辑,因为我们不希望新版本的ocserv包覆盖我们的修改。(要了解有关systemd unit文件的更多信息,请运行man systemd.unit。) sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv.service sudo nano /etc/systemd/system/ocserv.service 注释掉下面两行。 Requires=ocserv.socket Also=ocserv.socket 保存并关闭文件。然后重新加载系统D sudo systemctl daemon-reload 停止ocserv。套接字并禁用它。 sudo systemctl stop ocserv.socket sudo systemctl disable ocserv.socket 重新启动ocserv服务。 sudo systemctl restart ocserv.service 如果ocserv systemd服务无法重新启动,它将不会输出任何消息,因此我们需要检查状态以确保它实际运行。 systemctl status ocserv 第6步:创建VPN帐户 现在使用ocpasswd工具生成VPN帐户。 sudo ocpasswd -c /etc/ocserv/ocpasswd username 系统将要求您为用户设置密码,信息将保存到/etc/ocserv/ocpasswd文件中。要重置密码,只需再次运行上述命令。 第7步:启用IP转发 为了让VPN服务器在VPN客户端和外部世界之间路由数据包,我们需要启用IP转发。编辑sysctl。conf文件。 sudo nano /etc/sysctl.conf 在该文件末尾添加以下行。 net.ipv4.ip_forward = 1 保存并关闭文件。然后使用下面的命令应用更改。p选项将从/etc/sysctl加载sysctl设置。conf文件。此命令将在系统重新启动时保留所做的更改。 sudo sysctl -p 第8步:为IP伪装配置防火墙 我们需要在服务器防火墙中设置IP伪装,以便服务器成为VPN客户端的虚拟路由器。我将使用UFW,它是iptables防火墙的前端。在Ubuntu上通过以下方式安装UFW: sudo apt install ufw 首先,需要允许SSH通信。 sudo ufw allow 22/tcp 接下来,找到服务器主网络接口的名称。 ip addr 正如你所看到的,它在我的Ubuntu服务器上被命名为ens3。 要配置IP伪装,我们必须在UFW配置文件中添加iptables命令。 sudo nano /etc/ufw/before.rules 默认情况下,过滤器表有一些规则。在该文件末尾添加以下行。将ens3替换为您自己的网络接口名称。 # NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o ens3 -j MASQUERADE # End each table with the 'COMMIT' line or these rules won't be processed COMMIT 在Nano文本编辑器中,按Ctrl+W,然后按Ctrl+V,可以转到文件的末尾。 以上几行将在nat表的后路由链的末尾附加(-A)条规则。它将把你的虚拟专用网络与互联网连接起来。同时也会对外界隐藏你的人际网络。所以互联网只能看到VPN服务器的IP,却看不到VPN客户端的IP,就像你的家庭路由器隐藏了你的私人家庭网络一样。 默认情况下,UFW禁止数据包转发。我们可以允许为我们的专用网络转发。在该文件中找到ufw BEFORT forward链,并添加以下3行,如果源IP或目标IP在10.10.10.0/24范围内,这3行将接受数据包转发。 # allow forwarding for trusted network -A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT -A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT 保存并关闭文件。然后启用UFW。 sudo ufw enable 如果以前启用过UFW,那么可以使用systemctl重新启动UFW。 sudo systemctl restart ufw 现在,如果使用以下命令列出NAT表的后路由链中的规则: sudo iptables -t nat -L POSTROUTING 你可以看到化装规则。 步骤9:打开防火墙中的443端口 运行以下命令打开TCP和UDP端口443。如果您为ocserv配置了不同的端口,则将443更改为您配置的端口。 sudo ufw allow 443/tcp sudo ufw allow 443/udp 现在,OpenConnect VPN服务器已准备好接受客户端连接。 如果指定10.10.10.1作为VPN客户端的DNS服务器,则必须允许VPN客户端使用以下UFW规则连接到端口53。 sudo ufw insert 1 allow in from 10.10.10.0/24 您还需要编辑绑定DNS服务器的配置,以允许VPN客户端发送如下递归DNS查询。 allow-recursion { 127.0.0.1; 10.10.10.0/24; }; 如何在Ubuntu 16.04/18.04桌面上安装和使用OpenConnect VPN客户端 运行以下命令在Ubuntu桌面上安装OpenConnect VPN命令行客户端。 sudo apt install openconnect 您可以从下面的命令行连接到VPN-b标志将使其在连接建立后在后台运行。 sudo openconnect -b vpn.example.com:port-number 您将被要求输入VPN用户名和密码。如果成功建立连接,您将看到以下消息。 Got CONNECT response: HTTP/1.1 200 CONNECTED CSTP connected. DPD 90, Keepalive 32400 Connected tun0 as 192.168.1.139, using SSL Established DTLS connection (using GnuTLS). Ciphersuite (DTLS1.2)-(RSA)-(AES-256-GCM). 要停止连接,请运行: sudo pkill openconnect 要以非交互方式运行客户端,请使用以下语法。 echo -n password | sudo openconnect -b vpn.example.com -u username --passwd-on-stdin 如果要使用Network Manager管理VPN连接,则还需要安装这些软件包。 sudo apt install network-manager-openconnect network-manager-openconnect-gnome 如果您成功连接到VPN服务器,但您的公共IP地址没有更改,这是因为IP转发或IP伪装不起作用。我的iptables命令有一次输入错误,导致我的电脑无法浏览互联网。 系统启动时自动连接 为了让OpenConnect VPN客户端在启动时自动连接到服务器,我们可以创建一个systemd服务单元。 sudo nano /etc/systemd/system/openconnect.service 将以下行放到文件中。替换红色文本。 [Unit] Description=OpenConnect VPN Client After=network-online.target systemd-resolved.service Wants=network-online.target [Service] Type=simple ExecStart=/bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -u username --passwd-on-stdin' ExecStop=/bin/bash -c '/sbin/resolvconf -d tun0 && /usr/bin/pkill -SIGINT openconnect && /sbin/ip route flush 12.34.56.78' Restart=always RestartSec=2 [Install] WantedBy=multi-user.target 保存并关闭文件。然后启用此服务,使其在引导时启动。 sudo systemctl enable openconnect.service 文件内容说明: After=网络在线。目标系统已解决。服务和需求=网络在线。目标使此服务在网络启动后运行。我们想要openconnect。系统故障排除后,服务将启动。服务,因为这将确保OpenConnect设置的DNS服务器地址不会被systemd覆盖。服务 实际上,这项服务仍然可以在网络开通之前运行。如果服务失败,我们添加Restart=always和RestartSec=2以在2秒后重新启动该服务。 Systemd无法识别管道重定向,因此在ExecStart指令中,我们用单引号将comand括起来,并使用Bash shell运行它。 由于OpenConnect VPN客户端将作为在后台运行的systemd服务运行,因此不需要在OpenConnect命令中添加-b标志。 ExecStop指令用于停止VPN连接。首先,我们使用resolvconf命令恢复DNS服务器设置。tun0是TUN设备的默认名称,可以通过ip link命令看到。然后我们使用pkill命令停止openconenct进程。最后,我们使用ip route flush命令恢复Linux内核路由表。将12.34.56.78替换为VPN服务器的IP地址。 要立即启动此Systemd服务,请运行 sudo systemctl start openconnect 要停止此Systemd服务,请运行 sudo systemctl stop openconnect VPN连接中断时自动重启 有时VPN连接会由于各种原因而中断。要使VPN客户端自动重新启动,请编辑根用户的crontab文件。 sudo crontab -e 在该文件末尾添加以下行。 * * * * * ping -c 10 10.10.10.1 > /dev/null || systemctl restart openconnect 此Cron作业将每分钟运行一次,以检查VPN客户端是否可以ping VPN服务器的专用IP地址(10.10.10.1)。如果ping失败,则将执行右侧的命令以重新启动VPN客户端。|是Bash中的OR运算符。只有当左边的命令返回错误时,它才会执行右边的命令。 保存并关闭文件。 适用于Windows和MacOS的OpenConnect GUI客户端 它们可以从OpenConnect GUI Github页面下载。 速度 OpenConnect VPN非常快。我可以用它在YouTube上观看4k视频。如您所见,连接速度为63356kbps,相当于61Mbit/s。 这是速度测试的测试结果。网 速度优化 OpenConnect默认使用TLS over UDP协议(DTLS)来实现更快的速度,但UDP无法提供可靠的传输。TCP比UDP慢,但可以提供可靠的传输。我可以给你的一个优化技巧是禁用DTL,使用标准TLS(通过TCP),然后启用TCP BBR以提高TCP速度。 要禁用DTL,请在ocserv配置文件中注释掉以下行(在开头添加#符号)。 udp-port = 443 保存并关闭文件。然后重启ocserv服务。 sudo systemctl restart ocserv.service 要启用TCP BBR,请查看以下教程。 如何通过启用TCP BBR轻松提升Ubuntu网络性能 在我的测试中,启用TCP BBR的标准TLS比DTL快两倍。 自动续订让我们加密证书 编辑root用户的crontab文件。 sudo crontab -e 在文件末尾添加以下行。VPN服务器需要重新启动ocserv服务才能获取新的证书和密钥文件。 @daily certbot renew --quiet && systemctl restart ocserv 故障排除提示 请注意,如果您使用的是OpenVZ VPS,请确保在VPS控制面板中启用TUN虚拟网络设备。 如果遇到任何问题,请查看OpenConnect VPN服务器日志。 sudo journalctl -xe -u ocserv.service 我发现如果我把443端口换成另一个端口,中国的防火长城会阻止这个VPN连接。 如果ocserv告诉您它无法加载/etc/ocserv/ocserv。conf文件,您可以停止ocserv。 sudo systemctl stop ocserv 然后在前台运行它,并启用调试。 sudo /usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf --debug=10 然后,输出可能会给您一些ocserv不工作的线索。 让OpenConnect VPN服务器和web服务器同时使用端口443 请阅读以下文章: 运行OpenConnect VPN服务器&amp;Apache/Nginx与HAProxy在同一个盒子上 如何在ocserv中禁用TLS 1.0和TLS 1.1 PCI理事会在2018年6月30日否决了TLS 1.0,主流网络浏览器将在2020年禁用TLS 1.0和TLS 1.1。对于VPN服务器,我们也应该这样做。编辑主配置文件。 sudo nano /etc/ocserv/ocserv.conf 找到以下行: tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0" 要在OpenConnect VPN服务器中禁用TLS 1.0和TLS 1.1,只需添加-VERS-TLS1。0和-VERS-TLS1。1号排队。 tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1" 保存并关闭文件。然后重启ocserv。 sudo systemctl restart ocserv 现在ocserv只接受TLS 1.2。有关在ocserv中配置TLS参数的更多信息,请参阅GnuTLS优先级字符串。 要检查OpenConnect VPN服务器是否支持TLS 1.0,请运行以下命令。 openssl s_client -connect vpn.your-domain.com:443 -tls1 并检查TLS 1.1 openssl s_client -connect vpn.your-domain.com:443 -tls1_1 如果在输出中看到以下消息,则表示不支持TLS版本。 New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported 我试图启用TLS 1.3,但Ubuntu上的ocserv包还不支持它。 每用户或每组配置 Ocserv允许按用户和按组配置。要启用此功能,请取消注释/etc/ocserv/ocserv中的以下两行。conf文件。 config-per-user = /etc/ocserv/config-per-user/ config-per-group = /etc/ocserv/config-per-group/ 保存并关闭文件。然后创建每个用户和每个组的配置目录。 sudo mkdir /etc/ocserv/config-per-user/ sudo mkdir /etc/ocserv/config-per-group/ 接下来,您可以在这两个目录下创建一个文件。例如,创建user1文件以允许对user1进行自定义配置。 sudo nano /etc/ocserv/config-per-user/user1 还可以创建group1文件,以允许对名为group1的组进行自定义配置。 sudo nano /etc/ocserv/config-per-group/group1 您可以在文件中添加如下内容。 route = 10.10.10.0/255.255.255.0 这意味着,在user1连接到此VPN服务器后,只有到10.10.10.0/24网络的流量将通过VPN服务器路由。到其他IP地址的流量通过原始网关路由。我使用这个技巧允许我的另一个VPS(虚拟专用服务器)连接到此VPN服务器,而不会中断正常通信,因此我的VPN服务器的tun设备(vpns0)始终处于打开状态,这意味着我的VPN服务器将始终具有专用IP地址10.10.10.1。 保存并关闭文件。重新启动ocserv以使更改生效。 sudo systemctl restart ocserv 虚拟主机 要在ocserv中添加新的虚拟主机,首先需要使用步骤3中的方法为新的虚拟主机获取TLS证书。然后编辑ocserv配置文件。 sudo nano /etc/ocserv/ocserv.conf 转到这个文件的底部。在Nano文本编辑器中,可以按Ctrl+W,然后按Ctrl+V跳转到文件底部。添加以下行。更换vpn2。实例com与第二个虚拟主机的主机名。 [vhost:vpn2.example.com] #Allow password authentication and certificate authentication enable-auth = "plain[passwd=/etc/ocserv/ocpasswd]" auth = "certificate" tcp-port = 443 #uncomment the two lines if ocserv runs behind HAProxy. #listen-host = 127.0.0.1 #listen-proxy-proto = true # SSL/TLS configuration ca-cert = /etc/ocserv/ssl/ca-cert.pem server-cert = /etc/letsencrypt/live/vpn2.example.com/fullchain.pem server-key = /etc/letsencrypt/live/vpn2.example.com/privkey.pem cert-user-oid = 0.9.2342.19200300.100.1.1 #Networking configuration. Use a different network range for this virtual host. device = vpns ipv4-network = 10.10.20.0 ipv4-netmask = 255.255.255.0 route = default dns = 8.8.8.8 tunnel-all-dns = true compression = true max-clients = 0 max-same-clients = 0 try-mtu-discovery = true idle-timeout=1200 mobile-idle-timeout=2400 config-per-user = /etc/ocserv/config-per-user/ config-per-group = /etc/ocserv/config-per-group/ 保存并关闭文件。然后重启ocserv。 sudo systemctl restart ocserv 编辑UFW配置文件。 sudo nano /etc/ufw/before.rules 在该文件中找到ufw BEFORT forward链,并添加以下两行,如果源IP或目标IP在10.10.20.0/24范围内,这两行将接受数据包转发。 -A ufw-before-forward -s 10.10.20.0/24 -j ACCEPT -A ufw-before-forward -d 10.10.20.0/24 -j ACCEPT 保存并关闭文件。然后重启UFW。 sudo systemctl restart ufw 请注意,ocserv守护进程可能会告诉您,虚拟主机的一些参数将被忽略。然而,我发现一些被忽略的参数实际上是需要的。例如,如果从虚拟主机中删除device=vpns行,则在建立到虚拟主机的VPN连接时可能会遇到以下错误。 VPN service unavailable; reason: Server configuration error VPN服务器将在日志中生成以下错误消息。 no networks are configured; rejecting client 还要注意,iOS上的AnyConnect VPN客户端不支持TLS SNI,因此iOS用户将连接到默认虚拟主机。 如何运行ocserv的多个实例 一个ocserv进程只能绑定到服务器上的一个TCP或UDP端口。如果希望允许ocserv绑定到多个TCP或UDP端口,则需要运行多个ocserv进程。这很简单。复制/lib/systemd/system/ocserv。新文件的服务。 sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv2.service 然后编辑新文件。 sudo nano /etc/systemd/system/ocserv2.service 改变 /etc/ocserv/ocserv.conf 到 /etc/ocserv/ocserv2.conf 保存并关闭文件。接下来,您可以编辑/etc/ocserv/ocserv2。conf文件并添加自定义配置。完成后,启动第二个ocserv服务。 sudo systemctl start ocserv2 收尾 就这样!我希望本教程能帮助您在Ubuntu 16.04和Ubuntu 18.04上安装和配置OpenConnect VPN。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门?

    2022.03.23 浏览:724
  • 使用DNSdist在Ubuntu上设置DNS over HTTPS(DoH)解析器

    本教程将向您展示如何使用DNSdist在Ubuntu上设置自己的DNS over HTTPS(DoH)解析器,这样您的DNS查询就可以被加密并防止被窥探。 什么是HTTPS上的DNS?为什么它很重要 DNS(域名系统)负责将域名转换为IP地址。它是1987年设计的,没有考虑安全或隐私。默认情况下,DNS查询不加密。它们以明文形式在网络上发送,中间实体可以利用它们。例如,中国的防火长城(GFW)使用一种名为DNS缓存毒药的技术对中国互联网进行审查。(他们还使用其他方法,这超出了本文的范围。) GFW检查发送到中国境外DNS服务器的每个DNS查询。由于纯文本DNS协议基于UDP,这是一种无连接协议,GFW可以欺骗客户端IP和服务器IP。当GFW在其阻止列表中找到域名时,它会更改DNS响应。例如,如果一个中国互联网用户想要访问谷歌。GFW向用户的DNS解析程序返回位于中国的IP地址,而不是谷歌的真实IP地址。然后DNS解析程序将假IP地址返回给用户的计算机,因此用户无法访问谷歌。通用域名格式。 HTTPS是加密纯文本HTTP网页的标准方式。使用HTTPS上的DNS(DoH),您的DNS查询将被加密,因此第三方无法看到您的DNS查询。 为什么要运行自己的DoH解析器? 现在已经有一些公共DNS解析器,比如1.1.1.1和9.9.9.9,它们支持HTTPS上的DNS,所以如果您没有技能或时间运行自己的DNS,您可以使用它们。从Firefox版本61开始,您可以在浏览器设置中启用DNS over HTTPS,这是互联网安全和隐私方面的一大进步。Firefox默认使用Cloudflare解析器(1.1.1.1)。然而,一些人认为这允许Cloudflare收集Firefox用户的信息。他们似乎比Cloudflare更信任他们的ISP。但我认为,如果你对隐私心存疑虑,你应该运行自己的DoH解析器,这样Cloudflare和ISP都不能监视你。 DoH vs DoT 除了HTTPS上的DNS,还有另一个协议也旨在加密DNS查询。它被称为TLS上的DNS(DoT)。之前我在Ubuntu桌面上写了一篇关于通过TLS使用DNS的指南,但现在我正在切换到通过HTTPS使用DNS。 对于生活在中国等互联网审查严格的国家的人来说,使用DoH更为有利。 DoT在TCP端口853上运行,该端口很容易被国家防火墙屏蔽。 DoH在TCP端口443上运行,这是HTTPS网站的标准端口,这使得DoH非常难以阻止,因为如果TCP端口443被阻止,那么几乎所有HTTPS网站也将被阻止。 我的DoH解析器运行在中国境外的VPS(虚拟专用服务器)上,中国的防火长城无法拦截我的DNS查询。我甚至可以将我的DoH解析器的IP地址隐藏在Cloudflare CDN(内容交付网络)后面。 DoH的另一个优点是,它允许web应用程序通过现有的浏览器API访问DNS信息,因此不需要存根解析器。 主要DNS解析程序中的DoH支持 BIND将在9.17版本中支持DoH,该版本仍在开发中。Ubuntu 20.04和21.04存储库随BIND 9.16一起发布。 自版本4.0.0以来,结分解器支持DoH。目前的最新版本是5.11。它有Debian、Ubuntu、CentOS和Fedora的官方存储库。 Unbound从1.12.0版开始支持DoH。 PowerDNS递归程序目前不支持DoH。 实际上,我更喜欢用DNSdist运行DoH解析器,它在1.4.0版中增加了对DoH的支持。目前的最新版本是1.5。它有Debian、Raspbian、Ubuntu和CentOS的官方存储库。DNSdist是一个DNS负载平衡器,可以将DNS查询转发到后端DNS解析程序,因此无论您使用的是哪个DNS解析程序,都可以使用DNSdist运行自己的DoH服务器。DNSdist由PowerDNS团队开发。 先决条件 假设您在Ubuntu服务器上运行DNS解析器。你可以使用任何DNS解析程序(绑定、结解析、未绑定…)我个人使用绑定。 在Ubuntu 16.04/18.04上设置自己的BIND9 DNS解析器 在Ubuntu 20.04上设置自己的BIND9 DNS解析器 一旦DNS解析程序启动并运行,请按照以下说明操作。 第一步:在Ubuntu服务器上安装DNSdist 如果使用非LTS Ubuntu,则必须从默认存储库(sudo apt install dnsdist)安装dnsdist。如果您使用Ubuntu LTS,建议从上游存储库安装DNSdist,这样您将拥有最新的稳定版本。首先,需要为DNSdist创建一个源列表文件。 Ubuntu 20.04 echo“deb[arch=amd64] main“| sudo-tee/etc/apt/sources.list.d/pdns.list Ubuntu 18.04 echo“deb[arch=amd64] main“| sudo-tee/etc/apt/sources.list.d/pdns.list Ubuntu 16.04 echo“deb[arch=amd64] main“| sudo tee/etc/apt/sources.list.d/pdns.list 接下来,我们为DNSdist创建一个首选项文件来锁定包,这样就不会意外地从另一个存储库安装DNSdist。 sudo nano/etc/apt/preferences。d/dnsdist 将以下行添加到文件中。 包装:dnsdist*密码:origin repo。powerdns。com Pin优先级:600 保存并关闭文件。然后运行以下命令导入PowerDNS公钥,以便APT软件包管理器可以验证从该存储库下载的软件包的相互关系。 卷曲https://repo.powerdns.com/FD380FBB-pub.asc| sudo apt按键添加- 接下来,更新存储库列表并安装DNSdist。 sudo apt更新sudo apt安装dnsdist 默认情况下,DNSdist尝试绑定到端口53。因为您在端口53上有一个现有的DNS解析器,比如BIND监听,dnsdist。服务将无法启动。 由于我们只是部署一个DoH解析器,并不关心DNS负载平衡,所以我们可以将DNSdist配置为在另一个端口上侦听。编辑DNSdist配置文件。 sudo nano/etc/dnsdist/dnsdist。形态 此文件中没有内容。现在,只需在该文件中添加以下行,DNSdist就会监听TCP和UDP端口5353,而不是端口53。 setLocal(“127.0.0.1:5353”) 保存并关闭文件。然后重新启动DNSdist。 sudo systemctl restart dnsdist 检查它的状态。 systemctl状态dnsdist 它应该处于活动状态(正在运行)。 第2步:在Ubuntu服务器上安装Let's Encrypt Client(Certbot) HTTPS上的DNS需要在服务器端安装TLS证书。我们将获取并安装Let's Encrypt证书。使用Let’s Encrypt证书的优点是,它是免费的,更容易设置,并且受客户端软件的信任。 运行以下命令从默认的Ubuntu存储库安装Let's Encrypt client(certbot)。 sudo apt安装certbot 要检查版本号,请运行 certbot——版本 样本输出: certbot 0.40.0 步骤3:从Let's Encrypt获取受信任的TLS证书 我建议使用standalone或webroot插件获取dnsdist的TLS证书。 独立插件 如果你的Ubuntu服务器上没有运行web服务器,你可以使用独立插件从Let's Encrypt获取TLS证书。为子域(doh.example.com)创建DNS记录,然后运行以下命令。 sudo certbot certonly--独立--首选挑战http--同意tos--电子邮件[电子邮件&#160;受保护]-d doh。实例通用域名格式 哪里: certonly:获取证书,但不要安装它。 --standalone:使用standalone插件获取证书 --首选挑战http:执行http-01挑战以验证我们的域,该域将使用端口80。 --同意:同意让我们加密服务条款。 --电子邮件:电子邮件地址用于帐户注册和恢复。 -d:指定你的域名。 从下面的截图可以看到,我成功地获得了证书。

    2022.03.23 浏览:2210
  • 如何在Ubuntu上使用Nginx轻松设置DNS over TLS解析器

    本教程将向您展示如何使用Nginx在Ubuntu上设置自己的DNS over TLS(DoT)解析器,这样您的DNS查询就可以被加密,并免受窥探。 什么是DNS over TLS,为什么它很重要 DNS(域名系统)负责将域名转换为IP地址。它是1987年设计的,没有考虑安全或隐私。默认情况下,DNS查询不加密。它们以明文形式在网络上发送,中间实体可以利用它们。例如,中国的防火长城(GFW)使用一种名为DNS缓存毒药的技术对中国互联网进行审查。(他们还使用其他方法,这超出了本文的范围。) GFW检查发送到中国境外DNS服务器的每个DNS查询。由于纯文本DNS协议基于UDP,这是一种无连接协议,GFW可以欺骗客户端IP和服务器IP。当GFW在其阻止列表中找到域名时,它会更改DNS响应。例如,如果一个中国互联网用户想要访问谷歌。GFW向用户的DNS解析程序返回位于中国的IP地址,而不是谷歌的真实IP地址。然后DNS解析程序将假IP地址返回给用户的计算机,因此用户无法访问谷歌。通用域名格式。 TLS上的DNS意味着DNS查询通过使用TLS加密的安全连接发送,这与加密HTTP流量的技术相同。 为什么要运行自己的点解析器? 现在已经有一些公共DNS解析器,比如1.1.1.1和9.9.9.9,它们支持TLS上的DNS,所以如果您没有技能或时间运行自己的DNS,您可以使用它们。然而,一些人认为,这仍然允许大型DNS服务提供商收集用户信息。他们似乎更信任他们的ISP。但我认为,如果你对隐私心存疑虑,你应该运行自己的点解析程序,这样大型DNS服务提供商和ISP都不能监视你。 目前,并非所有DNS解析程序(绑定、解除绑定、结解析程序、PowerDNS递归程序等)都支持TLS上的DNS。我将向您展示如何为您现有的DNS解析程序设置Nginx TLS代理,以提供点服务,而不是为特定的解析程序制作指南,因此无论您使用的是什么DNS解析程序,都可以遵循本教程。 先决条件 假设您在Ubuntu服务器上运行DNS解析器。您可以使用任何DNS解析程序(绑定、未绑定、结解析程序…)我个人使用绑定。 在Ubuntu 16.04/18.04上设置自己的BIND9 DNS解析器 在Ubuntu 20.04上设置自己的BIND9 DNS解析器 您还需要一个域名,因为DNS客户端需要与我们的DNS解析器建立安全的TLS连接。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 一旦满足上述要求,请按照以下说明操作。 第一步:在Ubuntu服务器上安装Nginx 这很容易做到。只需运行以下命令。 sudo apt安装nginx 第2步:从Let's Encrypt获取受信任的TLS证书 DNS over TLS要求在服务器端安装TLS证书。我们将获取并安装Let's Encrypt证书。使用Let’s Encrypt证书的优点是,它是免费的,更容易设置,并且受客户端软件的信任。 运行以下命令从默认的Ubuntu存储库安装Let's Encrypt client(certbot)。 sudo apt安装certbot 要获得Let's Encrypt TLS证书,我们可以使用以下命令创建一个Nginx虚拟主机。修理点。实例使用你自己的域名。别忘了为这个子域创建DNS记录。 sudo nano/etc/nginx/conf.d/dot。实例通用域名格式。形态 复制以下文本并将其粘贴到虚拟主机文件中。 服务器{listen 80;server_name dot.example.com;root/usr/share/nginx/html/;location ~/.well-known/acme challenge{allow all;} 保存并关闭文件。重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 创建并启用虚拟主机后,运行以下命令以获取使用webroot插件加密证书。 sudo certbot certonly--webroot--agree tos--email[email&#160;protected]-d dot。实例com-w/usr/share/nginx/html/ 步骤3:在Nginx中通过TLS代理创建DNS 编辑Nginx主配置文件。 sudo nano/etc/nginx/nginx。形态 在该文件底部添加以下行。请注意,它们需要放在http上下文之外。 流{#DNS上游池上游DNS{zone DNS 64k;服务器127.0.0.1:53;}#解密服务器的点服务器{listen 853 ssl;ssl_certificate/etc/letsencrypt/live/DoT.example.com/fullchain.pem;ssl_certificate_key/etc/letsencrypt/live/DoT.example.com/privkey.pem;代理通过dns;} 如何在Ubuntu上使用Nginx轻松设置DNS over TLS解析器 Save and close the file. Then test Nginx configuration and restart. sudo nginx -t sudo systemctl restart nginx If there’s a firewall running on Ubuntu server, you need to open TCP port 853. For example, if you use the UFW firewall, run the following command. sudo ufw allow 853/tcp Since we are using DNS over TLS, there’s no need to worry about DNS amplification attack. Step 5: Configure the Stubby DoT Client on Ubuntu Desktop Stubby is an open-source DNS stub resolver developed by the getdns team. A stub resolver is a small DNS client on the end-user’s computer that receives DNS requests from applications such as Firefox and forward requests to a recursive resolver like 1.1.1.1 or 8.8.8.8. Stubby is special in that it supports DNS over TLS. By default, it will only send DNS requests encrypted. Install Stubby on Ubuntu desktop from the default repository. sudo apt install stubby Once installed, stubby runs in the background. check its status with: systemctl status stubby Stubby listens on TCP and UDP port 53 of localhost (127.0.0.1). By default, Stubby uses third-party DNS over TLS resolvers. We need to configure it to use our own. sudo nano /etc/stubby/stubby.yml Scroll down to the upstream_recursive_servers: section and add the following text above other DNS servers. Replace 12.34.56.78 with the IP address of your DoT resolver. # My Own DNS over TLS resolver - address_data: 12.34.56.78 tls_auth_name: "dot.example.com" Then find the following line: round_robin_upstreams: 1 Change 1 to 0. This will make stubby always use your own DNS over TLS resolver. If it’s not available, stubby will use other DNS servers. Save the file and restart stubby for the changes to take effect. sudo systemctl restart stubby Step 6: Configure Ubuntu Desktop to Use Stubby Although Stubby is running, it’s not being used by the operating system. Click the Network Manager icon on the upper-right corner of your desktop. Then select wired settings. (If you are using Wi-fi, select Wi-fi settings.) Click the gear button. Select IPv4 tab, then in DNS settings, switch Automatic to OFF, which will prevent your Ubuntu system from getting DNS server address from your router. Enter 127.0.0.1 in the DNS field. Click Apply button to save your changes. Then restart NetworkManager for the changes to take effect. sudo systemctl restart NetworkManager Once you are reconnected, you can see that your Ubuntu system is now using 127.0.0.1 as the DNS server in the Details tab. How to Check if Your DNS Traffic is Encrypted We can use WireShark to monitor DNS traffic. Install WireShark on Ubuntu desktop. sudo apt install wireshark If you are asked “Should non-superusers be able to capture packets?”, answer Yes. Once it’s installed, run the following command to add your user account to the wireshark group so that you can capture packets. sudo adduser your-username wireshark Log out and log back in for the changes to take effect. Then open WireShark from your application menu, select your network interface in WireShark. For example, my Ethernet interface name is enp5s0. Then enter port 853 as the capture filter. This will make WireShark only capture traffic on port 853, which is the port used by DNS over TLS. Click the button on the upper-left corner to start capturing. After that, in terminal window, run the following command to query domain name by using the dig utility. For instance, I can query the A record of my domain name. dig A linuxbabe.com Now you can see the captured DNS traffic in WireShark. Connections were made over TCP and encrypted with TLS, which is what we want. You should check if the Destination column includes the IP address of your DoT resolver. If DNS queries are sent without encryption, then the computer would contact DNS server on port 53. You can capture packets again with port 53 as the capture filter, but you won’t see any packets in WireShark, which means stubby is encrypting your DNS queries. Wrapping Up I hope this tutorial helped you set up a DNS over TLS resolver with Nginx on Ubuntu. You may also want to read: 使用DNSdist在Ubuntu上运行自己的DNS over HTTPS(DoH)解析器 As always, if you found this post useful, then subscribe to our free newsletter to get more tips and tricks. Take care ?

    2022.03.23 浏览:524
  • 在Debian/Ubuntu上的绑定解析程序中设置响应策略区域(RPZ)

    本教程将向您展示如何使用Debian/Ubuntu上的响应策略区域(RPZ)覆盖绑定DNS解析程序中的公共DNS记录。 什么是响应策略区? 响应策略区域(RPZ)允许DNS解析程序修改DNS记录。它最初是为了阻止访问危险网站而开发的。例如,如果计算机查询传播恶意软件的已知危险站点的IP地址,DNS解析程序可以返回127.0.0.1作为DNS响应,因此计算机无法连接到危险站点。这是最初的用例。因此,响应策略区域也称为DNS防火墙。 你可以用其他方式使用RPZ。例如 如果您在本地网络中拥有像Nextcloud这样的自托管服务,您可以使用RPZ将您的Nextcloud域(Nextcloud.your domain.com)指向本地IP地址,这样您就不必访问Internet,然后返回本地网络访问Nextcloud服务器。 家长可以使用RPZ阻止孩子访问色情网站。 你可以屏蔽不需要的广告。 我在VPS上安装了许多web应用程序。当该web应用程序不用于公共访问时,我只在BIND RPZ中添加DNS记录,不在我的域注册器中发布DNS记录以防止黑客攻击。 是的,您可以在本地计算机上的/etc/hosts文件中创建一个DNS条目来覆盖公共DNS记录,但它不能很好地扩展。此外,iOS和Android不允许您创建本地DNS条目。如果绑定DNS解析程序覆盖公共DNS记录,那么网络中使用绑定解析程序的所有设备都可以使用自定义DNS记录,这不是很好吗? 先决条件 为了学习本教程,假设您在Debian/Ubuntu服务器上运行了一个绑定DNS解析器。如果没有,请阅读以下教程之一来设置绑定解析器。 在Debian 10 Buster上设置自己的BIND9 DNS解析器 在Ubuntu 16.04/18.04上设置自己的BIND9 DNS解析器 在Ubuntu 20.04上设置自己的BIND9 DNS解析器 一旦绑定解析程序启动并运行,请按照以下说明操作。 如何在Debian/Ubuntu服务器上设置绑定响应策略区域 首先,编辑命名文件。conf.options文件。 sudo nano/etc/bind/named。形态选项 在选项{…}中添加以下行子句来启用响应策略区域。(第一行是评论。) //启用响应策略区域。响应策略{zone“rpz.local”;}; 保存并关闭文件。然后打开命名的。conf.local文件。 sudo nano/etc/bind/named。conf.local 在此文件中添加RPZ区域。 区域“rpz.local”{type master;file”/etc/bind/db.rpz.local”;允许查询{localhost;};允许转移{12.34.56.78;};}; 笔记: 在file指令中使用绝对路径而不是简单的文件名很重要,否则BIND会假定文件位于/var/cache/BIND/中。 RPZ区域应仅允许来自localhost的查询。您不需要添加本地网络客户端。 将12.34.56.78替换为从属绑定DNS解析程序的IP地址,该解析程序允许进行区域传输。如果只有一个DNS解析程序,可以像这样使用localhost:allow transfer{localhost;}; 保存并关闭文件。然后我们需要创建区域文件。我们可以使用区域模板文件,而不是从头创建区域文件。复制数据库的内容。空到一个新文件。 sudo cp/etc/bind/db。空/etc/bind/db。rpz。地方的 然后编辑数据库。rpz文件。 sudo nano/etc/bind/db。rpz。地方的 无需更改现有内容。我们只需添加自定义DNS记录。例如,如果您在本地网络上有一台IP地址为192.168.0.103的Nextcloud服务器,那么您可以添加以下DNS记录,这样Nextcloud客户端就不必为了连接到Nextcloud服务器而去互联网。 下个星期。你的领域。com A 192.168.0.103 如果你不想让你的孩子访问像pornhub这样的色情网站。com,在此文件中添加以下行以阻止整个pornhub。com域。 *.色情中心。com CNAME。 如果你不喜欢在网页上看到谷歌Adsense广告,你可以添加以下行来阻止双击。net域,用于发送Adsense广告。 *.双击。net CNAME。 下面是一些可以阻止的更多广告服务器域。 *.公共的。com CNAME.*。莫布。com CNAME.*。爱斯基米人。com CNAME.*。adcolony。xyz CNAME.*。adsrvr。org CNAME.*。无症状的。com CNAME.*。由buysellads提供服务。com CNAME。srv。buysellads。com CNAME.*。powerinboxedge。com CNAME.*。迪福。com CNAME.*。利卡斯德。com CNAME.*。利亚姆。com CNAME。 要覆盖域名的MX记录,请添加一行,如下所示。 实例com MX 0邮件。实例通用域名格式。 请注意,所有左手名不得以点结尾,所有右手名必须以点结尾。 如果需要主机名的负载平衡,那么可以创建一个包含多个值的记录,如下所示。DNS客户端将随机使用这两个IP地址,流量将分布在它们之间。 主办实例com A 12.34.56.78 A 12.34.56.79 保存并关闭文件。建议RPZ使用单独的日志文件,以便更好地分析日志。要进行配置,请编辑绑定主配置文件。 sudo nano/etc/bind/named。形态 将以下行添加到文件中。 记录{channel rpzlog{file”/var/log/named/rpz.log“版本大小不限100m;打印时间是;打印类别是;打印严重性是;严重性信息;};范畴rpz{rpzlog;};}; 保存并关闭文件。然后创建/var/log/named/目录,并将bind作为所有者。 sudo mkdir/var/log/named/sudo chown bind:bind/var/log/named/-R 接下来,运行以下命令检查主配置文件中是否存在语法错误。无声输出表示未发现错误。 sudo命名为checkconf 然后检查RPZ区域文件的语法。 sudo命名为checkzone rpz/etc/bind/db。rpz。地方的 如果没有发现错误,则重新启动BIND9。 sudo systemctl重启bind9 现在可以在绑定服务器上运行dig命令,查看RPZ是否正常工作。例如,查询响应策略区域中包含的域名的DNS记录。 再挖一块。你的领域。com@127.0.0.1 您应该在命令输出中看到如下内容,这表明DNS响应来自本地RPZ。 ;; 授权部门:rpz。NS localhost中的本地86400。 您还可以查看BIND9查询日志。 sudo tail/var/log/named/rpz。日志 您会看到下面这样的内容,这意味着响应来自本地RPZ。 (example.com):rpz QNAME本地数据重写示例。com的例子。通用域名格式。rpz。地方的 Fedora客户端不使用RPZ? 默认情况下,Fedora不使用RPZ。您可以使用dig命令行实用程序在RPZ区域中查找主机名的IP地址,但如果ping主机名,它将找不到IP地址。 要解决这个问题,需要更改/etc/nsswitch中的hosts参数。Fedora客户端上的conf文件。 sudo nano/etc/nswitch。形态 默认情况下,hosts参数定义为: 主机:文件myhostname mdns4_minimal[NOTFOUND=return]解析[!unail=return]dns 将其更改为: 主机:文件mdns4_minimal[NOTFOUND=return]dns myhostname mymachines 保存并关闭文件。RPZ现在应该可以工作了。 与转发器一起使用RPZ 如果在/etc/bind/named中的options子句中添加如下fowarders指令。conf.options文件,则绑定解析程序成为转发器,它将DNS请求转发到上游DNS解析程序,如8.8.8.8。 选项{directory”/var/cache/bind;//如果您和想要//对话的名称服务器之间有防火墙,您可能需要修复防火墙以允许多个//端口对话。请参阅http://www.kb.cert.org/vuls/id/800113//如果您的ISP为稳定的//名称服务器提供了一个或多个IP地址,您可能希望将其用作转发器。//取消对以下块的注释,并插入地址替换//all-0的占位符。货代{8.8.8.8;8.8.4.4;};..}; 响应策略区域与此转发器设置配合使用。Bind将首先查询本地响应策略区域。如果在RPZ中找不到DNS记录,则请求将转发到上游DNS解析程序。当您自己的绑定解析程序解析DNS名称花费太多时间时,您可能希望使用转发器来加速DNS解析。 配置区域传输 如果您有另一个绑定DNS解析程序,可以将其配置为从属解析程序,以自动接收来自主DNS解析程序的更新。 首先,需要编辑/etc/bind/named。主DNS解析程序上的conf.local文件。 sudo nano/etc/bind/named。conf.local 将从属DNS解析程序的IP地址添加到allow transfer指令。 区域“rpz.local”{type master;file”/etc/bind/db.rpz.local”;允许查询{localhost;};允许转移{12.34.56.78;};同时通知{12.34.56.78;};}; 如果您有多个从属DNS解析程序,请添加多个IP地址,如下所示。 允许转移{12.34.56.78;12.34.56.79;}; ALLOW notify指令将使主DNS解析程序在RPZ区域更改时向从解析程序发送通知消息。保存并关闭文件。重新启动BIND以使更改生效。 sudo systemctl重启bind9 如果主DNS解析程序上运行防火墙,则需要允许从DNS解析程序连接到端口53。例如,如果使用UFW防火墙,请运行以下命令。 sudo ufw插件1允许从12.34.56.78插入任何端口53 接下来,编辑已命名的。从DNS解析程序上的conf.options文件。 sudo nano/etc/bind/named。形态选项 在选项{…}中添加以下行子句来启用响应策略区域。(第一行是评论。) //启用响应策略区域。响应策略{zone“rpz.local”;}; 保存并关闭文件。然后编辑命名的。conf.local文件。 sudo nano/etc/bind/named。conf.local 在此文件中添加从属RPZ区域。将11.22.33.44替换为主DNS解析程序的IP地址。 区域“rpz.local”{type slave;文件“db.rpz.local”;masters{11.22.33.44;};允许通知{11.22.33.44;};允许传输{none;};允许查询{localhost;};}; 保存并关闭文件。 您还需要配置从属解析程序的防火墙,以允许主DNS解析程序发送通知消息。 sudo ufw插件1允许从11.22.33.44进入任何端口53 接下来,运行以下命令检查主配置文件中是否存在语法错误。无声输出表示未发现错误。 sudo命名为checkconf 如果没有发现错误,则重新启动BIND9。 sudo systemctl重启bind9 BIND9重新启动后,区域传输将立即启动。使用以下命令检查BIND9日志。 sudo journalctl-eu bind9 或 sudo journalctl-欧盟命名 您可以看到如下消息,这表明区域传输成功。 转移rpz。本地/来自xx。xx。xx。xx#53:转移状态:成功转移“rpz”。本地/来自xx。xx。xx。xx#53:传输完成:1条消息,34条记录,899字节,0.248秒(3625字节/秒) 注意:无论何时修改主解析器上的RPZ区域,都需要更新序列号。使其更大,以便从属解析器知道RPZ区域已更改。 创建多个RPZ区域 有时,您可能不希望将某些DNS记录传输到从属解析程序。您可以创建一个单独的RPZ区域。编辑命名文件。conf.options文件。 sudo nano/etc/bind/named。形态选项 添加一个新的RPZ区域。 //启用响应策略区域。响应策略{zone“rpz.local”zone“rpz.local.nottransfer”;}; 注意:如果两个RPZ区域有冲突的DNS记录,则以第一个条目为准。如果要反转优先级,请切换其位置,如下所示: //启用响应策略区域。响应策略{zone“rpz.local.nottransfer”;zone“rpz.local”;}; 保存并关闭文件。然后打开命名的。conf.local文件。 sudo nano/etc/bind/named。conf.local 在此文件中添加新分区的定义。 区域“rpz.local.nottransfer”{type master;文件“/etc/bind/db.rpz.local.nottransfer”;允许查询{localhost;};允许传输{localhost;};}; 保存并关闭文件。然后我们需要创建区域文件。我们可以使用区域模板文件,而不是从头创建区域文件。复制数据库的内容。空到一个新文件。 sudo cp/etc/bind/db。空/etc/bind/db。rpz。地方的不转移 然后编辑数据库。rpz文件并添加自定义DNS记录。 sudo nano/etc/bind/db。rpz。地方的转移 故障排除提示 如果辅助DNS解析程序未能从主DNS解析程序复制RPZ记录,则辅助DNS解析程序上可能存在以下情况: 防火墙规则是错误的。 绑定解析程序未运行。 BIND未在所需的网络接口上侦听。 如何将RPZ与绑定中的视图一起使用 如果你想让你的RPZ只能被内部的可信网络访问,你可以使用BIND中的视图来实现。此设置将与主从区传输兼容。 首先,编辑命名文件。conf.options文件。 sudo nano/etc/bind/named。形态选项 使用acl指令定义内部网络和来宾网络。 选项{….}acl内部{10.10.10.0/24;};acl来宾{10.10.20.0/24;}; 这里的10.10.10.0/24网络是内部可信网络。10.10.20.0/24是来宾网络。另外,从该文件中删除以下行。 响应策略{zone“rpz.local”;}; 保存并关闭文件。 接下来,编辑已命名的。conf.local文件。 sudo nano/etc/bind/named。conf.local 您需要将分区定义放在如下所示的视图子句中。注意,我们需要在view子句中启用响应策略区域。 查看“内部”{match clients{internal;}//启用响应策略区域。响应策略{zone“rpz.local”;};区域“rpz.local”{type master;file”/etc/bind/db.rpz.local”;允许查询{localhost;};允许转移{12.34.56.78;};};};}; 保存并关闭文件。然后编辑命名的。conf文件。 sudo nano/etc/bind/named。conf.default-zones 在来宾视图中放置默认区域。 查看来宾{match clients{guest;};允许递归{any;};区域”{键入提示;文件“/usr/share/dns/root.hints”;};区域“localhost”{type master;file“/etc/bind/db.local”;};…}; 保存并关闭文件。运行以下命令检查配置文件中是否存在语法错误。无声输出表示未发现错误。 sudo命名为checkconf 如果没有发现错误,则重新启动BIND9以使更改生效。 sudo systemctl重启bind9 收尾 我希望本教程能帮助您在Debian/Ubuntu上设置响应策略区域/DNS防火墙。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:487
  • 使用Nginx(LEMP堆栈)在Ubuntu20.04上安装NextCloud

    本教程将向您展示如何使用Nginx web服务器在Ubuntu20.04 LTS上安装NextCloud。 接下来是什么? NextCloud是一个免费的开源自托管云存储解决方案。它的功能类似于Dropbox。专有的云存储解决方案(Dropbox、Google Drive等)很方便,但代价是:它们可以用于收集个人数据,因为您的文件存储在它们的计算机上。如果您担心隐私问题,可以切换到NextCloud,您可以将其安装在您的私人家庭服务器或虚拟私人服务器(VPS)上。您可以通过NextCloud将文件上传到服务器,然后将这些文件同步到台式电脑、笔记本电脑或智能手机。这样你就可以完全控制你的数据。 NextCloud功能 免费开源 端到端加密,这意味着文件可以在上传到服务器之前在客户端设备上进行加密,因此即使有人窃取了您的服务器,他们也无法读取您的文件。 可与在线办公套件(Collobora online,OnlyOffice)集成,因此您可以直接从NextCloud创建和编辑文档、ppt、xls文件。 app store包含数百个扩展功能的应用程序(如日历应用程序、联系人应用程序、笔记应用程序、视频会议应用程序等)。 同步客户端可在Linux、macOS、Windows、iOS和android上使用。 先决条件 NextCloud是用PHP编程语言编写的。要学习本教程,首先需要在Ubuntu 20.04上安装LEMP stack。如果您还没有这样做,请查看以下教程。 如何在Ubuntu 20.04上安装LEMP堆栈(Nginx、MariaDB、PHP7.4-FPM) 您可以在家庭服务器或VPS(虚拟专用服务器)上安装NextCloud。您还需要一个域名,以便以后能够启用HTTPS来加密HTTP流量。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。Nextcloud可以在没有域名的情况下安装,但如果不加密HTTP连接以防止窥探,那么它真的没有意义。如果你真的想修补服务器软件并充分利用它们,我建议你买一个域名。 现在让我们安装NextCloud。 第一步:在Ubuntu 20.04上下载NextCloud 登录你的Ubuntu 20.04服务器。然后将NextCloud压缩文件下载到服务器上。撰写本文时,最新的稳定版本是21.0.1。您可能需要更改版本号。去https://nextcloud.com/install然后单击下载服务器按钮查看最新版本。 可以运行以下命令将其下载到服务器上。 wgethttps://download.nextcloud.com/server/releases/nextcloud-21.0.1.zip 您始终可以使用上述URL格式下载NextCloud。如果出现新版本,只需用新版本号替换21.0.1即可。 下载后,使用解压功能提取归档文件。 sudo apt安装unzip sudo unzip nextcloud-21.0.1。zip-d/usr/share/nginx/ -d选项指定目标目录。NextCloud web文件将被提取到/usr/share/nginx/NextCloud/。然后,我们需要将该目录的所有者更改为www数据,以便web服务器(Nginx)可以写入该目录。 sudo chown www-data:www-data/usr/share/nginx/nextcloud/-R 步骤2:在MariaDB数据库服务器中为Nextcloud创建数据库和用户 使用以下命令登录MariaDB数据库服务器。由于MariaDB现在使用unix_socket插件来验证用户登录,因此无需输入MariaDB根密码。我们只需要在mysql命令前面加上sudo。 sudo mysql 然后为Nextcloud创建一个数据库。本教程将数据库命名为nextcloud。你可以用任何你喜欢的名字。 创建数据库nextcloud; 创建数据库用户。同样,您可以使用此用户的首选名称。用首选密码替换密码。 创建用户nextclouduser@localhost由“您的密码”标识; 授予此用户在nextcloud数据库上的所有权限。 授予nextcloud的所有特权。*到nextclouduser@localhost由“您的密码”标识; 刷新权限并退出。 同花顺特权;出口 步骤3:为Nextcloud创建Nginx配置文件 创建一个nextcloud。conf文件位于/etc/nginx/conf.d/目录中,带有命令行文本编辑器,如Nano。 sudo nano/etc/nginx/conf.d/nextcloud。形态 将以下文本复制并粘贴到文件中。更换nextcloud。实例com与您自己的首选子域。不要忘记在DNS区域编辑器中为此子域创建DNS记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 服务器{listen 80;listen[:]:80;服务器_namenextcloud.example.com;#添加头以服务安全相关头添加_头X-Content-Type-Options nosniff;添加_头X-XSS-Protection“1;模式=块”; 添加标题X-Robots-Tag none;添加标题X-Download-Options noopen;添加_头X-允许-跨域-无策略;添加标题推荐人策略无推荐人#我发现Ubuntu上需要这个标题,但Arch Linux上不需要。添加标题X-Frame-Options“SAMEORIGIN”;#安装根目录的路径/usr/share/nginx/nextcloud/;访问_log/var/log/nginx/nextcloud。通道错误_log/var/log/nginx/nextcloud。错误位置=/机器人。txt{allow all;log_not_found off;access_log off;}#以下两条规则仅适用于用户_webfinger应用程序如果您计划使用此应用程序,请取消注释#重写^/。知名/主机元/公共。php?服务=主机元最后#重写^/。知名/主机元。json/public。php?service=host meta json#last;位置=/。著名的/carddav{return 301$scheme://$host/remote.php/dav;}位置=/。著名的/caldav{return 301$scheme://$host/remote.php/dav;}地点~/。著名/极致挑战{allow all;}#设置最大上传大小客户端u最大u正文u大小512M;fastcgi_缓冲区64 4K;#禁用gzip以避免删除ETag头gzip off;#如果您的服务器是使用ngx_pagespeed模块构建的,请取消注释。该模块目前不受支持#页面速度关闭;错误_第403页/core/templates/403。php;错误_第404页/core/templates/404。php;位置/{rewrite^/index.php;}位置^/(?:构建|测试|配置|库|第三方|模板|数据)/{deny all;}位置^/(?:/。|自动测试| occ |问题|独立|数据库|控制台){拒绝所有;}位置^/(?:index | remote | public | cron | core/ajax/update | status | ocs/v[12]| updater/+| ocs provider/+| core/templates/40[34])/。php(?:$|/){include fastcgi_params;fastcgi_split_path_info^(+/.php)(/.*$; 试试_files$fastcgi_script_name=404;fastcgi_参数SCRIPT_FILENAME$document_root$fastcgi_SCRIPT_name;fastcgi_参数路径信息$fastcgi_路径信息#避免发送两次安全头fastcgi_param modHeadersAvailable true;fastcgi_参数前控制器_激活真;fastcgi_pass unix:/run/php/php7。4-fpm。短袜fastcgi_截获_错误开启;fastcgi_请求_缓冲关闭;}位置^/(?:更新程序| ocs提供程序)(?:$|/){try_files$uri/=404;index index.php;}#为js和css文件添加缓存控制头#确保它位于PHP块位置~*/之下。(?:css | js)${try_files$uri/index.php$uri$is_args$args;add_header Cache Control“public,max age=7200”;#add header to service security-related header(它的目的是#将那些文件复制到上面的文件中)#add#header X-Content-Type-Options nosniff;add##header X-XSS-Protection“1;mode=block”; 添加标题X-Robots-Tag none;添加标题X-Download-Options noopen;添加_头X-允许-跨域-无策略;添加标题推荐人策略无推荐人;#可选:不登录资产访问权限u注销;}地点~*/。(?:svg | gif | png | html | ttf | woff | ico | jpg | jpeg)${try_files$uri/index.php$uri$is_args$args;#可选:不登录其他资产访问_注销;} 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。) 然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 第4步:安装并启用PHP模块 运行以下命令安装NextCloud所需或推荐的PHP模块。 sudo apt安装imagemagick php Imageick php7。4-常见php7。4-mysql php7。4-fpm php7。4-gd php7。4-json php7。4-卷曲php7。4-zip php7。4-XMLPHP7。4-Mb字符串php7。4-bz2 php7。4-intl php7。4-bcmath php7。4-gmp 第5步:启用HTTPS 现在,通过输入Nextcloud安装的域名,您可以在web浏览器中访问Nextcloud web安装向导。 下个星期。实例通用域名格式 如果网页无法加载,您可能需要在防火墙中打开端口80。 sudo iptables-I输入-p tcp-dport 80-j接受 还有443端口。 sudo iptables-I输入-p tcp-dport 443-j接受 在输入任何敏感信息之前,我们应该在Nextcloud上启用安全的HTTPS连接。我们可以从Let's Encrypt获得免费的TLS证书。从Ubuntu20.04存储库安装Let's Encrypt client(certbot)。 sudo apt安装certbot python3 certbot nginx Python3 certbot nginx是nginx插件。接下来,运行以下命令,使用Nginx插件获取免费的TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--staple ocsp--email[email&#160;protected]-d nextcloud。实例通用域名格式 哪里: –nginx:使用nginx验证器和安装程序 –同意:同意让我们加密服务条款 –重定向:通过添加301重定向来强制HTTPS。 –hsts:启用HTTP严格的传输安全性。这可以抵御SSL/TLS剥离攻击。 –装订ocsp:启用ocsp装订。 –电子邮件:用于注册和恢复联系的电子邮件。 -d标志后面是域名列表,以逗号分隔。你最多可以添加100个域名。 你会被问到是否想收到来自EFF(电子前沿基金会)的电子邮件。选择Y或N后,将自动获取并为您配置TLS证书,如下消息所示。 我发现Certbot可能无法在Nextcloud的Nginx配置文件中添加HSTS头。如果要启用HSTS(HTTP严格传输安全),请编辑该文件。 sudo nano/etc/nginx/conf.d/nextcloud。形态 然后,我们可以在SSL服务器块中添加以下行以启用HSTS头。(如果已经存在,那么您的配置就可以了。) 始终添加严格的运输安全“最大年龄=31536000”; 此外,您还可以通过添加选项HTTP2来启用HTTP2协议,这将加快网页加载速度。 听443 ssl http2;#由Certbot管理 如下图所示。 保存并关闭文件。然后文本Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 以上配置将在SSL测试中获得+分。 第6步:在Web浏览器中完成安装 现在,您可以使用HTTPS连接访问Nextcloud web安装向导。 要完成安装,您需要创建一个管理员帐户,输入Nextcloud数据文件夹的路径,输入在步骤2中创建的数据库详细信息。您可以使用默认的localhost作为主机地址,也可以在MariaDB侦听端口3306时输入localhost:3306。 数据文件夹是存储用户文件的地方。为了安全起见,最好将数据目录放在Nextcloud webroot目录之外。因此,我们可以将用户的文件改为/usr/share/nginx/nextcloud/data/,而不是存储在/usr/share/nginx/nextcloud data/下。可以使用以下命令创建: sudo mkdir/usr/share/nginx/nextcloud数据 然后确保Nginx用户(www-data)对数据目录具有写入权限。 sudo chown www-data:www-data/usr/share/nginx/nextcloud-data-R 单击Finish Setup(完成设置)按钮,您将看到Nextcloud的Web界面。恭喜!您可以开始将其用作您的私有云存储。 如何设置NextCloud电子邮件通知 如果您的NextCloud实例将被多人使用,那么NextCloud服务器可以发送事务性电子邮件,例如密码重置电子邮件,这一点很重要。首先,你应该为自己的账户设置一个电子邮件地址。转到设置-&gt;个人信息,并为您的帐户设置电子邮件地址。 然后进入设置-&gt;基本设置。您将找到电子邮件服务器设置。有两种发送模式:sendmail和smtp。如果您的NextCloud主机运行SMTP服务器,则可以选择sendmail模式。 如果要使用在另一台主机上运行的SMTP服务器,请选择SMTP模式并输入SMTP服务器地址和登录凭据,如下所示。选择STARTTLS进行加密。 有关如何设置电子邮件服务器,请查看以下教程。请注意,我强烈建议在全新干净的操作系统上运行iRedMail邮件服务器。在具有其他web应用程序的操作系统上安装iRedMail可能会失败,并可能破坏现有的应用程序。 如何使用iRedMail在Ubuntu20.04上轻松设置功能齐全的邮件服务器 如何从命令行重置Nextcloud用户密码 如果丢失了管理员帐户密码,并且没有在Nextcloud中设置电子邮件传递,则需要在服务器上运行以下命令来重置密码。用真实用户名替换nextcloud_用户名。 sudo-u www-data-php/usr/share/nginx/nextcloud/occ用户:resetpassword nextcloud_用户名 还有其他一些命令可能会很有用。列出以下可用命令: sudo-u www-data-php/usr/share/nginx/nextcloud/occ 或 sudo-u www-data-php/usr/share/nginx/nextcloud/console。php 如何移动数据目录 如果需要移动NextCloud数据目录,有4个步骤可以完成。首先,需要使用cp命令将数据目录复制到新目录。例如,我的外部硬盘的安装点是/media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731。我在外部硬盘上创建了新的数据目录。 sudo mkdir/media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud data/ 然后我将原始数据目录复制到新的数据目录-R标志表示复制操作是递归的。 sudo cp/usr/share/nginx/nextcloud data/*/media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud data/-R 你还需要复制文件。ocdata文件。 sudo cp/usr/share/nginx/nextcloud data/。ocdata/media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud数据/ 接下来,需要将www数据(Nginx user)设置为所有者。 sudo chown www-data:www-data/media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/-R 最后,您需要编辑配置。php文件。 sudo nano/usr/share/nginx/nextcloud/config/config。php 找到以下行并更改datadirectory的值。 “数据目录”=&gt;'/usr/share/nginx/nextcloud data', 保存并关闭文件。重新加载NextCloud网页,就完成了。 第7步:增加PHP内存限制 默认的PHP内存限制是128MB。NextCloud建议512MB以获得更好的性能。要更改PHP内存限制,请编辑PHP。ini文件。 sudo nano/etc/php/7.4/fpm/php。伊尼 找到下面这行。(第409行) 内存限制=128M 更改值。 内存限制=512M 保存并关闭文件。或者,您可以运行以下命令来更改值,而无需手动打开文件。 sudo sed-i's/memory_limit=128M/memory_limit=512M/g'/etc/php/7.4/fpm/php。伊尼 然后重新加载PHP-FPM服务,使更改生效。 sudo systemctl重新加载php7。4-fpm 第8步:设置PHP以正确查询系统环境变量 编辑www.conf文件。 sudo nano/etc/php/7.4/fpm/pool。d/www.conf 找到下一行(第396行)。 ;清除环境=否 删除分号以取消对此行的注释。 清除环境=否 保存并关闭文件。或者,您可以运行以下命令取消对此行的注释,而无需手动打开文件。 sudo sed-i's/;clear_env=no/clear_env=no/g'/etc/php/7.4/fpm/pool。d/www.conf 然后重新加载PHP-FPM服务,使更改生效。 sudo systemctl重新加载php7。4-fpm 第9步:增加上传文件大小限制 Nginx设置的默认最大上传文件大小限制为1MB。要允许将大型文件上载到NextCloud服务器,请编辑NextCloud的Nginx配置文件。 sudo nano/etc/nginx/conf.d/nextcloud。形态 我们已经在此文件中设置了最大文件大小,如所示 客户_max_body_尺寸512M; 如果你愿意,你可以改变它,比如1G。 客户最大尺寸为1024M; 保存并关闭文件。然后重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx PHP还设置了上传文件大小的限制。上传的默认最大文件大小为2MB。要增加上传大小限制,请编辑PHP配置文件。 sudo nano/etc/php/7.4/fpm/php。伊尼 找到下面一行(第846行)。 上传最大文件大小=2M 更改值,如下所示: 上传最大文件大小=1024M 保存并关闭文件。或者,您可以运行以下命令来更改值,而无需手动打开文件。 sudo sed-i's/upload_max_filesize=2M/upload_max_filesize=1024M/g'/etc/php/7.4/fpm/php。伊尼 然后重启PHP-FPM。 sudo systemctl重启php7。4-fpm 第10步:为NextCloud配置Redis缓存 如果您进入下一步设置-&gt;概述页面,您可能会看到以下警告: 没有配置内存缓存。要提高性能,请配置memcache(如果可用)。 我们将使用Redis为nextCloud启用内存缓存。运行以下命令从Ubuntu存储库安装Redis server。 sudo apt安装redis服务器 您可以通过以下方式检查版本: redis服务器-v 样本输出: Redis服务器v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1位=64构建=636cde3b5c7a3923 现在我们可以检查redis服务器是否正在运行。 systemctl状态redis 提示:如果上述命令没有立即退出,您可以按Q键重新控制终端。 从上面的屏幕截图中,我们可以看到它正在运行,并且自动启动已启用。如果出于任何原因,它没有运行,请执行以下命令: sudo systemctl启动redis服务器 如果未启用启动时自动启动,则可以使用以下命令启用它: sudo systemctl启用redis服务器 为了将Redis配置为nextCloud的缓存,我们需要安装与Redis接口的PHP扩展。 sudo apt安装php redis 检查扩展是否已启用。 php——ri redis 我们可以看到Redis扩展已启用。如果未启用,请运行以下命令: sudo phpenmod redis 接下来,编辑nextCloud配置文件。 sudo nano/usr/share/nginx/nextcloud/config/config。php 在结尾上方添加以下行);线 “memcache。分布式'=&gt;'/OC/Memcache/Redis',Memcache。本地'=&gt;'/OC/Memcache/Redis',Memcache。锁定“=&gt;”/OC/Memcache/Redis,“Redis”=&gt;数组('host'=&gt;'localhost','port'=&gt;6379,), 保存并关闭文件。然后重新启动Nginx和PHP-FPM。 sudo systemctl重启nginx php7。4-fpm 现在转到NextCloud设置-&gt;再次浏览网页并刷新网页,有关内存缓存的警告应该消失。 添加缺少的索引 如果在NextCloud设置中看到以下消息-&gt;概览页面, 数据库缺少一些索引。由于在大表上添加索引可能需要一段时间,因此它们不会自动添加。 然后需要手动添加这些索引。更改为Nextcloud webroot目录。 cd/usr/share/nginx/nextcloud/ 运行以下命令向Nextcloud数据库添加索引。 sudo-u www-data-php-occ-db:添加缺少的索引 现在,如果刷新NextCloud设置-&gt;概述页面,关于缺少索引的警告应该消失。 转换为大整数 如果在NextCloud设置中看到以下消息-&gt;概览页, 数据库中的某些列缺少到big int的转换。由于在大表上更改列类型可能需要一些时间,因此它们不会自动更改。 然后需要手动更改列类型。更改为Nextcloud webroot目录。 cd/usr/share/nginx/nextcloud/ 将Nextcloud更改为维护模式,以防止用户登录并进行更改。 sudo-u www数据php occ维护:模式--打开 然后运行以下命令更改列类型。 sudo-u www-data-php-occ-db:convert-filecache-bigint 完成后,关闭维护模式。 sudo-u www数据php occ维护:模式--关闭 现在,如果刷新NextCloud设置-&gt;概述页面,关于大整数的警告应该消失。 如何在Ubuntu 20.04桌面上安装NextCloud客户端 在Ubuntu20.04桌面上运行以下命令,从默认存储库安装客户端。 sudo apt安装nextcloud客户端 Ubuntu 20.04上的NextCloud客户端 macOS、Windows、Android和iOS的客户端软件可以在Nextcloud下载页面上找到。 如何启用OnlyOffice/Collabora Online 默认情况下,Nextcloud附带对OnlyOffice的支持,OnlyOffice是一个在线办公套件,允许您直接从Nextcloud编辑文档、ppt和xls文件。我们只需要安装一个应用程序就可以使用这个功能。转到Nextcloud应用程序-&gt;办公室及;文本查找并启用社区文档服务器应用程序。 现在,当您在Nextcloud中单击add按钮(+)时,您将能够从Nextcloud服务器上创建Word、电子表格和演示文档。 然而,我发现这个应用程序不是很可靠。而社区版最多只允许20名用户。如果用户超过20,则需要购买企业版。还有另一个基于LibreOffice的开源在线办公套件Collabora online,它具有相同的功能,但不受用户数量的限制。您可以阅读以下文章,将其与Nextcloud集成。 将Collabora Online与Ubuntu上的Nextcloud与Docker集成 添加本地DNS条目 建议在Nextcloud服务器上编辑/etc/hosts文件,并添加以下条目,这样Nextcloud本身就不必查询公共DNS,从而提高整体稳定性。如果您的Nextcloud服务器无法解析Nextcloud。实例com主机名,则可能会遇到504网关超时错误。 127.0.0.1 localhost nextcloud。实例通用域名格式 /etc/hosts文件中的IP地址可以有多个主机名,因此如果在同一个框中安装了其他应用程序,也可以在同一行中添加其他主机名或子域,如下所示: 127.0.0.1 localhost focal ubuntu nextcloud。实例com collabora。实例通用域名格式 使用Cron运行后台作业 默认情况下,Nextcloud使用AJAX在每次页面加载时执行一个任务。您可以使用更高效的系统cron服务来运行后台作业。转到Nextcloud设置-&gt;基本设置并选择Cron。 接下来,编辑www数据用户的crontab文件。 sudo-u www-data-crontab-e 在该文件中添加以下行,这样cron作业将每5分钟运行一次。 */5****php7。4-f/usr/share/nginx/nextcloud/cron。php 保存并关闭文件。 (可选)防止恶意登录尝试 如果您的计算机具有静态公共IP地址,则可以在Nginx配置文件中创建IP白名单。 sudo nano/etc/nginx/conf.d/nextcloud。形态 在SSL服务器块中添加以下行以限制对/login URL的访问,这样只有您的IP地址才能访问此URL。用自己的IP地址替换78.56.34.12。 location~*^/login{try_files$uri/index.php;包含fastcgi_参数;fastcgi_split_path_info^(.+/.php)(/.*)$; fastcgi_参数SCRIPT_FILENAME$document_root$fastcgi_SCRIPT_name;fastcgi_参数路径信息$fastcgi_路径信息#避免发送两次安全头fastcgi_param modHeadersAvailable true;fastcgi_参数前控制器_激活真;fastcgi_pass unix:/run/php/php7。4-fpm。短袜fastcgi_截获_错误开启;快速CGI_请求_缓冲关闭;允许78.56.34.12;否认一切;} 保存并关闭文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 如果家庭网络上没有静态IP地址,可以在数据中心设置VPN服务器。 故障排除提示 如果遇到错误,可以检查以下日志文件之一,以找出问题所在。 Nginx错误日志:/var/log/Nginx/error。日志 Nextcloud虚拟主机的Nginx错误日志:/var/log/Nginx/Nextcloud。错误 Nextcloud应用程序日志:/usr/share/nginx/Nextcloud/data/Nextcloud。日志 例如,我的Nextcloud实例和/var/log/nginx/Nextcloud上有一个“内部服务器错误”。错误文件告诉我 FastCGI在stderr中发送:“PHP消息:PHP致命错误:未捕获OC/HintException:[0]:Memcache/OC/Memcache/Redis不可用于本地缓存(是否安装并启用了匹配的PHP模块?) 事实证明,因为我在Ubuntu服务器上使用了ppa:ondrej/php-ppa,所以我还需要安装php7。除了php redis包之外,还有4-redis。 升级Nextcloud 让你的Nextcloud服务器保持最新的安全和漏洞修复非常重要。阅读下面的教程,了解如何升级Nextcloud。 2种升级Nextcloud[命令行和GUI]的方法 收尾 我希望本教程能帮助您在使用Nginx的Ubuntu 20.04服务器上安装NextCloud。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:565
  • 使用Apache/Nginx在Ubuntu 20.04上安装Roundcube Webmail

    Roundcube是一个用PHP编写的免费开源、功能齐全的webmail客户端。webmail是浏览器中的邮件客户端,这意味着您可以从web浏览器访问电子邮件,而不是从Mozilla Thunderbird这样的桌面邮件客户端读取和发送电子邮件。本教程将向您展示如何使用Apache或Nginx web服务器在Ubuntu20.04上安装Roundcube webmail。 圆形立方体特征 Roundcube的功能包括: 通讯录 文件夹管理 消息搜索 消息过滤器 拼写检查 MIME支持 PGP加密和签名 用户可以在Roundcube中更改密码。 Roundcube 1.4版本 Roundcube 1.4经过两年的开发,于2019年11月10日发布。此版本的特点是: 一种称为弹性皮肤的灵敏皮肤,具有全方位移动设备支持 电子邮件重新发送(反弹)功能 改进的MailDevelope集成 支持Redis和Memcached缓存 支持SMTPUTF8和GSSAPI 再加上许多改进和错误修复 先决条件 为了学习本教程,假设 Postfix SMTP服务器和Dovecot IMAP服务器已安装在您的Ubuntu 20.04服务器上 您已经在Ubuntu 20.04服务器上安装了LAMP堆栈或LEMP堆栈。 如果没有,请单击以上链接并按照说明完成先决条件。请注意,如果您以前使用iRedMail设置过电子邮件服务器,那么您的服务器满足所有要求,并且Roundcube已经安装在您的服务器上。 现在让我们继续安装Roundcube。 第一步:在Ubuntu 20.04上下载Roundcube Webmail 通过SSH登录Ubuntu服务器,然后运行以下命令从Roundcube Github存储库下载最新的1.4稳定版本。 wgethttps://github.com/roundcube/roundcubemail/releases/download/1.4.6/roundcubemail-1.4.6-complete.tar.gz 注意:您可以始终使用上述URL格式从命令行下载Roundcube。如果出现新版本,只需用新版本号替换1.4.6即可。您可以在Roundcube下载页面查看是否有新版本。 提取tarball,将新创建的文件夹移动到web根目录(/var/www/),同时将其重命名为roundcube。 tar xvf roundcubemail-1.4.6-complete。焦油gz sudo mv RoundCubeEmail-1.4.6/var/www/roundcube 第2步:安装依赖项 运行以下命令安装所需的PHP扩展。 sudo apt安装php-net-ldap2 php-net-ldap3 php-imagick php7。4-常见php7。4-gd php7。4-imap php7。4-json php7。4-卷曲php7。4-zip php7。4-XMLPHP7。4-Mb字符串php7。4-bz2 php7。4-intl php7。4-gmp 安装Composer,它是PHP的依赖项管理器。 sudo-apt-install-composer 切换到roundcube目录。 cd/var/www/roundcube 使用Composer安装Roundcube Webmail所需的所有依赖项(第三方库)。 composer安装--无开发人员 如果看到“无需安装或更新”消息,则所有依赖项都已安装。 使web服务器用户(www数据)成为临时和日志目录的所有者,以便web服务器可以写入这两个目录。 sudo chown www data:www data temp/logs/-R 步骤3:为Roundcube创建MariaDB数据库和用户 以root用户身份登录MariaDB shell。 sudo mysql-u root 然后使用以下命令为Roundcube创建一个新数据库。本教程将其命名为roundcube,您可以对数据库使用任何您喜欢的名称。 创建数据库roundcube默认字符集utf8 COLLATE utf8_general_ci; 接下来,使用以下命令在localhost上创建一个新的数据库用户。同样,本教程将其命名为roundcubeuser,您可以使用任何您喜欢的名称。用首选密码替换密码。 创建用户roundcubeuser@localhost由“密码”标识; 然后将新数据库的所有权限授予新用户,以便稍后Roundcube webmail可以写入数据库。 授予roundcube上的所有权限。*到roundcubeuser@localhost; 刷新特权表以使更改生效。 同花顺特权; 退出MariaDB外壳: 出口 将初始表导入roundcube数据库。 sudo mysql roundcube&lt/var/www/roundcube/SQL/mysql。最初的sql 步骤4:为Roundcube创建Apache虚拟主机或Nginx配置文件 阿帕奇 如果使用Apache web服务器,请为Roundcube创建一个虚拟主机。 sudo nano/etc/apache2/网站可用/roundcube。形态 注意:如果您遵循了我的Postfix/Dovecot教程,那么虚拟主机已经存在。您应该编辑以下文件。(删除现有内容。) sudo nano/etc/apache2/sites available/mail。实例通用域名格式。形态 将以下文本放入文件中。替换邮件。实例com与你的真实域名,别忘了为它设置DNS记录。 &lt;虚拟主机*:80&gt;服务器名邮件。实例com DocumentRoot/var/www/roundcube/ErrorLog${APACHE_LOG_DIR}/roundcube_error。log CustomLog${APACHE_log_DIR}/roundcube_访问。日志合并&lt;目录/&gt;选项如下SymLinks AllowOverride All&lt/目录&gt&书信电报;目录/var/www/roundcube/&gt;选项如下SymLinks Multiview allow Override All Order allow,deny allow from All&lt/目录&gt&lt/VirtualHost&gt; 保存并关闭文件。然后通过以下方式启用此虚拟主机: sudo a2ensite圆形立方体。形态 重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 现在,您应该可以在以下位置看到基于web的Roundcube安装向导:http://mail.example.com/installer. Nginx 如果使用Nginx web服务器,请为Roundcube创建虚拟主机。 sudo nano/etc/nginx/conf.d/roundcube。形态 注意:如果您遵循了我的Postfix/Dovecot教程,那么虚拟主机已经存在。您应该编辑以下文件。(删除现有内容。) sudo nano/etc/nginx/conf.d/mail。实例通用域名格式。形态 将以下文本放入文件中。替换域名,不要忘记为其设置DNS记录。 服务器{listen 80;listen[:]:80;server_name mail.example.com;root/var/www/roundcube/;index index.php index.html index.htm;error_log/var/log/nginx/roundcube.error;access_log/var/log/nginx/roundcube.access;location/{try_files$uri$uri//index.php;}地点~/。php${try_files$uri=404;fastcgi_pass unix:/run/php/php7.4-fpm.sock;fastcgi_index index.php;fastcgi_脚本_文件名$document_root$fastcgi_脚本_name;包含fastcgi_参数;}地点~/。著名的/acme挑战{allow all;}位置~^/(自述文件|安装|许可证|更改日志|升级)${deny all;}位置~^/(bin | SQL)/{deny all;}较长的浏览器缓存寿命可以加快对页面位置的重复访问~*/。(jpg | jpeg | gif | png | webp | svg | woff | woff2 | ttf | css | js | ico | xml)${accesslog off lognot found off;expires 360d;} 保存并关闭文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 现在,您应该可以在以下位置看到基于web的Roundcube安装向导:http://mail.example.com/installer. 第5步:启用HTTPS 强烈建议您使用TLS加密您的网络邮件。我们可以通过安装Let's Encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu20.04服务器上安装Let's Encrypt client(certbot)。 sudo apt安装certbot 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--stype ocsp--email[email&#160;protected]-d mail。实例通用域名格式 如果使用Apache,请安装Certbot Apache插件。 sudo apt安装python3 certbot apache 并运行此命令以获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email&#160;protected]-d mail。实例通用域名格式 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 注意:如果您遵循了我的Postfix/Dovecot教程,现在在同一台服务器上安装了Roundcube,那么certbot可能会告诉您邮件的证书。实例com已经存在,如下所示,因此您可以选择将现有TLS证书安装到web服务器配置文件中。 步骤6:添加本地DNS条目 建议在邮件服务器上编辑/etc/hosts文件并添加以下条目,这样Roundcube就不必查询公共DNS,这将稍微加快网页加载速度。 127.0.0.1本地主机邮件。实例通用域名格式 第7步:在Web浏览器中完成安装 在web浏览器中,转到Roundcube安装程序页面。 web安装程序将首先检查是否安装了PHP扩展、数据库和第三方库。如果你遵循本教程,那么所有的要求都应该得到满足。 点击下一步按钮。在第2页中,转到数据库设置部分。您需要填写在步骤3中创建的MariaDB数据库详细信息。 IMAP和SMTP部分允许您配置如何接收和提交电子邮件。为IMAP输入以下值。 IMAP主机:ssl://mail.example.com港口:993 为SMTP设置输入以下值。 SMTP端口:tls://mail.example.com港口:587。请注意,必须使用tls://作为端口587的前缀。端口465应使用ssl://前缀。 接下来,您可以向下滚动到Plugins部分来启用一些插件。例如,密码插件、标记为垃圾插件等等。我启用了所有这些。(在/var/www/roundcube/config/config.inc.php文件中安装后,您始终可以禁用插件。) 完成后,单击创建配置按钮,该按钮将根据您输入的信息创建配置。您需要复制配置并将其另存为config。inc.php位于/var/www/roundcube/config/目录下。 一旦打开配置。创建inc.php文件后,单击“继续”按钮。在最后一步中,通过发送测试电子邮件并检查IMAP登录来测试SMTP和IMAP设置。请注意,在测试SMTP配置时,需要在发件人字段中输入完整的电子邮件地址。 如果测试失败,则可以单击2。在页面顶部创建配置链接,返回步骤2并重新创建配置。inc.php文件。 如果测试成功,请在不使用/installer的情况下转到您的Webmail域并登录。 Roundcube网络邮件接口 现在,您应该从文档根目录中删除整个安装程序文件夹,或者确保在配置中启用_安装程序选项。inc.php文件已禁用。 sudo rm/var/www/roundcube/installer/-r 这些文件可能会向公众公开服务器密码和加密密钥等敏感配置数据。确保无法从浏览器访问安装程序页面。 步骤8:配置筛选消息过滤器 您可以在Roundcube webmail中创建文件夹,然后创建规则将电子邮件过滤到不同的文件夹中。为此,需要使用以下命令安装ManageSieve服务器。 sudo apt安装多佛科特筛网多佛科特筛网 默认情况下,Postfix使用其内置的本地传递代理(LDA)将入站电子邮件移动到消息存储(收件箱、已发送邮件、垃圾、垃圾邮件等)。我们可以将其配置为使用Dovecot通过LMTP协议发送电子邮件,LMTP协议是SMTP的简化版本。LMTP允许一个高度可扩展和可靠的邮件系统,如果你想使用sieve插件过滤到不同文件夹的入站邮件,它是必需的。 安装Dovecot LMTP服务器。 sudo apt安装dovecot lmtpd 编辑Dovecot主配置文件。 sudo nano/etc/dovecot/dovecot。形态 将lmtp和SIVE添加到支持的协议中。 协议=imap lmtp筛 保存并关闭文件。然后编辑Dovecot 10母版。conf文件。 sudo nano/etc/dovecot/conf.d/10-master。形态 将lmtp服务定义更改为以下内容。 服务lmtp{unix_listener/var/spool/postfix/private/dovecot lmtp{group=postfix mode=0600 user=postfix} 接下来,编辑后缀主配置文件。 sudo nano/etc/postfix/main。查阅 在文件末尾添加以下行。第一行告诉Postfix通过dovecot LMTP服务器将电子邮件发送到本地消息存储。第二行在后缀中禁用SMTPUTF8,因为Dovecot LMTP不支持此电子邮件扩展。 邮箱_transport=lmtp:unix:private/dovecot lmtp smtputf8_enable=no 保存并关闭文件。打开/etc/dovecot/conf.d/15-lda。conf文件。 sudo nano/etc/dovecot/conf.d/15-lda。形态 滚动到文件末尾,取消对mail_plugins行的注释,并将sieve插件添加到本地交付代理(LDA)。 协议lda{#要加载的插件的空格分隔列表(默认为全局邮件插件)。邮件插件=$mail_插件筛} 保存并关闭文件。如果你能找到20个lmtp。conf文件位于/etc/dovecot/conf.d/目录下,那么您还应该在该文件中启用sieve插件,如下所示。 协议lmtp{mail_plugins=quota sieve} 编辑/etc/dovecot/conf.d/10-mail。conf文件。 sudo nano/etc/dovecot/conf.d/10-mail。形态 筛选脚本存储在每个用户的主目录下。如果您遵循我的PostfixAdmin教程并使用虚拟邮箱域,那么您需要通过在文件中添加以下行来为虚拟用户启用mail_home,因为默认情况下虚拟用户没有主目录。 mail_home=/var/vmail/%d/%n 保存并关闭文件。 最后,重新启动Postfix和Dovecot。 sudo systemctl重启后缀dovecot 现在,您可以转到Roundcube webmail,打开一封电子邮件,单击“更多”按钮,然后选择“创建过滤器”以创建邮件过滤器。例如,我创建了一个过滤器,可以移动从redhat发送的所有电子邮件。com转到Red Hat文件夹。 如果您没有创建过滤器选项,可能是因为您没有启用ManageSeeve插件。编辑配置。inc.php文件。 sudo nano/var/www/roundcube/config/config。php公司 在该文件末尾的数组中添加managesieve插件。插件顺序无关紧要。 $config['plugins']=array('acl','additional_message_headers','managesieve',…); 保存并关闭文件。 请注意,如果将筛选过滤器集从旧邮件服务器移动到新邮件服务器,则需要转到设置-&gt;筛选,然后单击操作并启用筛选集,否则Dovecot LMTP服务器将不执行筛选筛选。 第9步:从电子邮件标题中删除敏感信息 默认情况下,Roundcube将添加一个用户代理电子邮件头,指示您正在使用Roundcube webmail和版本号。你可以告诉Postfix忽略它,这样收件人就看不到它了。运行以下命令创建头检查文件。 sudo nano/etc/postfix/smtp_头_检查 将以下行放入文件中。 /^用户代理*Roundcube网络邮件/忽略 保存并关闭文件。然后编辑后缀主配置文件。 sudo nano/etc/postfix/main。查阅 在文件末尾添加以下行。 smtp_header_checks=regexp:/etc/postfix/smtp_header_checks 保存并关闭文件。然后运行以下命令重建哈希表。 sudo postmap/etc/postfix/smtp头检查 重新加载后缀以使更改生效。 sudo systemctl重新加载后缀 现在,Postfix在发送邮件时不会在邮件头中包含User Agent:Roundcube Webmail。 第10步:在Roundcube中配置密码插件 Roundcube包含一个密码插件,允许用户从webmail界面更改密码。编辑配置。inc.php文件。 sudo nano/var/www/roundcube/config/config。php公司 确保此文件末尾的插件列表中有密码插件。插件顺序无关紧要。 $config['plugins']=array('acl','additional_message_headers','password',…); 保存并关闭文件。 然而,我们需要先配置这个插件,然后它才能工作。运行以下命令将分布式密码插件配置文件复制到新文件。 sudo cp/var/www/roundcube/plugins/password/config。inc.php。dist/var/www/roundcube/plugins/password/config。php公司 编辑密码插件配置文件。 sudo nano/var/www/roundcube/plugins/password/config。php公司 找到以下行: $config['password_db_dsn']=''; 此参数用于告诉密码插件用户密码的存储位置。默认情况下,该值为空,它将查询不存储用户密码的roundcube数据库。如果您遵循了我的PostfixAdmin教程,那么用户密码将存储在PostfixAdmin中。邮箱表,因此我们需要将值更改为: $config['password_db_dsn']='mysql://postfixadmin:postfixadmin_database_password@127.0.0.1/postfixadmin'; 通知密码插件连接到postfixadmin数据库。如果您不记得postfixadmin数据库密码,可以在/etc/dovecot/dovecot sql中找到它。conf.ext文件。如果您的PostfixAdmin密码包含一个引号字符,那么您可以使用反斜杠(/')对其进行转义。 然后找到下面一行。 $config['password_query']=“选择更新密码(%c,%u)”; 将其更改为以下内容。 $config['password_query']='UPDATE mailbox SET password=%D,modified=NOW(),其中username=%u'; 我建议启用密码强度检查器,以防止用户设置弱密码。转到该文件的开头,可以找到以下行。 $config['passwordu strengthu driver']=null; 我们可以使用ZXCVN密码强度驱动程序,因此将其更改为: $config['password_strength_driver']=“zxcvn”; 在此文件中添加以下行以仅允许强密码。 $config['password_zxcvn_min_score']=5; 注意:$config['password_minimum_score']参数不适用于zxcvn驱动程序,所以请不要管它。 您还可以设置密码的最小长度。找到下面这行。 $config['password_minimum_length']=0; 将其更改为: $config['password_minimum_length']=8; 回想一下,我们在PostfixAdmin教程中使用了ARGON2I密码方案,因此我们还需要配置密码插件以使用ARGON2I。在文件中找到以下行。 $config['password_algorithm']='clear'; 默认情况下,密码将以明文形式存储,将值更改为以下值以使用Dovecot的内置密码算法。 $config['password_algorithm']='dovecot'; 然后找到下面一行,它告诉Dovecot的密码散列生成器位于何处。 $config['password_dovecotpw']='/usr/local/sbin/dovecotpw';//多佛科特一号。十、 将其更改为以下内容。 $config['password_dovecotpw']='/usr/bin/doveadm pw-r 5'; 然后找到下面一行,它告诉我们将使用哪个密码方案。 $config['password_dovecotpw_method']='CRAM-MD5'; 将其更改为: $config['password_dovecotpw_method']='ARGON2I'; 找到下面这行。 $config['password_dovecotpw_with_method']=false; 变假为真。这将在散列密码中添加一个{ARGON2I}前缀,以便您识别所使用的密码方案。 $config['password_dovecotpw_with_method']=true; 保存并关闭文件。由于该文件包含数据库密码,我们应该只允许www数据用户读取和写入该文件。 sudo chown www-data:www-data/var/www/roundcube/plugins/password/config。inc.php sudo chmod 600/var/www/roundcube/plugins/password/config。php公司 现在,用户应该能够在Roundcube webmail界面中更改密码。 如何设置假期/外出消息 我们可以使用筛选过滤器创建休假/外出消息。转到Roundcube设置-&gt;过滤器。然后单击“创建”按钮创建过滤器。 给这个文件管理器起一个类似“外出”的名字。 新过滤器未被禁用,因此您可以不使用该按钮。 在范围字段中,选择所有消息。 在操作设置中选择Replay with message,然后输入将自动发送的消息。 在发送消息的频率中输入1。将其他文本字段留空。 点击保存按钮,你就完成了。 回到办公室后,可以切换“过滤器禁用”按钮,然后单击“保存”按钮禁用此过滤器。 增加上传文件大小限制 如果使用PHP-FPM运行PHP脚本,则上传到Roundcube的图像、PDF文件等文件不能大于2MB。要增加上传大小限制,请编辑PHP配置文件。 sudo nano/etc/php/7.4/fpm/php。伊尼 找到下面一行(第846行)。 上传最大文件大小=2M 如下所示更改值。请注意,此值不应大于Postfix SMTP服务器设置的附件大小限制。 上传最大文件大小=50M 然后找到下一行(第694行)。 立柱最大尺寸=8M 更改PHP将接受的POST数据的最大大小。 立柱最大尺寸=50M 保存并关闭文件。或者,您可以运行以下两个命令来更改值,而无需手动打开文件。 sudo sed-i's/upload_max_filesize=2M/upload_max_filesize=50M/g'/etc/php/7.4/fpm/php。ini sudo sed-i's/post_max_size=8M/post_max_size=50M/g'/etc/php/7.4/fpm/php。伊尼 然后重启PHP-FPM。 sudo systemctl重启php7。4-fpm Nginx还设置了上传文件大小的限制。Nginx设置的默认最大上传文件大小限制为1MB。如果使用Nginx,请编辑Nginx配置文件。 sudo nano/etc/nginx/conf.d/mail。实例通用域名格式。形态 在SSL虚拟主机中添加以下行。 客户最大身体尺寸50米; 保存并关闭文件。然后重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx Roundcube中有3个用于附件/文件上传的插件: 数据库附件 文件系统附件 冗余附件 Roundcube只能使用一个插件来上传附件/文件。我发现数据库附件插件很容易出错,给你带来麻烦。要禁用它,请编辑Roundcube配置文件。 sudo nano/var/www/roundcube/config/config。php公司 向下滚动到此文件的末尾。您将看到一个活动插件列表。从列表中删除“数据库附件”。保存并关闭文件。 设置多个邮件域 要承载多个邮件域,请阅读以下文章: 如何在Ubuntu上的PostfixAdmin中托管多个邮件域 故障排除提示 如果遇到错误,可以在/var/log/apache2/roundcube_error上查看web服务器错误日志。log(如果您使用的是Apache),或/var/log/nginx/roundcube。错误(如果您使用的是Nginx。),Roundcube错误也会记录在/var/www/Roundcube/logs/目录中。 与存储服务器的连接失败 如果您在尝试登录RoundCube时看到“连接到存储服务器失败”错误,可能是因为 Dovecot服务器未运行。您可以使用sudo systemctl restart Dovecot重新启动Dovecot,并使用systemctl status Dovecot检查其状态。 您正在使用自签名的TLS证书。Roundcube需要由受信任的证书颁发机构(如Let's Encrypt)颁发的有效TLS证书。 你的TLS证书过期了。您可以使用sudo certbot renew续订Let's Encrypt TLS证书,然后重新启动Postfix和Dovecot(sudo systemctl restart Postfix Dovecot)。 您还可以尝试在Roundcube服务器上的/etc/hosts文件中添加自定义DNS条目,如步骤8所述,以便Roundcube可以正确解析邮件服务器主机名。 无法从服务器加载邮件 如果您看到“内部错误:无法从服务器加载邮件”错误,可能是因为您试图打开已删除的电子邮件(无效URL)。尝试转到邮件根域(mail.example.com)查看它是否有效。 筛选消息筛选器不工作? 如果按照步骤8按字母顺序设置筛选过滤器,但仍然无法使其工作,那么可以在Dovecot中启用调试以找出问题所在。 sudo nano/etc/dovecot/dovecot。形态 在该文件末尾添加以下行以启用Dovecot中的调试。 mail_debug=是 保存并关闭文件。然后重启多佛科特。 sudo systemctl重启dovecot 接下来,向您的域电子邮件地址发送一封测试电子邮件,并打开邮件日志文件。 sudo nano/var/log/mail。日志 您可以找到Sieve消息过滤器的调试信息。例如,我发现Dovecot无法运行我的筛选脚本。 1月10日11:35:24邮件dovecot:lmtp([email&#160;protected])调试:筛选:中止运行脚本`/var/vmail/linuxbabe。com/xiao/。多佛科特。斯文 事实证明,我的筛滤器有太多规则,其中一些规则相互冲突。我删除了那些相互冲突的规则,它又起作用了。 如何升级Roundcube 这很简单。例如,下面介绍如何升级到Roundcube 1.5.0。 将Roundcube的最新版本下载到您的主目录。 cd~wgethttps://github.com/roundcube/roundcubemail/releases/download/1.5.0/roundcubemail-1.5.0-complete.tar.gz 提取档案。 tar xvf roundcubemail-1.5.0-complete。焦油广州 将所有者更改为www数据。 chown www-data:www-data-roundcubemail-1.5.0/-R 然后运行安装脚本。 RoundCubeEmail-1.5.0/bin/installto。sh/var/www/roundcube/ 完成后,登录Roundcube webmail并单击“关于”按钮检查您使用的Rouncube版本。 收尾 我希望本教程能帮助您在Ubuntu 20.04上安装Roundcube Webmail。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和窍门?

    2022.03.23 浏览:846