通过 ssh 远程重新启动/重新加载 IPFW,而不会丢失连接

通过 ssh 远程重新启动/重新加载 IPFW,而不会丢失连接

是否可以通过 ssh 连接远程重新启动 IPFW 或重新加载其脚本而不丢失当前连接?

答案1

我想我找到了问题的答案:在这个讨论我的问题得到了部分回答。是的,确实,当您运行脚本时,它会刷新所有规则,因为开头的许多脚本都使用这一行ipfw -f flush

但根据文档,有一个特殊的集 31,无法禁用,并且集合 31 中的规则不会被该ipfw flush命令删除(但您可以使用该命令删除它们ipfw delete set 31)。因此,只需set 31在脚本中添加规则编号并重新启动就不会影响断开 ssh 连接的规则。举个例子:

$cmd 00410 set 31 allow tcp from any to me 22 in via $pif setup keep-state

或者

$cmd 00280 set 31 allow log tcp from any to any 22 out via $pif setup keep-state

答案2

如果您只关心 SSH 会话,那么您可以通过在规则的早期仅使用 SSH 的静态规则来避免刷新动态规则表时发生的断开连接:

例如,代替:

ipfw add 100 allow tcp from any to any 22 in via $pif setup keep-state
ipfw add 101 allow ip from any 22 to any out via $pif setup keep-state

使用:

ipfw add 100 allow ip from any to any 22 in via $pif
ipfw add 101 allow ip from any 22 to any out via $pif

答案3

假设一个 SH 脚本,“/etc/fw.rules”(如果我没记错的话,FBSD 的正常脚本是“rc.firewall”)和 sudo 权限(显然,可以以 root 身份运行):

#sudo sh -c "/bin/sh /etc/fw.rules  > /dev/null 2>&1"

相关内容