OPNsense 软路由实战:把一台小主机变成企业级防火墙,NAT 端口转发、加密 DNS 与 WireGuard 回家全流程

为什么个人站长值得折腾一台软路由

大多数个人站长的网络环境是这样的:一台 VPS 跑网站,本地家里一台路由器(运营商送的那种)上网。平时相安无事,但一旦涉及「需要固定公网 IP」「要在家里跑个小服务给外网访问」「想让所有设备都走加密 DNS」「想知道家里到底哪个设备在偷偷跑流量」,运营商送的路由器就完全不够用了——它不给你看日志,不给你配策略路由,端口转发只能设几条,NAT 回环还时灵时不灵。

这时候就有两个选择:买一台几百上千块的企业级路由器,或者找台闲置的小主机/迷你 PC 装一个开源防火墙系统。后者就是我推荐的路子——OPNsense 或 pfSense。它们是基于 FreeBSD 的完整防火墙发行版,把一台普通 x86 小主机变成企业级路由器,功能上覆盖防火墙、NAT、DHCP、DNS、VPN、流量整形、入侵检测、多 WAN 负载均衡,而成本可能只是硬件钱加上一点折腾时间。

这篇文章讲清楚三件事:OPNsense 和 pfSense 到底选哪个、怎么在一台小机器上装起来跑通、以及几个个人站长最实用的功能怎么配。

OPNsense 还是 pfSense:先做选择

这两个系统同源——都来自 2004 年那个叫 m0n0wall 的项目,pfSense 是主流分支,OPNsense 是 2014 年从 pfSense 分叉出来的。血缘上算兄弟,界面上也很像,但性格不同:

  • pfSense(Netgate 出品):商业公司主导,企业用户多,文档和第三方教程最丰富,硬件兼容性最广。免费版 CE 和付费版 Plus 功能上有分层,有些新特性(比如某些 VPN 加速)只在付费版。
  • OPNsense(Deciso 出品):更新更快、界面更现代、默认更「透明」——它坚持开源、不搞功能阉割,很多原本 pfSense 要花钱的功能它免费给。更新节奏两个月一版,界面基于 Bootstrap,看着舒服。

我的建议:追求稳定和教程多选 pfSense,追求功能和界面新选 OPNsense。对个人站长来说两者都能满足需求,我下面以 OPNsense 为主讲(配 pfSense 差异点)。

硬件怎么选:不是随便找台破电脑就行

软路由的硬件有硬性要求,选错就白折腾:

  • 必须有两个及以上网卡。这是最核心的要求。一个网卡做 WAN(连光猫/运营商),一个做 LAN(连内网交换机)。只有单网卡虽然能用「单臂路由 + VLAN」,但配置复杂且性能打折,不推荐新手。
  • CPU 不用强,但网卡要选对。普通的 J1900、N100、N5105 这类低功耗 CPU 完全够千兆跑满。网卡优先选 Intel 芯片(i210、i211、i225、i226),它们的驱动在 FreeBSD 下最稳定。Realtek 网卡虽然能用但容易掉速、丢包,能避则避。
  • 内存 4G 起步。基础路由 2G 能用,但要跑 IDS/IPS(Suricata)或做大量日志,建议 4G 以上。
  • 存储用 SSD 或小容量 eMMC。系统盘读写不频繁,16G 就够,但日志量大,别用劣质 U 盘——U 盘写入寿命短,几个月就写坏。

常见的成品方案是「N100 四网口小主机」,几百块,双核四线程、4×i226 网卡、功耗 10W 左右,跑千兆宽带绰绰有余,是现在的性价比首选。

安装与第一次上手

装 OPNsense 用官方 ISO 写 U 盘启动安装,过程和其他 Linux 发行版类似。装完之后几个关键步骤:

# 安装完成后,控制台会提示分配网卡
# 1. 先看网卡列表
#    选 "1) Assign Interfaces"
# 2. 只有两个物理网口时:
#    WAN = 接光猫的那个口
#    LAN = 接内网交换机的那个口
# 3. 分配后记下 LAN 口的默认 IP,通常是 192.168.1.1

