pfSense解决升级故障方法

在我们使用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继续
  • 手动重启防火墙

最后一招

如果没有效果,还可以选择重新安装,这会消除与升级本身相关的任何问题。

重新安装,然后导入备份的config.xml文件,这一过程往往也只需要几分钟而已。

原文地址