FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章
  • 书籍
  • FreeBSD 中文期刊
  • 编辑日志
  • 2025-123 下游项目
    • FreeBSD 发布工程:新主管上任
    • GhostBSD:从易用到挣扎与重生
    • BSD Now 与将来
    • 字符设备驱动教程(第三部分)
    • 学会走路——连接 GPIO 系统
    • FreeBSD 中对 SYN 段的处理
    • FreeBSD 2024 年秋季峰会
  • 2024-1112 虚拟化
    • 字符设备驱动程序教程(第二部分)
    • 面向 Linux 和 Windows 用户的 bhyve
    • Xen 与 FreeBSD
    • Wifibox:一种嵌入式虚拟化无线路由器
    • 嵌入式 FreeBSD:Fabric——起步阶段
    • DGP:一种新的数据包控制方法
    • 会议报告:我在都柏林的 EuroBSDCon 体验
  • 2024-0910 内核开发
    • 字符设备驱动程序教程
    • VPP 移植到了 FreeBSD:基础用法
    • 利用 Kyua 的 Jail 功能提升 FreeBSD 测试套件的并行效率
    • FreeBSD 上的 Valgrind
    • 嵌入式 FreeBSD:探索 bhyve
    • TCP/IP 历险记:FreeBSD TCP 协议栈中的 Pacing
    • 实用软件:实现无纸化(Paperless)
  • 2024-0708 存储与文件系统
    • FreeBSD 中的 NVMe-oF
    • FreeBSD iSCSI 入门
    • 使用 ZFS 原生加密保护数据
    • 嵌入式 FreeBSD:打造自己的镜像
    • TCP LRO 简介
    • 基于 Samba 的时间机器备份
  • 2024-0506 配置管理对决
    • 基本系统中的 mfsBSD
    • rdist
    • Hashicorp Vault
    • 在 GitHub 上向 FreeBSD 提交 PR
    • 悼念 Mike Karels
    • 2024 年 5-6 月来信
    • 嵌入式 FreeBSD 面包板
    • TCP/IP 历险记:TCP BBLog
    • 实用软件:开发定制 Ansible 模块
  • 2024-0304 开发工作流与集成
    • FreeBSD 内核开发工作流程
    • FreeBSD 与 KDE 持续集成(CI)
    • 更现代的内核调试工具
    • 从零开始的 ZFS 镜像及 makefs -t zfs
    • 提升 Git 使用体验
  • 2024-0102 网络(十周年)
    • FreeBSD 中的 RACK 栈和替代 TCP 栈
    • FreeBSD 14 中有关 TCP 的更新
    • if_ovpn 还是 OpenVPN
    • SR-IOV 已成为 FreeBSD 的重要功能
    • FreeBSD 接口 API(IfAPI)
    • BATMAN:更优的可移动热点网络方式
    • 配置自己的 VPN——基于 FreeBSD、Wireguard、IPv6 和广告拦截
    • 实用软件:使用 Zabbix 监控主机
  • 2023-1112 FreeBSD 14.0
    • LinuxBoot:从 Linux 启动 FreeBSD
    • FreeBSD 容器镜像
    • 现在用 Webhook 触发我
    • 新的 Ports 提交者:oel Bodenmann (jbo@freebsd.org)
  • 2023-0910 Port 与软件包
    • 回忆录:与 Warner Losh(@imp)的访谈
    • 在你自己的仓库中定制 Poudriere 源
    • Wazuh 和 MITRE Caldera 在 FreeBSD Jail 中的使用
    • PEP 517
    • CCCamp 2023 旅行报告
  • 2023-0708 容器与云
    • 在 Firecracker 上的 FreeBSD
    • 使用 pot 和 nomad 管理 Jail
    • 会议报告:C 与 BSD 正如拉丁语与我们——一位神学家的旅程
    • 抒怀之旅:与 Doug Rabson 的访谈
    • 基于 Jail 的广告拦截教程
    • 我们收到的来信
  • 2023-0506 FreeBSD 三十周年纪念特刊
    • CheriBSD 近十多年的历程
    • AArch64:成为 FreeBSD 新的一级架构
    • 岁月如梭:我个人的时间线
    • 安装 FreeBSD 1.0:回顾 30 年前
    • ZFS 是如何进入 FreeBSD 的呢?
    • 我不是来自约克郡的,我保证!
    • 回忆录:采访 David Greenman Lawrence
    • FreeBSD 和早期的 Unix 社区
    • 早期的 FreeBSD 移植
    • FreeBSD 30 周年:成功的秘诀
    • FreeBSD 在日本:回忆之旅与今日之实
  • 2023-0304 嵌入式
    • CheriBSD port 和软件包
    • 让我们来试试 ChatGPT
    • GPU 直通
  • 2023-0102 构建 FreEBSD Web 服务器
    • ZFS 的原子 I/O 与 PostgreSQL
    • 虚拟实验室——BSD 编程研讨会
    • ZFS 简介
    • 会议报告:落基山庆祝女性计算机科学家
    • 进行中的工作/征求反馈:数据包批处理
    • 基金会与 FreeBSD 桌面
  • 2022-1112 可观测性和衡量标准
    • 在 FreeBSD 的 DDB 内核调试器中编写自定义命令
    • DTrace:老式跟踪系统的新扩展
    • 基于证书的 Icinga 监控
    • 活动监控脚本(activitymonitor.sh)
    • 实用 IPv6(第四部分)
    • EuroBSDCon 会议报道
    • 实用 Port:Prometheus 的安装与配置
    • 书评:《用火解决问题:管理老化的计算机系统(并为现代系统保驾护航)》Kill It with Fire: Manage Aging Computer Systems (and Future Proof Modern Ones)
  • 2022-0910 安全性
    • CARP 简介
    • 重构内核加密服务框架
    • PAM 小窍门
    • SSH 小窍门
    • 实用 IPv6(第三部分)
    • 书评:Understanding Software Dynamics(深入理解软件性能——一种动态视角)—— Richard L. Sites 著
    • 访谈:保障 FreeBSD 安全性
    • MCH 2022 会议报告
  • 2022-0708 科研、系统与 FreeBSD
    • 在 FreeBSD 上构建 Loom 框架
    • 教授本科生 Unix 课程
    • FreeBSD 入门研讨会
    • 实用 IPv6(第二部分)
    • 在 2022 年及以后推广 FreeBSD
    • 进行中的工作/征求反馈:Socket 缓冲区
    • FreeBSD 开发者峰会报告
    • 支持 Electromagnetic Field 2022
  • 2022-0506 灾难恢复
    • 使用 FreeBSD 构建高弹性的私有云
    • LLDB 14 —— FreeBSD 新调试器
    • 实用 IPv6(第一部分)
    • 利用 netdump(4) 进行事后内核调试
    • 进行中的工作/征求反馈:FreeBSD 启动性能
    • 实用 Port:在 OpenZFS 上设置 NFSv4 文件服务器
  • 2022-0304 ARM64 是一级架构
    • FreeBSD/ARM64 上的数据科学
    • Pinebook Pro 上的 FreeBSD
    • 嵌入式控制器的 ACPI 支持
    • 进行中的工作/征求反馈:Lumina 桌面征集开发人员
    • 实用 Port:如何设置 Apple 时间机器
  • 2022-0102 软件与系统管理
    • 为 FreeBSD Ports 做贡献
    • 使用 Git 贡献到 FreeBSD Ports
    • CBSD:第一部分——生产环境
    • 将 OpenBSD 的 pf syncookie 代码移植到 FreeBSD 的 pf
    • 进行中的工作/征求反馈:mkjail
    • 《编程智慧:编程鬼才的经验和思考》(The Kollected Kode Vicious)书评
    • 会议报告:EuroBSDCon 2021 我的第一次 EuroBSDCon:一位新组织者的视角
  • 2021-1112 存储
    • 开放通道 SSD
    • 构建 FreeBSD 社区
    • 与完美操作系统同行 27 年
    • 进行中的工作/征求反馈:OccamBSD
    • 通过 iSCSI 导入 ZFS ZIL——不要在工作中这样做——就像我做的那样
  • 2021-0910 FreeBSD 开发
    • FreeBSD 代码审查与 git-arc
    • 如何为 FreeBSD 实现简单的 USB 驱动程序
    • 内核开发技巧
    • 程序员编程杂谈
  • 2021-0708 桌面/无线网
    • 通往 FreeBSD 桌面的直线路径
    • FreeBSD 13 中的人机接口设备 (HID) 支持
    • Panfrost 驱动程序
    • 用 Git 更新 FreeBSD
    • FreeBSD 的新面孔
    • 想给你的桌面加点佐料?
  • 2021-0506 安全
    • 七种提升新安装 FreeBSD 安全性的方法
    • copyinout 框架
    • 使用 TLS 改善 NFS 安全性
    • Capsicum 案例研究:Got
    • 对 Jail 进行安全扫描
  • 2021-0304 FreeBSD 13.0
    • 展望未来
    • FreeBSD 13.0 工具链
    • FreeBSD 13.0 中有新加载器吗?
    • TCP Cubic 准备起飞
    • OpenZFS 中的 Zstandard 压缩
    • 会议报告:FreeBSD 供应商峰会
    • Git 不够吗?
  • 2021-0102 案例研究
    • Tarsnap 的 FreeBSD 集群
    • BALLY WULFF
    • Netflix Open Connect
    • FreeBSD 的新面孔
    • 写作学者的 FreeBSD
    • 在世界之巅
  • 2020-1112 工作流/持续集成(CI)
    • FreeBSD Git 快速入门
    • 使用 syzkaller 进行内核 Fuzzing
    • Mastering Vim Quickly 书评
    • 线上会议实用技巧
    • 在控制台上进行网络监控
  • 2020-0910 贡献与入门
    • 采访:Warner Losh,第 2 部分
    • 代码审查
    • 撰写良好的提交消息
    • 如何在不是程序员的情况下做出贡献——成为 FreeBSD 译者
    • 如何成为文档提交者
    • 谷歌编程之夏
    • 为 FreeBSD 期刊撰写文章
    • 你为什么使用 FreeBSD
    • FreeBSD 的新面孔
  • 2020-0708 基准测试/调优
    • FreeBSD Friday
    • 采访:Warner Losh,第 1 部分
    • 构建和运行开源社区
    • 在 FreeBSD 上轻松搭建我的世界(Minecraft)服务器
    • FreeBSD 的新面孔
  • 2020-0506 网络性能
    • 内核中的 TLS 卸载
    • 访谈:Michael W Lucas
    • FreeBSD 桌面发行版
    • 使用 Poudriere 进行 Port 批量管理
    • FreeBSD 的新面孔
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 步骤 1:激活 VPS 并安装 FreeBSD
  • 步骤 2:安装 WireGuard
  • 步骤 3:配置 VPS 上的 IPv6
  • 步骤 4:配置 WireGuard
  • 创建脚本 /usr/local/sbin/spamhaus.sh
  • 配置 pf 防火墙
  • 配置 DNS 缓存和广告拦截
  • 创建更新 Unbound 广告拦截的脚本 /usr/local/sbin/unbound-adhosts.sh
  • 自动更新 Spamhaus 和广告拦截列表