把电脑接到 LAN 口,浏览器访问 https://192.168.1.1,默认账号 root / 密码 opnsense(第一次登录强制改)。HTTPS 会报警告证书不受信任,这是正常的自签证书,点继续即可。

第一次进入要做的基础设置(System → Settings → General):

  • 改主机名和域名。
  • 改默认密码(最重要)。
  • 设时区和 NTP 服务器。
  • System → Settings → Administration 里,把 WebGUI 的访问限制到 LAN 网段,绝对不要开 WAN 访问。

核心配置一:WAN 怎么连(PPPoE / DHCP)

国内家庭宽带大多是 PPPoE 拨号,需要运营商给的账号密码。Interfaces → [WAN]:

  • IPv4 Configuration Type 选 PPPoE。
  • 在 PPPoE 配置里填运营商给的宽带账号和密码。
  • 如果光猫已经拨号(桥接模式除外),选 DHCP 即可。
  • Block private networks 和 Block bogon networks 两个选项,在没有公网 IP 的情况下反而要「取消勾选」,否则可能出现访问异常。

保存应用后,在 Interfaces → Overview 能看到 WAN 拿到 IP,就说明拨号成功。

核心配置二:防火墙规则(搞懂方向再动手)

pfSense/OPNsense 的防火墙规则只作用于「进入接口」的流量,这点和很多人直觉相反,必须先理解:

  • 规则挂在 WAN 上,管的是「从外网进来的流量」。
  • 规则挂在 LAN 上,管的是「内网发出去的流量」。
  • 流量从 WAN 出去(比如内网访问外网)不受 WAN 规则限制。

默认策略:LAN 是「允许所有」(内网随便上网),WAN 是「拒绝所有」(外网进不来,除非你显式放行)。这个默认设置对个人用户很合理。

典型场景:把内网的一台服务暴露到公网(比如家里 NAS 或自建站)。两步走:

# 第一步:NAT 端口转发(Firewall → NAT → Port Forward)
#   Interface: WAN
#   Protocol: TCP
#   Destination: WAN address
#   Destination port: 443
#   Redirect target IP: 192.168.1.100  (内网服务器的 IP)
#   Redirect target port: 443
#   一定要勾选 "Add associated filter rule",否则流量会被防火墙挡掉

# 第二步(自动完成):防火墙规则自动生成
#   WAN 上会出现一条允许访问 443 的规则
#   没有这一步,NAT 转发了也进不来——这是新手最容易漏的地方

反例也很重要:不要用「All any any」的放纵规则图省事。很多教程让你在 WAN 上加一条放行所有流量的规则,那等于把防火墙关了。要做端口转发就具体到端口,要限制来源就填具体的源 IP 段。

核心配置三:DHCP 与 DNS 收口

让 OPNsense 当内网的 DHCP 服务器,统一给设备分配 IP,比让运营商光猫分配好管理:

  • Services → Dnsmasq DNS & DHCP(或 ISC DHCP) 里配置地址池,比如从 192.168.1.100 到 192.168.1.200。
  • 静态映射:把服务器、NAS 的 MAC 地址绑定固定 IP,这样端口转发规则永远指向正确的机器。
  • DNS 收口:在 DHCP 里把 DNS 服务器指向 OPNsense 自己(192.168.1.1)。这样内网所有设备都走 OPNsense 的 DNS 解析,你可以在这台机器上统一配置加密 DNS、广告拦截、内网域名。

加密 DNS 配置(System → Settings → General 或 Services → Unbound DNS):

# Unbound DNS 作为内网解析器,向上游走 DoT(DNS over TLS)
# 在 Services → Unbound DNS → Query Forwarding 里
# 添加上游:1.1.1.1:853 / 8.8.8.8:853,勾选 "Use TLS"
# 这样内网所有设备的 DNS 查询都是加密的,运营商看不到你访问了哪些域名

广告拦截可以直接用 OPNsense 的插件 os-adguardhome 或内置的 DNS 黑名单(Unbound 的 Blocklist)。配好后全屋设备自动去广告,不用每台设备装插件。

