• MPLS VPN系统与数据专线对比

    MPLS VPN和数据专线都提供WAN连接。MPLS VPN更多用于实现全网状网络组网方案,数据专线更多用在两点之间建立网络连接。 mpls vpn专线是基于sdh传输网络的mstp综合业务传输平台,是全封闭的私有网络属于三层ip网络。国内部分,通过本地sdh传输网络接入mpls vpn的节点。国际部分,通过全球本地的sdh接入全球当地mpls vpn节点。 总结来说,就是就近接入mpls vpn的节点(俗称pop点),然后即可实现两端数据通信。 数据专线是基于光纤的二层传输链路,由光端机之间划分时隙区别带宽。数据专线实现原理可以分为三段传输网络。国内段我们通过国内本地传输电路传输,再通过海底光缆段实现海底传输电路,直达海外本地运营商的传输电路,通过光传输网络对接形成一条完整链路,实现两端的通信。 mpls vpn系统与数据专线对比 数据专线是基础链路,是早先企业组网的唯一选择。后来企业组网不能局限于通信,还需要有更多的网络管理、数据分析和监控等服务,所以MPLS-VPN是现代企业组网的首选;除此之外,MPLS-VPN的优势在于多点组网时能节约更多成本。 MPLS VPN和数据专线提供WAN连接。主要区别在于,MPLS VPN可以实现为全网状网络,而数据专线连接两个站点。数据专线线路是最终用户解决方案,而MPLS VPN是复杂的功能框架。

    2021.09.16 浏览:750
  • 如何在Ubuntu20.04桌面/服务器上安装Bullge BitTorrent客户端

    本教程将向您展示如何在Ubuntu20.04桌面和服务器上安装Floge。Floge是一款免费的开源(GPL3)轻量级BitTorrent客户端,可用于Linux、FreeBSD、macOS和Windows。它有丰富的插件集合,您可以安装这些插件来扩展其功能。例如,您可以安装流媒体插件,以便在下载时直接从Florge流媒体播放视频或音频。最新的稳定版本2.0.3于2019年6月12日发布。 从PPA在Ubuntu20.04桌面上安装最新版本的洪水 Ubuntu20.04软件库包括洪水2.0.3。然而,当一个更新的版本出现时,Ubuntu团队需要一些时间来更新它。为了确保您尽快获得最新版本,您需要从官方的Florge PPA安装它。打开终端窗口,然后一次一个地运行以下3个命令。 sudo-apt-install软件属性通用sudo-add-apt-repository ppa:flouge团队/稳定sudo-apt-install-flouge 这个PPA也适用于其他基于Ubuntu的Linux发行版,比如LinuxMint和初级操作系统。如果你已经安装了洪水,那么上面的命令会将你的洪水更新到最新版本。别担心,你现有的激流会没事的。 安装后,您可以从应用程序菜单启动它。 洪水2.0.3用户界面 如何在Ubuntu20.04桌面上启用洪水自动启动 要在启动时启用autostart,请从应用程序菜单打开启动应用程序。然后单击添加按钮添加新的启动程序。在名称字段中,您可以输入类似“洪水GTK”的内容。在命令字段中,输入/usr/bin/python/usr/bin/flouge gtk。您可以将注释字段留空。然后点击添加按钮。 警告:下载torrents时,您需要使用VPN隐藏IP地址,否则您可能会收到电影公司的版权侵权投诉,在最坏的情况下可能会面临经济处罚。 如何在桌面Linux上安装和使用ProtNVPN 在Ubuntu 20.04服务器上安装洪水BitTorrent 您可以在服务器上安装洪水BitTorrent守护程序,并通过洪水web界面管理该程序(您可以在web浏览器中控制它)。使用以下命令在Ubuntu20.04服务器上安装洪水守护程序和洪水Web界面。 sudo-apt-install软件属性通用sudo-add-apt-repository-ppa:flouge团队/稳定sudo-apt-install-flouge-web 然后创建Flouge用户和组,以便Flouge可以作为非特权用户运行,这将提高服务器的安全性。 sudo adduser——系统——群体洪水 --system标志表示我们正在创建一个系统用户,而不是普通用户。系统用户没有密码,无法登录,这就是你想要的洪水。将为此用户创建一个主目录/home/flouge/。您可能希望使用以下命令将您的用户帐户添加到洪水组,以便该用户帐户可以访问洪水BitTorrent下载的文件。默认情况下,文件下载到/home/flouge/Downloads。请注意,您需要重新登录才能使组更改生效。 sudo adduser你的用户名泛滥 完成后,用你最喜欢的文本编辑器(如nano)为Florge创建一个systemd服务文件。 sudo nano/etc/systemd/system/flouged。服务 将以下行复制并粘贴到文件中。默认情况下,Flouged将作为后台守护程序运行。由于我们将其作为systemd服务运行,而systemd服务已经在后台运行,因此我们添加了-d(--do not daemonize)选项以使其在前台运行。 [Unit]Description=flouge Bittorrent客户端守护程序After=网络在线。target[Service]Type=simple User=flouge Group=flouge UMask=007 ExecStart=/usr/bin/flouged-d Restart=on failure#配置强制停止服务之前的等待时间。TimeoutStopSec=300[Install]WantedBy=multi-user。目标 要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。现在使用以下命令重新启动Flouge deamon。 sudo系统控制重启淹没 你可能还想在Ubuntu 20.04启动时启用自动启动。 sudo systemctl启用洪水 检查洪水状态: systemctl状态泛滥 您可以看到Flouged正在运行,autostart已启用。如果它已退出或未运行,您可能需要使用sudo systemctl restart fulled重新启动它。 访问洪水WebUI 为了能够访问Flouge WebUI,我们还需要为Flouge web创建一个systemd服务文件。 sudo nano/etc/systemd/system/flouge web。服务 将以下文本复制并粘贴到文件中。默认情况下,Florge web将作为后台守护程序运行。由于我们将其作为systemd服务运行,而systemd服务已经在后台运行,因此我们添加了-d(--do not daemonize)选项,以使Flouge web在前台运行。 [Unit]Description=flouge Bittorrent客户端Web界面After=网络在线。目标[Service]Type=simple User=pluge Group=pluge UMask=027 ExecStart=/usr/bin/pluge web-d Restart=on failure[Install]WantedBy=multi-User。目标 保存并关闭文件。然后启动并启用洪水网络,检查其状态。 sudo systemctl启动雨淋web sudo systemctl启用雨淋web systemctl状态雨淋web 一旦Florge web服务运行,它就会监听TCP端口8112。现在,在Web浏览器地址栏中键入 你的服务器ip:8112 您将被要求输入一个密码(默认情况下为Floge)以访问Web UI。(您的防火墙可能阻止访问端口8112,因此,如果无法访问web UI,请检查防火墙设置)。 建议更改默认密码。选择更改密码后,连接管理器窗口将弹出,要求您连接到正在127.0.0.1:58846上侦听的洪水守护进程。选择连接并单击“连接”按钮。 然后,您将能够更改WebUI密码。   要添加新的torrents,请单击左上角的“添加”按钮。您可以从本地计算机添加torrent文件,或添加磁铁链接。默认情况下,文件下载到/home/flouge/Downloads目录。 为Flouge WebUI设置反向代理 反向代理是另一台服务器的代理,在本例中是Flouge WebUI。您可以设置反向代理,这样您就可以从域名访问泛滥的WebUI,并确保HTTPS连接的安全。我将向您展示如何使用Nginx和Apache设置反向代理。 Nginx Nginx是非常流行的web服务器和反向代理。如果您更喜欢使用Nginx,请运行以下命令在Ubuntu 20.04上安装它。 sudo apt安装nginx 启动Nginx sudo systemctl start nginx 然后为Flouge WebUI创建一个Nginx服务器块文件。 sudo nano/etc/nginx/conf.d/flouge-webui。形态 将以下文本复制并粘贴到文件中。用你自己的域名替换红色文本。你还应该为你的域名设置DNS记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 服务器{listen 80;listen[:]:80;server_name torrent.yourdomain.com;access_log/var/log/nginx/flouge-web.access;error_log/var/log/nginx/flouge-web.error;location/{proxyu passhttp://127.0.0.1:8112; } } 保存并关闭文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx sudo systemctl重新加载nginx 现在你可以通过域名(torrent.yourdomain.com)访问Flouge WebUI。 阿帕奇 如果您更喜欢Apache而不是Nginx,那么使用以下命令在Ubuntu 20.04上安装Apache web服务器。 sudo apt安装apache2 要使用Apache作为反向代理,我们需要启用代理模块和头模块。 sudo a2enmod代理u http头代理u wstunnel 然后为Flouge WebUI创建一个虚拟主机文件。 sudo nano/etc/apache2/sites available/flouge webui。形态 将以下配置放入该文件。替换torrent。你的地盘。com与您的实际域名。别忘了为这个子域创建DNS记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 <虚拟主机*:80>ServerName torrent。你的地盘。com错误文件404/404。html#HTTP代理ProxyPass/http://localhost:8112/ProxyPassReverse/http://localhost:8112/标题始终未设置X帧选项&lt/VirtualHost> 保存并关闭文件。然后启用这个虚拟主机。 SudoA2ensite淹没了webui。形态 重新启动Apache sudo systemctl重启apache2 现在你可以通过域名(torrent.yourdomain.com)访问Flouge WebUI。 仅在本地主机上侦听 设置反向代理后,我们可以将Flouge web进程配置为仅在本地主机(127.0.0.1)上侦听,这样它就不会直接暴露在Internet上。为了实现这一点,我们需要编辑systemd服务文件。 sudo nano/etc/systemd/system/flouge web。服务 找到下面这行。 ExecStart=/usr/bin/flouge web-d 换成 ExecStart=/usr/bin/flouge web-d-i 127.0.0.1 保存并关闭文件。然后重新加载systemd守护进程。 sudo systemctl后台程序重新加载 并重新启动洪水网络服务。 sudo systemctl重启洪水网络 您可以通过以下方式检查监听状态: sudo ss-lnpt | grep 8112 启用HTTPS 为了保护Web UI,您可以安装免费的Let's Encrypt证书。首先,你需要在Ubuntu20.04服务器上安装Let's Encrypt客户端(certbot)。 sudo apt安装certbot 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令自动获取并安装Let's Encrypt certificate。 sudo certbot--nginx--agree tos--redirect--hsts--staple ocsp--email[email protected]-d torrent。你的地盘。通用域名格式 如果使用Apache,则需要安装Certbot Apache插件。 sudo apt安装python3 certbot apache 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email protected]-d torrent。你的地盘。通用域名格式 哪里: –nginx:使用nginx验证器和安装程序 –apache:使用apache验证器和安装程序 –同意:同意让我们加密服务条款 –重定向:通过添加301重定向来强制HTTPS。 –装订ocsp:启用ocsp装订。 –电子邮件:用于注册和恢复联系的电子邮件。 -d标志后面是域名列表,以逗号分隔。你最多可以添加100个域名。 你会被问到是否想收到来自EFF(电子前沿基金会)的电子邮件。选择Y或N后,将自动获取并为您配置TLS证书,如下消息所示。 完成后,刷新泛滥的Web UI。它将自动重定向到HTTPS连接。 获取TLS证书有困难吗? 如果在尝试获取TLS证书时看到以下错误: 模块的顶点。“挑战”没有属性“TLSSNI01” 你需要编辑一个配置文件。 sudo nano/usr/lib/python3/dist packages/certbot_nginx/configurator。py 改变 return[challenges.HTTP01,challenges.TLSSNI01] 致: 返回[challenges.HTTP01] 保存并关闭文件。然后再次运行上面的certbot命令。 收尾 我希望本教程能帮助你在Ubuntu20.04桌面或服务器上安装Floge。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心。

    2022.03.23 浏览:190
  • 如何在Ubuntu20.04 LTS服务器/桌面上安装Jellyfin媒体服务器

    本教程将向您展示如何在Ubuntu20.04 LTS服务器/桌面上安装Jellyfin媒体服务器。Jellyfin是一款免费的开源应用程序,允许您在一个漂亮的界面中组织电影、电视节目、音乐和照片,并在网络或互联网上将这些媒体文件传输到PC、平板电脑、手机、电视、Roku等设备上。Jellyfin可以安装在Linux、MacOS和Windows上。 水母特征 Jellyfin是Emby媒体服务器的分支。它包含许多与Plex和Emby相同的功能。 与Plex或Emby不同,Jellyfin是100%免费和开源的。没有广告,移动应用没有播放限制。(尽管iOS应用程序不能在后台播放视频。) 观看电视直播并设置自动录音,以扩展您的库。 自动从DVDB、MovieDB、OpenMovie数据库和烂番茄中获取艺术品、元数据。 支持DLNA。 可以安装可选插件以提供附加功能。 支持使用FFMpeg对视频编码/解码进行硬件加速。 还有更多。 在Ubuntu 20.04上安装Jellyfin媒体服务器 Jellyfin不包括在默认的Ubuntu存储库中,但它有自己的存储库。运行以下命令将Jellyfin存储库添加到Ubuntu系统。 echo“deb[arch=$(dpkg——打印架构)] main“|sudo tee/etc/apt/sources.list.d/jellyfin.list 接下来,运行以下命令将Jeffyfin GPG密钥导入Ubuntu系统,以便APT可以在安装期间验证包的完整性。 wget-O-https://repo.jellyfin.org/jellyfin_team.gpg.key| sudo apt按键添加- 由于该存储库使用HTTPS连接,我们还需要安装apt传输HTTPS和ca证书包。 sudo apt安装apt传输https ca证书 最后,在Ubuntu系统上更新包索引并安装Jellyfin。 sudo apt更新sudo apt安装jellyfin 此命令还将安装3个其他软件包作为依赖项: jellyfin ffmpeg:用于视频转码。 jellyfin服务器:后端服务器。 jellyfin web:前端web界面。 现在安装了Jellyfin media server,我们可以通过以下方式检查其状态: 系统控制状态 正如你所见,它在我的Ubuntu 20.04系统上运行。(按q键恢复对终端的控制。) 如果Jellyfin媒体服务器未运行,您可以通过以下方式启动它: sudo systemctl启动果冻 Jellyfin媒体服务器初始设置 基于网络的管理界面可在8096端口获得。您可以通过以下URL访问Jellyfin web界面。 如果您在远程Ubuntu服务器上安装了Jellyfin,则需要使用Nginx或Apache设置反向代理才能访问web UI,本教程稍后将对此进行解释。 第一步是选择你喜欢的语言。 在下一个屏幕上,创建一个用户帐户。 现在可以添加库了。单击添加媒体库按钮。 选择内容类型(电影、音乐、电视节目等)和显示名称。 然后单击加号(+)按钮选择内容文件夹。 请注意,jellyfin用户需要对您的媒体目录具有读取和执行权限。例如,我的2T外部硬盘安装在root所有的/media/linuxbabe/下。不在root组中的用户无法访问它,所以我运行以下命令来授予用户jellyfin读取和执行权限。(我不建议使用chown或chgrp命令更改所有权。使用setfacl命令就足够了。) sudo setfacl-MU:jellyfin:rx/media/linuxbabe/ 您可能还需要分配对各个媒体目录的权限,如下所示。 sudo setfacl-mu:jellyfin:rx/media/linuxbabe/目录名 添加递归标志(-R)很有诱惑力,该标志赋予jellyfin对驱动器上每个文件和子目录的读取和执行权限。 sudo setfacl-R-mu:jellyfin:rx/media/linuxbabe/ 如果您的外部硬盘仅用于存储媒体文件,那么您可以这样做,但如果您的外部硬盘上有敏感文件,请不要这样做。 添加完媒体文件夹后,可以配置库设置。选择你的语言、国家等。 点击Ok和Next按钮。以后可以添加更多库。下一步允许您选择是否启用远程访问。我不建议启用本机远程访问方法,因为它不提供HTTPS加密,所以请取消选中这两个复选框。如果您需要远程访问,请阅读本文后面的如何设置反向代理。 单击下一步并完成按钮。最后,登录你的Jellyfin帐户。 重做初始设置 如果在初始设置中出错,可以重新开始。首先,编辑Jellyfin配置文件。 sudo nano/etc/jellyfin/system。xml 改变 <IsStartupWizardCompleted>真的&lt/IsStartupWizardCompleted> 到 <IsStartupWizardCompleted>假&lt/IsStartupWizardCompleted> 保存并关闭文件。然后重启果冻。 sudo systemctl重启果冻 现在访问localhost:8096/web,您将再次看到安装向导。 在哪里下载电影和电视节目 使用像Florge这样的洪流客户端。 了解如何从Usenet下载。 Usenet的优势 因为其他人看不到你下载的内容,所以它给了你更好的隐私。 超高速下载速度。 Usenet上的文件通常比torrent文件保存的时间长得多。例如,Newsdemon将文件存储4430天(超过12年),因此您可以以非常快的速度下载旧内容。 设置反向代理 因为它监听127.0.0.1:8096,所以Jellyfin Web界面只对来自同一台计算机的连接可用。为了能够从远程计算机访问Jellyfin Web界面,我们可以使用Nginx或Apache为Jellyfin设置反向代理。 Nginx Nginx是非常流行的web服务器和反向代理。如果您更喜欢使用Nginx,请运行以下命令进行安装。 sudo apt安装nginx 然后为Jellyfin创建一个服务器块文件。 sudo nano/etc/nginx/conf.d/jellyfin。形态 将以下内容添加到此文件。更换鱼翅。实例使用你自己的域名。您还应该为此子域创建DNS记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 服务器{listen 80;listen[:]:80;服务器名jellyfin.example.com;访问日志/var/log/nginx/jellyfin.access;错误日志/var/log/nginx/jellyfin.error;设置$jellyfin 127.0.0.1;位置/{proxyu passhttp://127.0.0.1:8096; 代理设置头主机$Host;代理集头X-Real-IP$remoteu addr;proxy_set_header X-Forwarded-For$proxy_add_X_Forwarded_For;proxy_set_header X-Forwarded-Proto$方案;代理集头X转发协议$方案;proxy_set_header X-Forwarded-Host$http_Host;#当nginx代理在流媒体代理缓冲关闭时资源非常紧张时,禁用缓冲;}#/web的位置块-这纯粹是为了美观,所以/web/#!/可以工作,而不必转到/web/index。html/#!/地点~^/web/${#Proxy main Jellyfin traffic Proxy_pass http://$Jellyfin:8096/web/index.html/;Proxy_set_header Host$Host;Proxy_header X-Real-IP$remote_addr;Proxy_set_header X-Forwarded$Proxy_add_X_-Forwarded$Proto;Proxy_set_header X-Forwarded$scheme;Proxy_set_header X-Forwarded$Protocol$schemer X-Forwarded-Host$http_Host;}位置/套接字{#代理Jellyfin Websockets流量代理pass http://$127.0.0.1:8096;代理http version 1.1;代理set header Upgrade$http Upgrade;代理set header Connection“Upgrade”; 代理设置头主机$Host;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_X_Forwarded_For;proxy_set_header X-Forwarded-Proto$方案;代理集头X转发协议$方案;proxy_set_header X-Forwarded-Host$http_Host;}安全/XSS缓解标题添加标题X-Frame-Options“SAMEORIGIN”;添加_头X-XSS-Protection“1;模式=块”;添加标题X-Content-Type-Options“nosniff”;} 保存并关闭此文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 现在,您可以通过Jellyfin访问Jellyfin媒体服务器。实例通用域名格式。 阿帕奇 如果您更喜欢Apache而不是Nginx,那么使用以下命令安装ApacheWeb服务器。 sudo apt安装apache2 要使用Apache作为反向代理,我们需要启用代理模块和头模块。 sudo a2enmod代理u http头代理u wstunnel 然后为Jellyfin创建一个虚拟主机文件。 sudo nano/etc/apache2/网站可用/jellyfin。形态 将以下配置放入该文件。更换鱼翅。实例com与您的实际域名。别忘了为这个子域创建DNS记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 <虚拟主机*:80>服务器名jellyfin。实例com错误文件404/404。html#HTTP代理ProxyPass/http://localhost:8096/ProxyPassReverse/http://localhost:8096/#Websocket代理SSLProxyEngine on<位置/:/websockets/notifications>ProxyPasswss://localhost:8096/:/websockets/notificationsProxyPassReversewss://localhost:8096/:/websockets/notifications&lt/地点>标题始终未设置X帧选项&lt/VirtualHost> 保存并关闭文件。然后启用这个虚拟主机。 sudo a2ensite果冻。形态 重新启动Apache sudo systemctl重启apache2 现在,您可以使用域名Jellyfin访问Jellyfin媒体服务器。实例通用域名格式。 启用HTTPS 为了在您从外部访问Jellyfin服务器时加密HTTP流量,我们可以通过安装Let’s encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu 20.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--staple ocsp--email[email protected]-d jellyfin。实例通用域名格式 如果使用Apache,则需要安装Certbot Apache插件。 sudo apt安装python3 certbot apache 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email protected]-d jellyfin。实例通用域名格式 哪里: --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 您可以通过HTTPS访问Jellyfin web界面:https://jellyfin.example.com. 如何在Ubuntu 20.04上升级Jellyfin 当新版本的Jellyfin media server问世时,您可以通过执行以下命令对其进行升级。 sudo apt更新sudo apt升级 然后重启果冻。 sudo systemctl重启果冻 故障排除提示 发送套接字消息时出错 如果您的Ubuntu服务器运行WireGuard VPN,您可能会在Jellyfin日志(sudo journalctl-eu Jellyfin)中看到以下错误。 [ERR]从10.0.0.102向239.255.255.250:1900系统发送套接字消息时出错。网插座。SocketException(0xFFFFFFFF):ai_标志的错误值 此错误意味着无法将消息从WireGuard接口发送到239.255.255.250,这是SSDP(简单服务发现协议)多播地址。这是因为您的WireGuard接口不允许访问IP地址。 要解决此问题,请编辑WireGuard接口配置文件。 sudo nano/etc/wireguard/你的界面。形态 查找AllowedIPs参数。我的像下面。 AllowedIPs=10.0.0.0/8 如您所见,VPN客户端只允许连接到10.0.0.0/8网络。现在添加239.255.255.250地址。 AllowedIPs=10.0.0.0/8239.255.255.250 保存并关闭文件。重新启动WireGuard。 sudo systemctl重新启动[电子邮件和#160;受保护]界面 重启果冻。 sudo systemctl重启果冻 再次查看Jellyfin日志(sudo journalctl-eu Jellyfin)。上述错误应该消失。 无效签名 如果在运行sudo apt update命令时看到以下错误, 以下签名无效:EXPKEYSIG 49023CD01DE21A7B Jellyfin团队<[email protected]> 您需要使用以下命令重新导入Jellyfin公钥。 wget-O-https://repo.jellyfin.org/jellyfin_team.gpg.key| sudo apt按键添加- 收尾 我希望本教程能帮助你在Ubuntu20.04上安装Jellyfin媒体服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:243
  • 使用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--电子邮件[电子邮件 受保护]-d doh。实例通用域名格式 哪里: certonly:获取证书,但不要安装它。 --standalone:使用standalone插件获取证书 --首选挑战http:执行http-01挑战以验证我们的域,该域将使用端口80。 --同意:同意让我们加密服务条款。 --电子邮件:电子邮件地址用于帐户注册和恢复。 -d:指定你的域名。 从下面的截图可以看到,我成功地获得了证书。

    2022.03.23 浏览:402
  • 使用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 浏览:181
  • 如何在Ubuntu 20.04中安装uTorrent

    本教程将向您展示如何在Ubuntu 20.04中安装uTorrent。它还包括在Ubuntu上自动启动uTorrent服务器的说明,以及如何使用Nginx/Apache web服务器为那些希望通过域名访问uTorrent的人设置反向代理。 注意:Linux的uTorrent客户端已经7年没有更新了。我建议在Ubuntu上安装Bullge BitTorrent客户端。 Linux原生uTorrent客户端是一个基于web的应用程序,这意味着您将在web浏览器中使用uTorrent。该应用程序的正式名称为uTorrent server,其特点是: 分布式哈希表(DHT) UPnP端口映射 NAT-PMP端口映射 上传速率限制 下载速率限制 排队 可配置的同步上传对等点数量限制 增量文件分配 块级工件拾取 单独的线程用于文件检查和下载 单线程和单端口可用于多个torrent下载 BitTorrent扩展协议 多跟踪器扩展支持 公平贸易扩展 紧凑型跟踪器扩展 快速恢复 如果无法快速恢复,请排队检查torrent文件 HTTP种子支持 从其他BitTorrent客户端恢复部分下载 文件大小大于2GB 选择性下载多文件种子 IPv6 高性能网络栈 uTP–具有动态拥塞控制的基于UDP的高级传输 如何在Ubuntu 20.04中安装uTorrent uTorrent for Linux的最新版本是为Ubuntu13.04发布的,但我们仍然可以在Ubuntu20.04 LTS中运行它。转到uTorrent Linux下载页面,下载uTorrent服务器包(适用于Ubuntu13.04)。 或者,您可以打开一个终端窗口,运行以下命令从命令行下载它。 64位 wget http://download-hr.utorrent.com/track/beta/endpoint/utserver/os/linux-x64-ubuntu-13-04 -O utserver.tar.gz 32位 wget http://download-hr.utorrent.com/track/beta/endpoint/utserver/os/linux-i386-ubuntu-13-04 -O utserver.tar.gz 下载后,将工作目录更改为下载uTorrent服务器文件的目录。然后运行以下命令来提取tar。gz文件到/opt/目录。 sudo tar xvf utserver.tar.gz -C /opt/ 接下来,通过执行以下命令安装所需的依赖项。 sudo apt install libssl-dev wget sudo apt install ./libssl1.0.0_1.0.2n-1ubuntu5.3_amd64.deb 安装依赖项后,创建一个符号链接。 sudo ln -s /opt/utorrent-server-alpha-v3_3/utserver /usr/bin/utserver 使用以下命令启动uTorrent服务器。默认情况下,uTorrent服务器监听0.0.0.0:8080。如果端口8080上还有另一个服务也在监听,您应该暂时停止该服务。uTorrent还将使用端口10000和6881。-daemon选项将使uTorrent服务器在后台运行。 utserver -settingspath /opt/utorrent-server-alpha-v3_3/ -daemon 现在,您可以通过在web浏览器地址栏中键入以下文本来访问浏览器中的uTorrent web UI。 your-server-ip:8080/gui 如果要在本地计算机上安装uTorrent,请将服务器ip替换为本地主机。 localhost:8080/gui 如果你的Ubuntu服务器上有防火墙,那么你需要允许访问端口8080和6881。例如,如果您正在使用UFW,则运行以下两个命令以打开端口8080和6881。 sudo ufw allow 8080/tcp sudo ufw allow 6881/tcp 请注意,URL中需要/gui,否则您将遇到无效请求错误。当要求输入用户名和密码时,在用户名字段中输入admin,并将密码字段留空。 登录后,您应该通过单击gear图标,然后选择左侧菜单上的Web UI来更改管理员密码。您可以同时更改用户名和密码,这比使用admin作为用户名更安全。 如果端口8080上有其他服务监听,那么在连接部分,您可以将uTorrent监听端口更改为其他端口,如8081。更改端口后,必须使用以下命令重新启动uTorrent服务器。 sudo pkill utserver utserver -settingspath /opt/utorrent-server-alpha-v3_3/ & 您可以在目录选项卡中设置默认下载目录。 在Ubuntu上自动启动uTorrent服务器 要启用自动启动,我们可以使用以下命令创建systemd服务。(Nano是一个命令行文本编辑器。) sudo nano /etc/systemd/system/utserver.service 将以下文本放入文件中。请注意,由于我们将使用systemd启动uTorrent,因此在start命令中不需要-daemon选项。 [Unit] Description=uTorrent Server After=network.target [Service] Type=simple User=utorrent Group=utorrent ExecStart=/usr/bin/utserver -settingspath /opt/utorrent-server-alpha-v3_3/ ExecStop=/usr/bin/pkill utserver Restart=always SyslogIdentifier=uTorrent Server [Install] WantedBy=multi-user.target 按Ctrl+O,然后按Enter键保存文件。按Ctrl+X退出。然后重新加载系统D。 sudo systemctl daemon-reload 不建议以root用户身份运行uTorrent server,因此我们在服务文件中指定uTorrent server应以uTorrent用户和组的身份运行,后者没有root权限。使用以下命令创建utorrent系统用户和组。 sudo adduser --system --group utorrent 接下来,停止当前的uTorrent服务器。 sudo pkill utserver 使用systemd服务启动uTorrent服务器。 sudo systemctl start utserver 启动时启用自动启动。 sudo systemctl enable utserver 现在检查utserver状态。 systemctl status utserver 我们可以看到,自动启动已启用,并且uTorrent服务器正在运行。创建utorrent用户时,还会在/home/utorrent/中创建一个主目录。建议您将此主目录设置为torrent下载目录,因为utorrent用户具有写入权限。我们还需要通过执行以下命令,使utorrent成为/opt/utorrent-server-alpha-v3_3/目录的所有者。 sudo chown utorrent:utorrent /opt/utorrent-server-alpha-v3_3/ -R 下载torrents时,您可能想使用VPN隐藏IP地址。 如何在桌面Linux上安装和使用ProtNVPN 注意:剩下的内容是为那些对web服务器和DNS记录有基本了解的人准备的。如果您不知道记录是什么Apache/Nginx或DNS,则无需遵循以下说明。 设置Nginx反向代理 要使用域名从远程连接访问uTorrent服务器,可以设置Nginx反向代理。 子目录配置 如果你的Ubuntu服务器已经有一个由Nginx提供服务的网站,那么你可以配置现有的Nginx服务器块,这样你就可以从域名的子目录访问uTorrent Web UI。 sudo nano /etc/nginx/conf.d/your-website.conf 在服务器块中,粘贴以下指令。如果您之前更改了端口,那么您也需要在此处更改它。 location /gui { proxy_pass http://localhost:8080; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx。 sudo systemctl reload nginx 现在你可以通过 your-domain.com/gui 子域配置 如果Ubuntu服务器上没有现有的网站,那么必须创建一个新的服务器块文件。在Ubuntu 20.04或Ubuntu 19.04上安装Nginx。 sudo apt install nginx 启动Nginx web服务器。 sudo systemctl start nginx 然后在/etc/nginx/conf.d/目录中创建一个新的服务器块文件。 sudo nano /etc/nginx/conf.d/utserver-proxy.conf 将以下文本粘贴到文件中。替换utorrent。你的领域。com与您首选的子域通信,不要忘记为其创建记录。 server { listen 80; server_name utorrent.your-domain.com; error_log /var/log/nginx/uttorrent.error; location /gui { proxy_pass http://localhost:8080; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx。 sudo systemctl reload nginx 现在你可以通过 utorrent.your-domain.com/gui 设置Apache反向代理 如果使用ApacheWeb服务器而不是Nginx,请按照以下说明设置反向代理。 安装Apache web服务器。 sudo apt install apache2 要使用Apache作为反向代理,我们需要启用代理模块,还需要启用重写模块。 sudo a2enmod proxy proxy_http rewrite 然后为uTorrent创建一个虚拟主机文件。 sudo nano /etc/apache2/sites-available/utorrent.conf 将以下配置放入该文件。替换utorrent。你的领域。com与你的实际域名,别忘了为它设置一个记录。 <VirtualHost *:80> ServerName utorrent.your-domain.com RewriteEngine on RewriteRule ^/gui(/?)(.*)$ /$2 [PT] ProxyPreserveHost on ProxyPass / ProxyPassReverse / </VirtualHost> 保存并关闭文件。然后启用这个虚拟主机。 sudo a2ensite utorrent.conf 重新启动Apache以使更改生效。 sudo systemctl restart apache2 现在,您可以通过在浏览器地址栏中输入子域(uTorrent.your-domain.com)远程访问uTorrent服务器。如果未加载uTorrent Web UI,则可能需要删除默认虚拟主机文件并重新启动Apache Web服务器。 启用HTTPS 为了加密HTTP流量,我们可以通过安装Let's encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu20.04或Ubuntu19.04服务器上安装Let's Encrypt client(certbot)。 sudo apt install certbot 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt install python3-certbot-nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d utorrent.your-domain.com 如果使用Apache,请安装Certbot Apache插件。 sudo apt install python3-certbot-apache 并运行此命令以获取并安装TLS证书。 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d utorrent.your-domain.com 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 现在你应该可以通过https://utorrent.your-domain.com/gui. 如何在Ubuntu上卸载uTorrent 要删除uTorrent,请先停止当前的uTorrent进程。 sudo pkill utserver 然后删除安装目录。 sudo rm -r /opt/utorrent-server-alpha-v3_3/ 并移除符号链接。 sudo rm /usr/bin/utserver 收尾 我希望本教程能帮助您在Ubuntu 20.04 LTS上安装uTorrent。你可能还想看看如何在Ubuntu上安装洪水或qBitTorrent的教程。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:347
  • 在Ubuntu 20.04/18.04上设置自己的WireGuard VPN服务器

    本教程将向您展示如何在Ubuntu上设置自己的WireGuard VPN服务器。WireGuard是专门为Linux内核设计的。它运行在Linux内核中,允许您创建快速、现代、安全的VPN隧道。 WireGuard VPN功能 轻量级和超高速,将OpenVPN吹出水面。 跨平台。WireGuard可以在Linux、BSD、macOS、Windows、Android、iOS和OpenWRT上运行。 用户身份验证是通过交换公钥来完成的,类似于SSH密钥。 它将静态隧道IP地址分配给VPN客户端。有些人可能不喜欢它,但在某些情况下它可能非常有用。 移动设备可以在Wi-Fi和移动网络之间无缝切换,而不会中断任何连接。 它的目标是在大多数使用情况下取代OpenVPN和IPSec。 WireGuard是我选择的VPN协议,无需为我的专用网络设置TLS加密。 要求 要学习本教程,您需要一个VPS(虚拟专用服务器),可以自由访问被屏蔽的网站(在您的国家或互联网过滤系统之外)。我推荐Kamatera VPS,其特点是: 30天免费试用。 起价为每月4美元(1GB内存) 基于KVM的高性能VPS 世界各地的9个数据中心,包括美国、加拿大、英国、德国、荷兰、香港和ISRALL。 按照下面链接的教程在Kamatera创建Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 一旦你有了运行Ubuntu的VPS,请按照下面的说明操作。 本教程假设VPN服务器和VPN客户端都运行Ubuntu操作系统。 第一步:在Ubuntu服务器和桌面上安装WireGuard 登录Ubuntu服务器,然后运行以下命令安装WireGuard。 Ubuntu 20.04 Ubuntu20.04附带Linux内核5.4,它有一个内置的wireguard模块。 sudo apt update sudo apt install wireguard wireguard-tools Ubuntu 18.04 Ubuntu18.04附带Linux内核4.15,因此用户需要先安装硬件支持内核(HWE),它将在您的系统上安装内核5.4。 sudo apt update sudo apt install linux-generic-hwe-18.04-edge 重新启动Ubuntu 18.04服务器并安装WireGuard。 sudo shutdown -r now sudo apt install wireguard wireguard-tools wireguard-dkms 然后使用相同的命令在本地Ubuntu计算机(VPN客户端)上安装WireGuard。请注意,您还需要在客户端上安装openresolv包来配置DNS服务器。 sudo apt install openresolv 第2步:生成公钥/私钥对 服务器 在Ubuntu服务器上运行以下命令,创建一个公钥/私钥对,它将保存在/etc/wireguard/目录下。 wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key 客户 运行以下命令在本地Ubuntu计算机(VPN客户端)上创建公钥/私钥对。 wg genkey | sudo tee /etc/wireguard/client_private.key | wg pubkey | sudo tee /etc/wireguard/client_public.key 步骤3:创建WireGuard配置文件 服务器 使用命令行文本编辑器(如Nano)在Ubuntu服务器上创建WireGuard配置文件。wg0将是网络接口名称。 sudo nano /etc/wireguard/wg0.conf 复制以下文本并将其粘贴到配置文件中。您需要使用自己的服务器私钥和客户端公钥。 [Interface] Address = 10.10.10.1/24 ListenPort = 51820 PrivateKey = cD+ZjXiVIX+0iSX1PNijl4a+88lCbDgw7kO78oXXLEc= [Peer] PublicKey = AYQJf6HbkQ0X0Xyt+cTMTuJe3RFwbuCMF46LKgTwzz4= AllowedIPs = 10.10.10.2/32 哪里: 地址:指定VPN服务器的专用IP地址。这里我使用的是10.10.10.0/24网络范围,所以它不会与您的家庭网络范围冲突。(大多数家庭路由器使用192.168.0.0/24或192.168.1.0/24)。10.10.10.1是VPN服务器的专用IP地址。 PrivateKey:VPN服务器的私钥,可在/etc/wireguard/server_private中找到。服务器上的密钥文件。 ListenPort:WireGuard VPN服务器将在默认的UDP端口51820上侦听。 公钥:VPN客户端的公钥,可以在/etc/wireguard/client_public中找到。客户端计算机上的密钥文件。 AllowedIP:VPN客户端允许使用的IP地址。在本例中,客户端只能在VPN隧道内使用10.10.10.2 IP地址。 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。按Ctrl+X退出。) 更改文件权限模式,以便只有root用户可以读取文件。 sudo chmod 600 /etc/wireguard/ -R 客户 使用命令行文本编辑器(如Nano)在本地Ubuntu计算机上创建WireGuard配置文件。wg-client0将是网络接口名称。 sudo nano /etc/wireguard/wg-client0.conf 复制以下文本并将其粘贴到配置文件中。您需要使用自己的客户端私钥和服务器公钥。 [Interface] Address = 10.10.10.2/24 DNS = 10.10.10.1 PrivateKey = cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI= [Peer] PublicKey = RaoAdsIEIwgV9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I= AllowedIPs = 0.0.0.0/0 Endpoint = 12.34.56.78:51820 PersistentKeepalive = 25 哪里: 地址:指定VPN客户端的专用IP地址。 DNS:指定10.10.10.1(VPN服务器)作为DNS服务器。它将通过resolvconf命令进行配置。您还可以为冗余指定多个DNS服务器,如下所示:DNS=10.10.10.1 8.8.8.8 PrivateKey:客户端的私钥,可以在/etc/wireguard/client_private中找到。客户端计算机上的密钥文件。 公钥:服务器的公钥,可以在/etc/wireguard/server_public中找到。服务器上的密钥文件。 AllowedIPs:0.0.0.0/0代表整个互联网,这意味着所有到互联网的流量都应该通过VPN路由。 端点:VPN服务器的公共IP地址和端口号。将12.34.56.78替换为服务器的真实公共IP地址。 PersistentKeepalive:每25秒向对等方发送一个经过身份验证的空数据包,以保持连接有效。如果未启用PersistentKeepalive,VPN服务器可能无法ping VPN客户端。 保存并关闭文件。 更改文件模式,以便只有root用户可以读取文件。 sudo chmod 600 /etc/wireguard/ -R 步骤4:在服务器上启用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 步骤5:在服务器上配置IP伪装 我们需要在服务器防火墙中设置IP伪装,以便服务器成为VPN客户端的虚拟路由器。我将使用UFW,它是iptables防火墙的前端。在Ubuntu上通过以下方式安装UFW: sudo apt install ufw 首先,需要允许SSH通信。 sudo ufw allow 22/tcp 接下来,找到服务器主网络接口的名称。 ip -c a 正如你所看到的,在我的Ubuntu服务器上,它被命名为enp3s0。 要配置IP伪装,我们必须在UFW配置文件中添加iptables命令。 sudo nano /etc/ufw/before.rules 默认情况下,过滤器表有一些规则。在该文件末尾添加以下行。用您自己的网络接口名称替换enp3s0。 # NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o enp3s0 -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)。 步骤6:在服务器上安装DNS解析程序 由于我们将VPN服务器指定为客户端的DNS服务器,因此需要在VPN服务器上运行DNS解析器。我们可以安装bind9 DNS服务器。 sudo apt install bind9 一旦安装,BIND将自动启动。您可以通过以下方式检查其状态: systemctl status bind9 样本输出: ● named.service - BIND Domain Name Server Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-05-17 08:11:26 UTC; 37s ago Docs: man:named(8) Main PID: 13820 (named) Tasks: 5 (limit: 1074) Memory: 14.3M CGroup: /system.slice/named.service └─13820 /usr/sbin/named -f -u bind 如果没有运行,请从以下内容开始: sudo systemctl start bind9 编辑绑定DNS服务器的配置文件。 sudo nano /etc/bind/named.conf.options 添加以下行以允许VPN客户端发送递归DNS查询。 allow-recursion { 127.0.0.1; 10.10.10.0/24; }; 保存并关闭文件。重新启动BIND9以使更改生效。 sudo systemctl restart bind9 然后,您需要运行以下命令以允许VPN客户端连接到端口53。 sudo ufw insert 1 allow in from 10.10.10.0/24 第7步:打开防火墙中的WireGuard端口 运行以下命令打开服务器上的UDP端口51820。 sudo ufw allow 51820/udp 第8步:启动WireGuard 服务器 在服务器上运行以下命令以启动WireGuard。 sudo systemctl start [email protected] 在系统启动时启用自动启动。 sudo systemctl enable [email protected] 使用以下命令检查其状态。其状态应为活动(已退出)。 systemctl status [email protected] 现在WireGuard服务器已准备好接受客户端连接。 客户 启动铁丝网。 sudo systemctl start [email protected] 在系统启动时启用自动启动。 sudo systemctl enable [email protected] 检查其状态: systemctl status [email protected] 现在进入这个网站:https://icanhazip.com/检查你的公共IP地址。如果一切顺利,它应该显示VPN服务器的公共IP地址,而不是客户端计算机的公共IP地址。 您还可以运行以下命令来获取当前的公共IP地址。 curl https://icanhazip.com 故障排除提示 不能用ping 您可以从VPN服务器ping到VPN客户端(ping 10.10.10.2),查看隧道是否工作。如果在ping中看到以下错误消息, ping: sendmsg: Required key not available 可能是AllowedIPs参数错误,比如输入错误。修复错误后,重新启动VPN服务器和VPN客户端。 另一个原因可能是您忘记在服务器配置文件中添加ListenPort=51820。 公共IP不会改变 如果VPN隧道成功建立,但客户端公共IP地址没有更改,那是因为UFW配置文件中的伪装或转发规则不起作用。我以前在/etc/ufw/中有一次输入错误。规则文件,这导致我的电脑无法浏览互联网。 请注意,我不建议在WireGuard配置文件的[Interface]部分使用SaveConfig=true。SaveConfig告诉WireGuard在关机时保存运行时配置。因此,如果在配置文件中添加额外的[Peer],然后重新启动WireGuard,新添加的配置将被覆盖。 在Linux内核中启用调试日志记录 如果使用Linux内核5.6+,可以使用以下命令启用WireGuard的调试日志记录。 sudo su - echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control 然后可以使用查看调试日志 sudo dmesg -wH 或 sudo journalctl -kf 重新启动 如果VPN仍然无法工作,请尝试重新启动VPN服务器。 sudo systemctl restart [email protected] 然后停止VPN客户端。 sudo systemctl stop [email protected] 并升级VPN客户端上的软件包。 sudo apt update; sudo apt upgrade 接下来,重新启动VPN客户端。 sudo shutdown -r now sudo systemctl start [email protected] 如果您的WiReGueVPN只能在重新启动之后工作,请考虑添加CRON作业来自动重新启动服务。 sudo crontab -e 在此文件中添加以下行。 @daily systemctl restart [email protected] WireGuard和;OpenConnect 在我的一台VPS服务器上,我安装了WireGuard和OpenConnect VPN服务器。速度测试如下。对你来说可能不会很快,因为我的电脑和VPN服务器之间的连接非常差。速度取决于VPN客户端和VPN服务器之间的延迟和数据包丢失率。 WireGuard是赢家。它比OpenConnect快近3倍。 TCP上的OpenConnect比UDP上的OpenConnect更快。惊喜 WireGuard在播放YouTube视频时可以达到52296kbps(约51Mbit/s)。 OpenConnect(采用TCP BBR算法的TLS)在播放YouTube视频时能够达到16504kbps(约16Mbit/s)。 在播放YouTube视频时,OpenConnect(UDP上的TLS)能够达到12997 Kbps(约12.7 Mbit/s)。 添加其他VPN客户端 WireGuard设计用于将一个IP地址与一个VPN客户端相关联。要添加更多VPN客户端,需要为每个客户端创建唯一的私钥/公钥对,然后在服务器的配置文件(/etc/wireguard/wg0.conf)中添加每个VPN客户端的公钥,如下所示: [Interface] Address = 10.10.10.1/24 PrivateKey = UIFH+XXjJ0g0uAZJ6vPqsbb/o68SYVQdmYJpy/FlGFA= ListenPort = 51820 [Peer] PublicKey = 75VNV7HqFh+3QIT5OHZkcjWfbjx8tc6Ck62gZJT/KRA= AllowedIPs = 10.10.10.2/32 [Peer] PublicKey = YYh4/1Z/3rtl0i7cJorcinB7T4UOIzScifPNEIESFD8= AllowedIPs = 10.10.10.3/32 [Peer] PublicKey = EVstHZc6QamzPgefDGPLFEjGyedJk6SZbCJttpzcvC8= AllowedIPs = 10.10.10.4/32 每个VPN客户端将有一个静态专用IP地址(10.10.10.2、10.10.10.3、10.10.10.4等)。重新启动WireGuard服务器,使更改生效。 sudo systemctl restart [email protected] 然后像往常一样在每个VPN客户端上添加WireGuard配置。 VPN连接中断时自动重启 有时VPN连接会由于各种原因而中断。您可以运行以下命令来检查VPN客户端是否可以ping VPN服务器的私有IP地址(10.10.10.1)。如果ping失败,则将执行右侧的命令以重新启动VPN客户端。|是Bash中的OR运算符。只有当左边的命令返回错误时,它才会执行右边的命令。 ping -c9 10.10.10.1 > /dev/null || systemctl restart [email protected] ping将进行9次,即9秒。可以在Bash shell中使用for循环,使整个命令运行6次,即54秒。 for ((i=1; i<=6; i++)) do (ping -c9 10.10.10.1 > /dev/null || systemctl restart [email protected]) done 现在,我们可以创建一个Cron作业来自动化这项任务。在VPN客户端上编辑根用户的crontab文件。 sudo crontab -e Bash不是Cron中的默认shell。可以在Crontab文件的开头添加以下行,使其成为默认值。 SHELL=/bin/bash 然后在文件末尾添加以下行。 * * * * * for ((i=1; i<=6; i++)) do (ping -c9 10.10.10.1 > /dev/null || systemctl restart [email protected]) done 这个Cron作业每分钟运行一次,每分钟有6次检查。保存并关闭文件。 高级用法 现在,我将向您展示如何在WireGuard VPN中使用策略路由、拆分隧道和VPN终止开关。请注意,不建议将它们相互结合使用。如果使用策略路由,则不应启用拆分隧道或VPN kill switch,反之亦然。本节面向高级用户。如果你是一个刚开始使用WireGuard的人,不知道它们的用途,那么就不要使用本节中的说明。 策略路由 默认情况下,VPN客户端上的所有流量都将通过VPN服务器路由。有时,您可能只希望根据传输层协议和目标端口路由特定类型的流量。这就是所谓的策略路由。 在客户端计算机上配置了策略路由,我们需要先停止VPN连接。 sudo systemctl stop [email protected] 然后编辑客户端配置文件。 sudo nano /etc/wireguard/wg-client0.conf 例如,如果在[interface]部分添加以下3行,WireGuard将创建一个名为“1234”的路由表,并将ip规则添加到路由表中。在本例中,只有当TCP用作传输层协议且目标端口为25时,即当客户端计算机发送电子邮件时,流量才会通过VPN服务器路由。 Table = 1234 PostUp = ip rule add ipproto tcp dport 25 table 1234 PreDown = ip rule delete ipproto tcp dport 25 table 1234 注意:为了配置策略路由,客户端应该运行Ubuntu20.04或更高版本。Ubuntu 18.04上的ip实用程序不支持ipproto和dport参数。 保存并关闭文件。然后启动WireGuard客户端。 sudo systemctl start [email protected] 如果要为TCP端口80和443路由流量,请使用以下语法。 Table = 1234 PostUp = ip rule add ipproto tcp dport 80 table 1234; ip rule add ipproto tcp dport 443 table 1234 PreDown = ip rule delete ipproto tcp dport 80 table 1234; ip rule delete ipproto tcp dport 443 table 1234 请记住,在更改策略路由规则之前,应该停止WireGuard VPN连接。 还可以指定如下所示的端口范围(TCP端口26到TCP端口10240)。 Table = 1234 PostUp = ip rule add ipproto tcp dport 26-10240 table 1234 PreDown = ip rule delete ipproto tcp dport 26-10240 table 1234 如果要同时指定TCP和UDP端口,请删除ipproto TCP。 Table = 1234 PostUp = ip rule add dport 26-10240 table 1234 PreDown = ip rule delete dport 26-10240 table 1234 您可能希望将VPN客户端配置为仅当通信量发送到特定IP地址时才使用VPN隧道。您可以使用to选项来实现这一点。 Table = 1234 PostUp = ip rule add to 10.0.0.0/24 table 1234 PreDown = ip rule delete to 10.0.0.0/24 table 1234 隧道分离 默认情况下,VPN客户端上的所有流量都将通过VPN服务器路由。下面介绍如何启用拆分隧道,这样只有到10.10.10.0/24 IP范围的流量才会通过WireGuard VPN进行隧道传输。当您想要为多个云服务器构建专用网络时,这非常有用,因为VPN客户端将在云服务器上运行,如果使用完整的VPN隧道,则可能会失去与云服务器的连接。 编辑客户端配置文件。 sudo nano /etc/wireguard/wg-client0.conf 改变 AllowedIPs = 0.0.0.0/0 到 AllowedIPs = 10.10.10.0/24 因此,只有当目标地址在10.10.10.0/24 IP范围内时,流量才会通过VPN路由。保存并关闭文件。然后重启WireGuard客户端。 sudo systemctl restart [email protected] 您还可以允许多个IP范围。假设VPN服务器还管理10.10.20.0/24网络,那么您可以在VPN客户端上配置AllowedIP,如下所示: AllowedIPs = 10.10.10.0/24, 10.10.20.0/24 因此VPN客户端可以通过VPN服务器访问10.10.20.0/24网络,反之亦然。 要添加单个IP地址,请使用以下语法。 AllowedIPs = 10.10.10.0/24, 10.10.20.0/24, 8.8.8.8/32 这会告诉客户端在与8.8.8.8通信时使用VPN服务器。 VPN终止开关 默认情况下,当VPN连接中断时,您的计算机可以通过普通网关访问Internet。您可能希望启用kill switch功能,它可以防止未加密的数据包通过非WireGuard接口流动。 停止WireGuard客户端进程。 sudo systemctl stop [email protected] 编辑客户端配置文件。 sudo nano /etc/wireguard/wg-client0.conf 在[interface]部分添加以下两行。 PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT 这样地: [Interface] Address = 10.10.10.2/24 DNS = 10.10.10.1 PrivateKey = cOFA+x5UvHF+a3xJ6enLatG+DoE3I5PhMgKrMKkUyXI= PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT PreDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT [Peer] PublicKey = RaoAdsIEIwgV9DHNSubxWVG+nZ1GP/c3OU6A/efBJ0I= AllowedIPs = 0.0.0.0/0 Endpoint = 12.34.56.78:51820 PersistentKeepalive = 25 保存并关闭文件。然后启动WireGuard客户端。 sudo systemctl start [email protected] WireGuard接口中的多个地址 WireGuard接口可以有多个IP地址。例如,VPN客户端上可以有两个IP地址。 [Interface] Address = 10.10.10.2/24 Address = 10.10.10.3/24 .... 在这种情况下,您需要在VPN服务器上为此特定客户端允许多个IP地址,否则VPN客户端可能无法连接到VPN服务器。 [Peer] ... AllowedIPs = 10.10.10.2/32, 10.10.10.3/32 您可以使用以下命令检查属于网络接口的IP地址。 ip -c a 笔记 ifconfig命令只能显示网络接口的IP地址。 如果您在新系统中设置了另一个WireGuard接口。conf文件,然后它需要绑定到51820以外的端口,否则您将看到“地址已在使用”错误。 收尾 就这样!我希望本教程能帮助你在Ubuntu上安装和配置WireGuard。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门?

    2022.03.23 浏览:304
  • 使用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 浏览:163
  • 在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 浏览:615
  • 在Ubuntu上构建自己的电子邮件服务器:基本Postfix设置

    为什么要运行自己的电子邮件服务器?也许你有一个需要向用户发送电子邮件的网站,或者你想将电子邮件存储在自己的服务器上以保护隐私。然而,构建自己的电子邮件服务器可能会让人头疼,因为有太多软件组件需要正确安装和配置。为了让你的旅程更轻松,我正在创建一个关于如何在Ubuntu上构建自己的电子邮件服务器的教程系列。 我有信心地说,这是关于在互联网上从头开始构建电子邮件服务器的最好、最全面的教程系列。你不仅会有一个工作的电子邮件服务器,而且你会更好地了解电子邮件的工作原理。本系列教程分为13个部分。 设置基本的Postfix SMTP服务器 设置Dovecot IMAP服务器和TLS加密 使用PostfixAdmin创建虚拟邮箱(Ubuntu 18.04、Ubuntu 20.04) 创建SPF和DKIM记录以通过垃圾邮件过滤器 设置DMARC以保护您的域声誉 7个有效的建议,防止你的电子邮件被标记为垃圾邮件 在Ubuntu上安装Roundcube Webmail(Ubuntu 18.04、Ubuntu 20.04) 如何在PostfixAdmin中托管多个邮件域 用后缀阻止垃圾邮件 用SpamAssassin阻止垃圾邮件 在Ubuntu邮件服务器上设置Amavis和ClamAV 如何使用自托管VPN服务器保护电子邮件服务器免受黑客攻击 (可选)在Postfix中启用并配置Postscreen以阻止垃圾邮件 我知道这似乎是一项非常艰巨的任务。然而,基于你想要实现的目标,你可能不需要遵循所有这些目标。我的文章很容易阅读,所以如果你花些时间来阅读,你就会有一个工作的电子邮件服务器。 提示:如果你不想从头开始构建一个电子邮件服务器,这是一个漫长而乏味的过程,那么你可以使用iRedMail快速轻松地建立一个功能齐全的邮件服务器。 本文是本系列教程的第1部分。在本文中,我将向您展示如何设置一个非常基本的Postfix SMTP服务器,也称为MTA(邮件传输代理)。完成本文后,您应该能够在自己的电子邮件服务器上使用自己的电子邮件域发送和接收电子邮件。本教程在Ubuntu20.04和Ubuntu18.04服务器上进行测试。 关于后缀 Postfix是最先进的邮件传输代理(MTA),又名SMTP服务器,它有两个用途。 它负责将电子邮件从邮件客户端/邮件用户代理(MUA)传输到远程SMTP服务器。 它还用于接收来自其他SMTP服务器的电子邮件。 Postfix由Unix和安全专家Wietse Venema构建。它易于使用,设计时考虑了安全性和模块化,每个模块都以完成任务所需的最低权限级别运行。Postfix与Unix/Linux紧密集成,不提供Unix/Linux已经提供的功能。它在简单和压力条件下都是可靠的。 Postfix最初是作为Sendmail的替代品设计的,Sendmail是Unix上的传统SMTP服务器。相比之下,Postfix更安全,更容易配置。它与Sendmail兼容,因此如果卸载Sendmail并用Postfix替换它,现有脚本和程序将继续无缝工作。 在本教程中,您将学习如何为单个域配置后缀。 选择合适的主机提供商 要找到一个适合电子邮件托管的VPS(虚拟专用服务器)提供商并非易事。许多托管公司,如DigitalOcean blocks port 25。DigitalOcean不会解锁端口25,因此您需要设置SMTP中继以绕过阻止,这可能会增加您的费用。如果您使用Vultr VPS,则默认情况下端口25被阻止。如果您打开支持票证,他们可以解除阻止,但如果他们决定不允许您的电子邮件发送活动,他们可能会在任何时候再次阻止。如果你使用他们的服务器发送时事通讯,Vultr实际上可能会重新阻止它。 另一个问题是,像DigitalOcean或Vultr这样的大型知名主机提供商被垃圾邮件发送者滥用。通常,服务器IP地址在几个黑名单上。Vultr有一些完整的IP范围被列入黑名单。 Kamatera VPS是运行邮件服务器的一个非常好的选择,因为 他们不封锁25号端口。 IP地址不在任何电子邮件黑名单上。(至少对我来说是这样。我选择了达拉斯数据中心。)你肯定不想被列入可怕的微软Outlook IP黑名单或SpamRats黑名单。有些黑名单会屏蔽整个IP范围,你无法从此类黑名单中删除你的IP地址。 您可以编辑PTR记录以提高电子邮件的可交付性。 它们允许你向你的电子邮件订阅者发送时事通讯,而不受每小时或每天的限制。请注意,您不允许发送垃圾邮件,也称为未经请求的批量电子邮件。如果收件人没有明确允许你发送电子邮件,而你向他们发送电子邮件,那就是未经请求的电子邮件。 您可以为一台服务器订购多个IP地址。这对需要发送大量电子邮件的人非常有用。您可以在多个IP地址上传播电子邮件流量,以实现更好的电子邮件交付。 我建议遵循下面链接的教程,在Kamatera上正确设置Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 你还需要一个域名。我从NameCheap注册了我的域名,因为价格很低,他们给你一辈子免费的隐私保护。 安装Postfix之前要做的事情 为了让Postfix更好地运行并充分利用Postfix,你需要正确设置你的Ubuntu服务器。 为Ubuntu服务器设置正确的主机名 默认情况下,Postfix在与其他MTA通信时使用服务器的主机名来标识自身。主机名可以有两种形式:单个单词和FQDN。 单字形式主要用于个人电脑。您的Linux家用计算机可能被命名为Linux、debian、ubuntu等。FQDN(完全限定域名)通常用于面向Internet的服务器,我们应该在邮件服务器上使用FQDN。它由两部分组成:节点名和域名。例如: mail.linuxbabe.com 是一个FQDN。邮件是最重要的,linuxbabe。com是域名。FQDN将出现在smtpd横幅中。如果您的Postfix未在smtpd横幅中提供FQDN,则某些MTA会拒绝邮件。一些MTA甚至会查询DNS,查看smtpd横幅中的FQDN是否解析为邮件服务器的IP。 输入以下命令以查看主机名的FQDN格式。 hostname -f 如果你的Ubuntu服务器还没有FQDN,你可以使用hostnamectl设置一个。 sudo hostnamectl set-hostname your-fqdn 邮件服务器的常见FQDN是mail。你的地盘。通用域名格式。您需要注销并重新登录,才能在命令提示下看到此更改。 为邮件服务器设置DNS记录 你需要去你的DNS托管服务(通常是你的域名注册商,比如NameCheap)设置DNS记录 邮件交换记录 MX记录告诉其他MTA您的邮件服务器正在发送邮件。你的地盘。com负责为您的域名发送电子邮件。 MX record @ mail.linuxbabe.com MX主机的通用名称是mail。你的地盘。通用域名格式。您可以指定多个MX记录,并为邮件服务器设置优先级。数字越小,优先级越高。这里我们只使用一条MX记录,并将0设置为优先级值。(0 – 65535) 请注意,当您创建MX记录时,您应该在名称字段中输入@或您的apex域名,如下所示。apex域名是没有任何子域的域名。 记录 A记录将FQDN映射到IP地址。 mail.linuxbabe.com <IP-address> AAAA记录 如果您的服务器使用IPv6地址,那么最好为邮件添加AAAA记录。你的地盘。通用域名格式。 mail.linuxbabe.com <IPv6-address> 提示:如果使用Cloudflare DNS服务,则在为邮件创建和AAAA记录时不应启用CDN(代理)功能。你的领域。通用域名格式。Cloudflare不支持SMTP或IMAP代理。 PTR记录 指针记录或PTR记录将IP地址映射到FQDN。它是A记录的对应项,用于反向DNS(RDN)查找。 使用PTR记录反向解析IP地址有助于阻止垃圾邮件发送者。许多MTA只有在服务器真正负责某个域时才接受电子邮件。你绝对应该为你的邮件服务器设置一个PTR记录,这样你的邮件就有更好的机会进入收件人的收件箱而不是垃圾邮件文件夹。 要检查PTR记录中的IP地址,可以使用以下命令。 dig -x <IP> +short 或 host <IP> PTR记录不由您的域注册器管理。它由提供IP地址的组织管理。你的IP地址是从你的主机提供商那里获得的,而不是从你的域名注册商那里获得的,所以你必须在主机提供商的控制面板中为你的IP地址设置PTR记录。它的值应该是邮件服务器的主机名:mail。你的领域。通用域名格式。如果您的服务器使用IPv6地址,那么也为您的IPv6地址添加一个PTR记录。 要编辑Kamatera VP的反向DNS记录,请登录Kamatera客户端区域,然后打开支持票证,告诉他们为服务器IP地址添加PTR记录,以将IP地址指向邮件。你的领域。通用域名格式。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。 注意:Gmail实际上会检查PTR记录中指定的主机名的A记录。如果主机名解析为相同的IP地址,Gmail将接受您的电子邮件。否则,它将拒绝您的电子邮件。 完成以上所有操作后,让我们玩Postfix。 安装后缀 在ubuntu服务器上,运行以下两个命令。 sudo apt-get update sudo apt-get install postfix -y 系统将要求您为邮件配置选择一种类型。通常,您需要选择第二种类型:Internet站点。 无配置意味着安装过程不会配置任何参数。 互联网站点意味着使用Postfix向其他MTA发送电子邮件,并从其他MTA接收电子邮件。 使用智能主机上网意味着使用postfix接收来自其他MTA的电子邮件,但使用另一个智能主机将电子邮件转发给收件人。 卫星系统意味着使用智能主机发送和接收电子邮件。 仅本地意味着电子邮件仅在本地用户帐户之间传输。 接下来,输入系统邮件名称的域名,即@symbol后面的域名。例如,我的电子邮件地址是[email&#160;protected],所以我输入了linuxbabe。com的系统邮件名称。此域名将附加到未指定域名的地址。请注意,如果您输入一个子域,如mail。你的领域。com,您将能够接收发送给@mail的电子邮件。你的领域。com地址,但无法接收发往@your domain的电子邮件。com地址。 安装后,Postfix将自动启动,并显示/etc/Postfix/main。将生成cf文件。现在我们可以使用以下命令检查后缀版本: postconf mail_version 在Ubuntu18.04上,后缀版本是3.3.0,Ubuntu20.04附带3.4.10版本。 mail_version = 3.4.10 ss(Socket Statistics)实用程序告诉我们Postfix主进程正在侦听TCP端口25。 sudo ss -lnpt | grep master Postfix在/usr/sbin/目录下附带许多二进制文件,如下命令所示。 dpkg -L postfix | grep /usr/sbin/ 输出: /usr/sbin/postalias /usr/sbin/postcat /usr/sbin/postconf /usr/sbin/postdrop /usr/sbin/postfix /usr/sbin/postfix-add-filter /usr/sbin/postfix-add-policy /usr/sbin/postkick /usr/sbin/postlock /usr/sbin/postlog /usr/sbin/postmap /usr/sbin/postmulti /usr/sbin/postqueue /usr/sbin/postsuper /usr/sbin/posttls-finger /usr/sbin/qmqp-sink /usr/sbin/qmqp-source /usr/sbin/qshape /usr/sbin/rmail /usr/sbin/sendmail /usr/sbin/smtp-sink /usr/sbin/smtp-source 在防火墙中打开TCP端口25(入站) 入站TCP端口25需要打开,以便Postfix可以接收来自其他SMTP服务器的电子邮件。Ubuntu默认情况下不启用防火墙。如果已启用UFW防火墙,则需要使用以下命令打开端口25(入站)。 sudo ufw allow 25/tcp 然后我们可以用在线端口扫描仪扫描邮件服务器上打开的端口。输入邮件服务器的公共IP地址,然后选择扫描所有公共端口。 从上面的屏幕截图可以看到,TCP端口25在我的邮件服务器上是打开的。 检查TCP端口25(出站)是否被阻止 出站TCP端口25需要打开,以便Postfix可以向其他SMTP服务器发送电子邮件。出站TCP端口25由主机提供商控制,我们可以安装telnet实用程序来检查它是否打开或被阻止。 sudo apt install telnet 在邮件服务器上运行以下命令。 telnet gmail-smtp-in.l.google.com 25 如果未被阻止,您将看到如下消息,这表明已成功建立连接。(提示:输入quit并按Enter键关闭连接。) Trying 74.125.68.26... Connected to gmail-smtp-in.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp 如果端口25(出站)被阻止,您将看到如下情况: Trying 2607:f8b0:400e:c06::1a... Trying 74.125.195.27... telnet: Unable to connect to remote host: Connection timed out 在这种情况下,您的Postfix无法向其他SMTP服务器发送电子邮件。请您的ISP/主机提供商为您打开出站端口25。如果他们拒绝您的请求,您需要设置SMTP中继以绕过端口25阻塞,或者使用像Kamatera这样不阻塞端口25的VPS。 有些人可能会问,“我能把端口25换成另一个端口来绕过阻塞吗?”?答案是否定的。只有在同时控制服务器端和客户端时,更改端口才有效。当Postfix发送电子邮件时,它充当SMTP客户端。收件人的邮件服务器充当SMTP服务器。您无法控制接收SMTP服务器。SMTP服务器正在监听端口25以接收电子邮件。他们预计SMTP客户端将到达端口25。没有其他接收电子邮件的端口。如果您的后缀未连接到接收SMTP服务器的端口25,您将无法发送电子邮件。 发送测试电子邮件 事实上,我们现在可以通过命令行发送和接收电子邮件。如果你的Ubuntu服务器有一个名为user1的用户帐户,那么这个用户的电子邮件地址是[email&#160;protected]。您可以向root用户发送电子邮件[email&#160;protected]。你也可以向Gmail、yahoo mail或任何其他电子邮件服务发送电子邮件。 安装Postfix时,sendmail二进制文件被放置在/usr/sbin/sendmail,它与传统的sendmail SMTP服务器兼容。您可以使用Postfix的sendmail二进制文件向您的Gmail帐户发送测试电子邮件,如下所示: echo "test email" | sendmail [email protected] 在这个简单的命令中,sendmail从标准输入读取一条消息,并将“test email”作为消息正文,然后将此消息发送到您的Gmail帐户。你应该能够在你的Gmail收件箱(或垃圾邮件文件夹)中收到这封测试邮件。您可以看到,虽然我们没有指定发件人地址,但Postfix会自动为发件人地址附加一个域名。这是因为我们在安装Postfix时在系统邮件名中添加了我们的域名。 注意:From:域名由Postfix中的myorigin参数决定,而不是myhostname参数。 你可以试着回复这封测试邮件,看看Postfix是否能收到邮件。从您的域发送的电子邮件很可能被标记为垃圾邮件。现在别担心。我们将在本系列教程的后面部分解决这个问题。 每个用户的收件箱位于/var/spool/mail/&lt;用户名&gt;或/var/mail/&lt;用户名&gt;文件如果不确定在哪里查找收件箱,请使用此命令。 postconf mail_spool_directory 后缀邮件日志存储在/var/log/mail中。日志 还是不能发邮件? 如果端口25(出站)未被阻止,但您仍然无法从自己的邮件服务器向Gmail等其他电子邮件地址发送电子邮件,那么您应该使用命令行文本编辑器(如Nano)打开邮件日志(/var/log/mail.log)。 sudo nano /var/log/mail.log 例如,有些人可能会在文件中看到以下几行。 host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 for more information 这意味着您的邮件服务器正在使用IPv6发送电子邮件,但您没有设置IPv6记录。你应该去你的DNS管理员那里,为邮件设置AAAA记录。你的领域。com,那么您还应该为IPv6地址设置PTR记录。(PTR记录由提供IP地址的组织管理。) 要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。 使用邮件程序发送和阅读电子邮件 现在,让我们安装一个命令行MUA(邮件用户代理)。 sudo apt-get install mailutils 要发送电子邮件,请键入 mail -a FROM:your-account@yourdomain.com [email protected] [email protected]:~$ mail -a FROM:[email protected] [email protected] Cc: Subject: 2nd test email I'm sending this email using the mail program. 输入主题行和正文。要告诉mail您已经写完,请按Ctrl+D,mail将为您发送此电子邮件。 要阅读收到的电子邮件,只需键入mail。 mail 下面是如何使用邮件程序来管理邮箱。 要阅读第一封电子邮件,请键入1。如果只显示消息的一部分,请按Enter键以显示消息的其余部分。 要显示从消息1开始的消息标题,请键入h。 要显示最后一屏消息,请键入h$或z。 要阅读下一封电子邮件,请键入n。 要删除邮件1,请键入d 1。 要删除消息1、2和3,请键入d 1 2 3。 要删除从1到10的邮件,请键入d 1-10。 要重播消息1,请键入reply 1。 要退出邮件,请键入q。 已打开的邮件将从/var/mail/&lt;用户名&gt;to/home/&lt;用户名&gt/mbox文件。这意味着其他邮件客户端无法读取这些邮件。为了防止这种情况发生,请键入x而不是q退出邮件。 如何增加附件大小限制 默认情况下,附件的大小不能超过10MB,这由message_size_limit参数指示。 postconf | grep message_size_limit 输出: message_size_limit = 10240000 此参数定义了来自您自己的邮件服务器的电子邮件和到达您的邮件服务器的电子邮件的大小限制。 要允许连接50MB大小,请运行以下命令。 sudo postconf -e message_size_limit=52428800 当使用-e(编辑)选项调用postconf命令时,它将尝试在Postfix主配置文件(/etc/Postfix/main.cf)中查找参数(message_size_limit)并更改值。如果找不到该参数,则会在文件末尾添加该参数。 请注意,邮件大小限制不应大于邮箱大小限制,否则Postfix可能无法接收电子邮件。在上游后缀包中,邮箱大小限制的默认值为51200000字节(约48MB)。在Ubuntu上,默认值设置为0,这一点可以从 postconf | grep mailbox_size_limit 输出: mailbox_size_limit = 0 这意味着邮箱没有大小限制,这很好。 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 从邮件服务器发送带有大附件的电子邮件时,还应注意接收服务器的附件大小限制。例如,您不能向Gmail地址发送大于25MB的附件。 设置后缀主机名 默认情况下,Postfix SMTP服务器使用操作系统的主机名。但是,操作系统的主机名可能会发生变化,因此直接在Postfix配置文件中设置主机名是一种好的做法。使用命令行文本编辑器(如Nano)打开Postfix主配置文件。 sudo nano /etc/postfix/main.cf 找到myhostname参数并设置邮件。你的地盘。com作为价值。不建议使用apex域yourdomain。com作为我的主机名。从技术上讲,您可以使用apex域,但在本教程系列的后续部分中,它会产生问题。 myhostname = mail.yourdomain.com 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。)重新启动Postfix以使更改生效。 sudo systemctl restart postfix 创建电子邮件别名 在生产环境中操作邮件服务器时,需要配置某些别名。您可以在/etc/alias文件中添加电子邮件别名,该文件是一个特殊的后缀查找表文件,使用Sendmail兼容的格式。 sudo nano /etc/aliases 默认情况下,该文件中只有两行。 # See man 5 aliases for format postmaster: root 第一行是评论。第二行是该文件中别名的唯一定义。左边是别名。右侧是电子邮件的最终目的地。因此,[email&#160;protected]的电子邮件将被发送到[email&#160;protected]。RFC 2142要求提供邮政局长的电子邮件地址。 通常我们不使用根电子邮件地址。相反,邮政局长可以使用普通的登录名来访问电子邮件。因此,您可以添加以下行。用真实用户名替换用户名。 root: username 这样,[email&#160;protected]的电子邮件将被发送到[email&#160;protected]。现在您可以保存并关闭该文件。然后使用newalias命令重建别名数据库 sudo newaliases 仅使用IPv4 默认情况下,Postfix同时使用IPv4和IPv6协议,如下所示: postconf inet_protocols 输出: inet_protocols = all 如果邮件服务器没有公共IPv6地址,最好在Postfix中禁用IPv6,以防止不必要的IPv6连接。只需运行以下命令即可在Postfix中禁用IPv6。 sudo postconf -e "inet_protocols = ipv4" 然后重新启动Postfix。 sudo systemctl restart postfix 升级后缀 如果运行sudo-apt-update,然后运行sudo-apt-upgrade,系统将升级Postfix,可能会提示您再次选择Postfix的配置类型。这一次,您应该选择“无配置”以保持当前配置文件不变。 下一步 恭喜!现在你有了一个基本的Postfix电子邮件服务器并开始运行。您可以使用命令行发送纯文本电子邮件和阅读收到的电子邮件。在本系列教程的下一部分中,我们将学习如何安装Dovecot IMAP服务器并启用TLS加密,这将允许我们使用Mozilla Thunderbird等桌面邮件客户端发送和接收电子邮件。 第2部分:在Ubuntu上安装Dovecot IMAP服务器;启用TLS加密 和往常一样,如果你觉得这篇文章有用,订阅我们的时事通讯,获取更多提示和窍门。当心?

    2022.03.23 浏览:249