在GitHub上编辑
导出为 PDF
  1. 2024-0102 网络(十周年)

配置自己的 VPN——基于 FreeBSD、Wireguard、IPv6 和广告拦截

上一页BATMAN:更优的可移动热点网络方式下一页实用软件:使用 Zabbix 监控主机

最后更新于1个月前

  • 原文链接:

  • 作者:Stefano Marinelli

注意

本文操作配置基于 FreeBSD。如果你想要基于 OpenBSD 的版本,请点击查看。

VPN 是一种基础工具,用于安全地连接到自己的服务器和设备。许多人出于各种原因使用商业 VPN,从不信任自己的服务提供商(尤其通过公共热点连接时),到希望用不同的 IP 地址(可能是来自别国)来“上网”。在这儿,我想突出一些已被引入基础堆栈的新特性——其中许多是默认开启的,有些可能需要专门打开。每个功能都会介绍一些细节,帮助改善网络体验。

无论出于何种原因,解决方案从未匮乏。我一直在设置管理 VPN,以便服务器/客户端使用安全通道相互通信。最近,我(包括桌面/服务器和移动设备),并且我需要快速创建一个节点,将一些网络聚合在一起,并让它们通过 IPv6 连接到外部网络。我使用着、并将要介绍的工具有:

  • VPS – 在本例中,我使用了基本的 Hetzner Cloud VPS,但所有提供 IPv6 连接的服务商都可以——如果你的确需要 IPv6。

  • – 一款多功能、稳定和安全的操作系统。

  • – 轻量级、安全,并且不会占用太多带宽,所以在移动设备上也比较省电。当没有流量时,它完全不会传输/接收任何数据。在所有主要桌面和服务器操作系统以及 Android 和 iOS 设备上支持良好。

  • – 可以直接向根 DNS 服务器发起查询,而非转发器。它还允许插入拦截列表,产生类似 Pi-Hole 的效果(即广告拦截)。

  • 列表 – 立即阻断与黑名单用户的连接。