核心配置四:WireGuard VPN 回家

个人站长最实用的功能之一:出差在外也能安全地访问家里内网、回到家庭宽带出口上网。OPNsense 内置 WireGuard 插件,配起来比 OpenVPN 简单得多:

  1. System → Firmware → Plugins 装 os-wireguard。
  2. VPN → WireGuard → Instances 建一个服务器实例,生成密钥对,监听 UDP 端口(比如 51820)。
  3. 建一个 Peer(客户端),用手机或笔记本的 WireGuard 客户端生成密钥,把公钥填进来。
  4. Allowed IPs 填客户端的隧道 IP(比如 10.10.10.2/32)。
  5. WAN 上加一条防火墙规则放行 UDP 51820,否则外部连不进来。
  6. 客户端的 Allowed IPs 填 0.0.0.0/0 表示所有流量都走家里出口(全局代理);填 192.168.1.0/24 表示只访问内网。
# 客户端配置示例(手机/电脑 WireGuard App 里导入)
[Interface]
PrivateKey = <客户端私钥>
Address = 10.10.10.2/32
DNS = 192.168.1.1          # 用家里的 DNS,享受广告拦截

[Peer]
PublicKey = <服务器的公钥>
Endpoint = your-home-ip:51820
AllowedIPs = 192.168.1.0/24
PersistentKeepalive = 25   # 家里没公网 IP 时靠这个维持 NAT 打洞

进阶:IDS/IPS 入侵检测

OPNsense 可以装 Suricata 做入侵检测(IDS 只告警)或入侵防御(IPS 直接阻断)。Services → Intrusion Detection:

  • 先只开 IDS 观察,不要一上来就 IPS。IPS 误杀会导致网络莫名其妙断,新手上手先看几天日志,摸清自己网络里有哪些「看起来可疑但其实正常」的流量。
  • 规则集选 ET Open(免费)就够个人用。
  • 配置要选对接口——只在 WAN 上做检测,内网流量本身已经信任,全开会让 CPU 吃满。
  • 小主机 CPU 弱的话,Suricata 会显著拖慢吞吐,千兆宽带可能跑不满,要权衡。

五个必须避开的坑

  1. 单网卡硬上:只有一块网卡做路由,必须配 VLAN,出问题极难排查。老实买双网口以上的机器。
  2. 改 LAN 网段后把自己锁在外面:把 LAN 从 192.168.1.1 改成别的网段,而你的电脑还在旧网段,就进不去后台了。改之前先想清楚,或保留一个能直连 LAN 口的键盘显示器做救援。
  3. WAN 上开 WebGUI 访问:有人图方便把后台开放到公网端口,这等于把防火墙管理权交给全世界。永远只从 LAN 或 VPN 访问后台。
  4. NAT 转发忘了关联防火墙规则:OPNsense 里勾选「Add associated filter rule」才自动生成放行规则,漏了就出现「NAT 配对了但外网还是连不上」的诡异现象。
  5. 用 Realtek 网卡跑满千兆:Realtek 在 FreeBSD 下大流量时容易丢包掉速,做软路由尽量买 Intel 网卡的机型。

小结

一台几百块的 N100 小主机 + OPNsense,能给你带来运营商路由器完全给不了的东西:完整的防火墙策略、统一的内网 DNS 与广告拦截、加密 DNS、WireGuard 回家、入侵检测、流量可视化。它不是一个「装完就放着」的设备——你会逐渐习惯在上面调策略、看日志,对家里网络的掌控感是普通路由器给不了的。

上手顺序建议:先把 WAN 拨号和 LAN/DHCP 跑通,确保全家能正常上网;然后配好 DNS 收口和广告拦截,感受一键净化;接着把端口转发和 WireGuard 配起来,实现内网服务的可控暴露与远程访问;最后有兴趣再上 Suricata 做入侵检测。整个过程可能搭进去一个周末,但这套东西用上三五年都不过时,很值。

Last modification:October 12th, 2026 at 07:25 pm

Leave a Comment