嗯,懒癌晚期,好久没更新了,刚刚发现 IOS 能用 AnyConnect 连上服务器,但是没法上网了,查了一下,发现服务器上 iptables -L 列出来的规则里面丢了用于 AnyConnect 转发用的规则,这才想起好像 linode 在一段时间之前发过邮件要修补漏洞,好像服务器重启了,那么这就代表 iptables 规则要么没有保存,要么没有在重启的时候载入。

但是,在安装完 AnyConnect 之后我明明使用了 iptables-save 保存过了啊,找到 /etc/sysconfig/iptables 看了下,发现里面有那些转发规则啊。进一步确认到是重启的时候没有载入 iptables 规则。

针对 CentOS 7 搜索了一下,发现它引入了 firewalld 来管理防火墙规则,那么问题就在这了,它在启动的时候不载入保存在 /etc/sysconfig/iptables 的规则。

好在 CentOS 7 提供了回退回 iptables 的办法,步骤如下:

  1. 首先,停止并取消 firewalld 的启动

    1
    2
    systemctl stop firewalld
    systemctl mask firewalld
  2. 然后,安装 iptables-services

    1
    yum install iptables-services
  3. 保存 iptables 规则

    1
    service iptables save
  4. 重启 iptables

    1
    service iptables restart

PS. 说句题外话,引入 firewalld 感觉有点多余,它更适合工作站而不是服务器。

参考

stackoverflow