步骤 1:激活 VPS 并安装 FreeBSD

首先,启用一台 VPS,再安装 FreeBSD。在 Hetzner Cloud 控制台中,可能没有预构建的 FreeBSD 镜像,只能选 Linux 发行版。别担心,随便选择一款 Linux 发行版创建 VPS。创建完成后,FreeBSD ISO 镜像将出现在“ISO 镜像”中。只需插入虚拟光驱,重启 VPS,FreeBSD 安装程序就会出现在控制台中。

我不会详细说明,操作非常简单。唯一需要注意的一点是,在 Hetzner Cloud VPS 中,IPv4 使用“DHCP”进行配置,但暂时别配置 IPv6。IPv6 将在稍后配置。

安装所有的 FreeBSD 更新(使用 freebsd-update fetch install 命令)并重启。

步骤 2:安装 WireGuard

在 FreeBSD 上,现在 WireGuard 作为内核模块提供,可以用包管理器通过 pkg install wireguard-tools 安装用户空间工具。这意味着你可以轻松地将它与系统上的其他软件一起更新。

步骤 3:配置 VPS 上的 IPv6

在 /etc/rc.conf 文件中添加类似以下的条目:

ifconfig_vtnet0=”DHCP”
ifconfig_vtnet0_ipv6=”inet6 2a01:4f8:cafe:cafe::1 prefixlen 72”
ipv6_defaultrouter=”fe80::1%vtnet0”

