在我们使用pfSense防火墙的过程中,经常会出现不能安装插件或升级系统的情况,本文介绍了常见的处理办法。
查看升级日志
pfSense更新程序会保留上一次更新的日志,包含有用信息,该日志位于 /conf/upgrade_log.latest.txt
。你可以查看日志内容,找到出错原因,然后通过搜索问题找到解决办法。
重写存储库信息
如果更新系统未提供到最新版本的升级,升级不会继续进行,或者升级过程遇到共享库错误,请执行以下步骤:
- 导航到系统>系统更新
- 将“分支”设置为“最新稳定版本”
- 运行以下命令来刷新存储库配置和升级脚本:
pkg-static clean -ay; pkg-static install -fy pkg pfSense-repo pfSense-upgrade
CLI故障排除
如果GUI更新未按预期运行,则有一些Shell命令可以帮助收集信息或解决问题。
强制pkg元数据更新
通常,DNS或连接问题会阻止防火墙查找更新。一种快速的验证方法是强制更新pkg元数据:
pkg-static update -f
此命令将强制执行更新,如果发现问题,将会显示错误,这些错误包括:
没有地址记录: | |
---|---|
防火墙无法解析更新服务器主机名。这可能是来自防火墙本身的DNS的问题,或者通常是从防火墙到Internet的连接问题。 | |
没有到主机的路由: | |
防火墙无法连接更新服务器,因为它无法找到路由。防火墙可能缺少默认路由,或者具有默认路由的WAN已关闭。 | |
操作超时: | |
防火墙无法及时下载文件。这很可能是由于防火墙和更新服务器之间的连接性下降。这也可能是路由问题,或者是防火墙上的IPv6问题。 | |
授权错误: | |
防火墙和更新服务器之间有一个代理,它需要身份验证。请在系统>高级选项,其他选项卡上设置代理服务。 | |
找不到可信的公共密钥: | |
防火墙正在尝试从错误的存储库进行更新。确保按照“重写存储库信息”中所述选择了正确的分支 。可能需要重新安装才能解决。对于CE安装,请尝试以下命令: |
fetch -qo /usr/local/share/pfSense/keys/pkg/trusted/ \
https://raw.githubusercontent.com/pfsense/pfsense/RELENG_2_4_4/src/usr/local/share/pfSense/keys/pkg/trusted/pkg.pfsense.org.20160406
手动更新检查
要从CLI运行手动更新检查:
pfSense-upgrade -d -c
成功运行后,此命令将显示一行,说明有新版本可用,以及可用更新的版本号。
服务器不使用A/AAAA记录
pkg
不使用A/AAAA记录。它使用服务(SRV)记录。例如更新服务器的元名称pkg.pfsense.org
并不能通过浏览器直接访问。
要查找真正的更新服务器,可以通过查找主机的SRV记录去发现:
$ host -t srv _https._tcp.pkg.pfsense.org
_https._tcp.pkg.pfsense.org has SRV record 10 10 443 files01.netgate.com.
_https._tcp.pkg.pfsense.org has SRV record 10 10 443 files00.netgate.com.
$ host files01.netgate.com.
files01.netgate.com has address 162.208.119.40
files01.netgate.com has IPv6 address 2610:1c1:0:6::40
$ host files00.netgate.com.
files00.netgate.com has address 162.208.119.41
files00.netgate.com has IPv6 address 2610:1c1:0:6::41
使用真实主机名访问主机可以与浏览器一起使用:
$curl --output /dev/null --silent --head --fail \
"https://files00.netgate.com/pfSense_v2_3_4_amd64-core/meta.txz"
$ echo $?
0
IPv6连接问题
如果在防火墙上配置了IPv6,pfSense将在执行更新时优先使用它。在某些情况下,防火墙可能会中断IPv6连接,这会导致更新出现问题。升级时,这可能表现为超时或路由错误。
通常,操作系统将尝试回退到IPv4,但是会花费额外的时间,从而导致超时。可以将防火墙配置为首选IPv4,来消除这种可能的原因。或者,从ssh或控制台shell强制以IPv4方式手动升级:
pfSense-upgrade -4
强制重新安装pkg
强制重新安装所有软件包可以解决问题。要强制重新安装所有软件包,请执行以下步骤:
- 进行备份
- 清理存储库并强制重新安装pkg,升级脚本:
-
pkg-static clean -ay; pkg-static install -fy pkg pfSense-repo pfSense-upgrade
- 强制重新安装所有内容:
-
pkg-static upgrade -f
- 查看更新列表,然后输入
y
继续 - 手动重启防火墙