简而言之,保留 Hetzner 分配的基础地址,但将前缀长度更成 72——这样就可以拥有其他可用网络。现在,需要打开 IPv4 和 IPv6 的转发功能。将以下行添加到 /etc/sysctl.conf 文件中:

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

重启后,测试是否配置成功:

ping6 google.com

如果一切配置正确,ping 命令将执行且 google.com 会回复。

步骤 4:配置 WireGuard

接下来,需要进行一些步骤来配置 WireGuard。首先,生成私钥:

wg genkey | tee /dev/stderr | wg pubkey | grep --label PUBLIC -H .

这将生成私钥和公钥。记下公钥——它将在配置客户端时用到。

接着创建一个新的配置文件 /usr/local/etc/wireguard/wg0.conf:

[Interface]
Address = 172.14.0.1/24,2a01:4f8:cafe:cafe:100::1/72
ListenPort = 51820
PrivateKey = YUkS6cNTyPbXmtVf/23ppVW3gX2hZIBzlHtXNFRp80w=

这将创建一个新的 WireGuard 接口 wg0。启动 WireGuard 接口:

service wireguard enable
sysrc wireguard_interfaces=”wg0”
service wireguard start

如果所有信息输入正确,接口应已启动。可以检查其状态:

wg

至于防火墙,FreeBSD 默认未配置 pf。在我的设置中,我倾向于阻断不需要的流量,而对可能有用的流量保持宽松。然而,我喜欢把“坏家伙”挡在外面,因此我使用黑名单。pf 允许在运行时将元素插入和移出表格,所以防火墙可以根据需要进行配置。

为了下载、应用 Spamhaus 列表,我使用了一个简单但有效的脚本,可以在网上找到它,但原本是为 OpenBSD 设计的。

对于 Spamhaus 列表,继续创建 FreeBSD 脚本。

创建脚本 /usr/local/sbin/spamhaus.sh

#!/bin/sh
# 这个脚本通常随 cron 每天运行一次。
#
echo updating Spamhaus DROP lists:
(
  { fetch -o - https://www.spamhaus.org/drop/drop.txt && \
    fetch -o - https://www.spamhaus.org/drop/edrop.txt && \
    fetch -o - https://www.spamhaus.org/drop/dropv6.txt ; \
  } 2>/dev/null | sed “s/;/#/” > /var/db/drop.txt
)
pfctl -t spamhaus -T replace -f /var/db/drop.txt

使脚本可执行并运行。由于 pf 尚未启用,可能会报错——但是现在创建 /var/db/drop.txt 文件:

chmod a+rx /usr/local/sbin/spamhaus.sh
/usr/local/sbin/spamhaus.sh

配置 pf 防火墙

FreeBSD 上有很多种方式可以配置 pf。以下是一个相对简单的示例:

ext_if="vtnet0"
wg0_if="wg0"
wg0_networks="172.14.0.0/24"

set skip on lo

nat on $ext_if from { $wg0_networks } to any -> ($ext_if)

# Spamhaus 删除列表:
table <spamhaus> persist file "/var/db/drop.txt"

block drop log quick from <spamhaus>

# ipv6 通过 ICMP 
pass quick proto ipv6-icmp
# Block from ipv6 to wg0 network
block in quick on $ext_if inet6 to { 2a01:4f8:cafe:cafe:100::/72 }
# Pass Wireguard traffic - in and out
pass quick on $wg0_if

# 默认拒绝
block in
block out

pass in on $ext_if proto tcp to port ssh
pass in on $ext_if proto udp to port 51820

pass out on $ext_if

这是一个非常简单的配置:它阻断了从 Spamhaus 下载的列表中列出的所有流量,允许 WireGuard 网络通过 NAT 访问公共接口,允许 IPv6 的 ICMP 流量(这是网络正常运行所必需的),同时阻断进入 WireGuard IPv6 网络的流量(记住,IP 地址是公开的并且可以直接访问,所以我们默认不想暴露我们的设备)。所有通过 WireGuard 接口的流量都会被允许通过。然后,所有其他流量都将被阻止,并且会指定一些例外规则,比如允许 SSH 和 WireGuard 连接(当然)。还会允许流量从公共网络接口外发。

将此配置保存到 /etc/pf.conf 文件中。

启用并启动 pf:

service pf enable
service pf start

你可能会被系统踢出去。别担心,只需重新连接即可。pf 正在执行其工作。

若一帆风顺,防火墙应该已经加载了新规则。

配置 DNS 缓存和广告拦截

现在是配置 Unbound 以缓存 DNS 查询并启用广告拦截的时间了。首先,我们需要安装 Unbound:

pkg install unbound

不久前,我找到了一个脚本并稍作修改。我记不清楚原始作者是谁了,所以我只在这里贴出来脚本。

创建更新 Unbound 广告拦截的脚本 /usr/local/sbin/unbound-adhosts.sh

#!/bin/sh
#
# 使用来自 Pi-Hole 项目的黑名单 https://github.com/pi-hole/ 
# 来启用 Unbound(8) 中的广告拦截
#
PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”

# 可用的黑名单 - 注释掉行以禁用
_disconad=”https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt”
_discontrack=”https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt”
_stevenblack=”https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts”

# 全局变量
_tmpfile=”$(mktemp)” && echo '' > $_tmpfile
_unboundconf=”/usr/local/etc/unbound/unbound-adhosts.conf”

# 从黑名单中移除注释
simpleParse() {
fetch -o - $1 | \
sed -e ‘s/#.*$//’ -e ‘/^[[:space:]]*$/d’ >> $2
}

# 解析 DisconTrack
[ -n “${_discontrack}” ] && simpleParse $_discontrack $_tmpfile

# 解析 DisconAD
[ -n “${_disconad}” ] && simpleParse $_disconad $_tmpfile

# 解析 StevenBlack
[ -n “${_stevenblack}” ] && \
  fetch -o - $_stevenblack | \
  sed -n '/Start/,$p' | \
  sed -e 's/#.*$//' -e '/^[[:space:]]*$/d' | \
  awk '/^0.0.0.0/ { print $2 }' >> $_tmpfile

# 创建 unbound(8) 局域网文件
sort -fu $_tmpfile | grep -v “^[[:space:]]*$” | \
awk '{
  print “local-zone: \”” $1 “\” redirect”
  print “local-data: \”” $1 “ A 0.0.0.0\””
}' > $_unboundconf && rm -f $_tmpfile

service unbound reload 1>/dev/null

exit 0

保存脚本后,使其可执行,然后运行:

chmod a+rx /usr/local/sbin/unbound-adhosts.sh
/usr/local/sbin/unbound-adhosts.sh

现在,可以按以下方式修改 /usr/local/etc/unbound/unbound.conf 配置文件:

server:
        verbosity: 1
        log-queries: no
        num-threads: 4
        num-queries-per-thread: 1024
        interface: 127.0.0.1
        interface: 172.14.0.1
        interface: 2a01:4f8:cafe:cafe:100::1
        interface: ::1
        outgoing-range: 64
        chroot: “”

        access-control: 0.0.0.0/0 refuse
        access-control: 127.0.0.0/8 allow
        access-control: ::0/0 refuse
        access-control: ::1 allow
        access-control: 172.14.0.0/24 allow
        access-control: 2a01:4f8:cafe:cafe:100::/72 allow

        hide-identity: yes
        hide-version: yes
        auto-trust-anchor-file: "/usr/local/etc/unbound/root.key"
        val-log-level: 2
        aggressive-nsec: yes
        prefetch: yes
        username: “unbound”
        directory: "/usr/local/etc/unbound"
        logfile: "/var/log/unbound.log"
        use-syslog: no
        pidfile: "/var/run/unbound.pid"
        include: /usr/local/etc/unbound/unbound-adhosts.conf

remote-control:
        control-enable: yes
        control-interface: /var/run/unbound.sock

然后启用并启动 unbound:

service unbound enable
service unbound start

如果一切设置正确,unbound 将能够响应发送到 172.14.0.1 和 2a01:4f8:cafe:cafe:100::1 的 DNS 请求。接下来,配置 WireGuard 客户端。创建一个新的配置文件,写入 "172.14.0.2/32, 2a01:4f8:cafe:cafe:100::2/128"(这些地址稍后将在服务器的对等配置中使用)。将 DNS 服务器地址设置为 172.14.0.1 和其相应的 IPv6 地址(在此示例中为 2a01:4f8:cafe:cafe:100::1 ——你的地址与此不同)。在对等配置中写入服务器的相关信息,包括其公钥、IP 地址和端口(在此示例中,端口为 51820)以及允许的地址(设置 "0.0.0.0/0, ::0/0" 意味着“所有连接将通过 WireGuard”——所有流量将通过 VPN,无论 IPv4 还是 IPv6)。

每种设备的配置程序有所不同(Android、iOS、MikroTik、Linux 等),但基本上只需在服务器和客户端都创建正确的配置即可。

重新打开 WireGuard 配置文件 /usr/local/etc/wireguard/wg0.conf,添加:

[Interface]
Address = 172.14.0.1/24,2a01:4f8:cafe:cafe:100::1/72
ListenPort = 51820
PrivateKey = YUkS6cNTyPbXmtVf/23ppVW3gX2hZIBzlHtXNFRp80w=

[Peer]
PublicKey = *客户端的公钥*
AllowedIPs = 172.14.0.2/32, 2a01:4f8:cafe:cafe:100::2/128

客户端的公钥将由客户端显示。

重新加载 WireGuard 配置:

service wireguard restart

如果希望仅使用 VPN 作为广告拦截器,可以仅通过 VPN 路由 DNS 流量。为此,请在客户端配置中仅允许已配置的 Unbound 地址(在此示例中为 172.14.0.1、2a01:4f8:cafe:cafe:100::1)——DNS 解析将通过 VPN 进行,但浏览将继续通过主要提供商进行。

自动更新 Spamhaus 和广告拦截列表

我们将使用 cron 来自动更新列表。首先,创建一个脚本,例如 /usr/local/sbin/update-blocklists.sh:

#!/bin/sh

/usr/local/sbin/unbound-adhosts.sh
/usr/local/sbin/spamhaus.sh

使脚本可执行:

chmod +x /usr/local/sbin/update-blocklists.sh

然后,将其添加到 crontab 中,以便每天运行:

echo “@daily /usr/local/sbin/update-blocklists.sh” >> /etc/crontab

这种方法从更新管理和安全性的角度都带来了好处。


Stefano Marinelli 是一位 IT 顾问,拥有二十余年的 IT 咨询、培训、研究和出版经验。他的专业领域涵盖了多种操作系统,尤其专注于 BSD 系统(如 FreeBSD、NetBSD、OpenBSD、DragonFlyBSD)和 Linux 系统。Stefano 还是 BSD Cafe 的咖啡师,这是一家活跃的 BSD 爱好者社区中心。他还领导了博洛尼亚大学的 FreeOsZoo 项目,为虚拟机提供开放源代码操作系统镜像。

首先配置 VPS 上的 IPv6。对于 Hetzner,遗憾的是,他们只提供了一个 /64 地址,因此需要对分配的网络进行细分。在这个示例中,它将被细分为 /72 子网——可使用来找到有效的子类。

Make Your Own VPN —FreeBSD, Wireguard, IPv6 and Ad-blocking Included
这里
已在所有设备上启用 IPv6 连接
FreeBSD
WireGuard
Unbound
SpamHaus
子网计算器