firewall-cmd --permanent --zone=$1 --change-interface=$2
`firewall-cmd` 是 `firewalld` 的命令行界面工具,用于管理 Linux 系统上的防火墙规则。`firewalld` 是一个动态防火墙管理器,它支持网络/地址区域、接口/地址绑定、服务/端口以及 ICMP 类型等的管理。
让我们逐步解析这个命令:
firewall-cmd --permanent --zone=$1 --change-interface=$2
1. **firewall-cmd**: 这是命令的主体,表示我们正在使用 `firewalld` 的命令行工具。
2. **--permanent**: 这个选项表示我们要做的更改是永久性的。这意味着即使系统重新启动,更改也会保持。如果不使用此选项,更改只会在当前会话中保持,系统重启后会丢失。
3. **--zone=$1**: 这里,`$1` 是一个 shell 变量,代表一个区域名。在 `firewalld` 中,区域是定义防火墙行为和安全级别的区域。例如,`public`、`home`、`dmz`、`external`、`work`、`dmz` 等都是预定义的区域。不同的区域可以有不同的规则集。
4. **--change-interface=$2**: 这里,`$2` 是另一个 shell 变量,代表一个网络接口名。此选项用于将指定的网络接口分配给指定的区域。
### 举例说明
假设我们有两个 shell 变量,`ZONE="home"` 和 `INTERFACE="eth1"`。我们可以这样使用上述命令:
ZONE="home"
INTERFACE="eth1"
firewall-cmd --permanent --zone=$ZONE --change-interface=$INTERFACE
这个命令的意思是:
* 将 `eth1` 这个网络接口永久性地分配到 `home` 这个区域。
* 由于使用了 `--permanent` 选项,这个更改会在系统重启后仍然有效。
执行此命令后,`eth1` 接口将被绑定到 `home` 区域,这意味着该接口将遵循与 `home` 区域关联的防火墙规则。这样,你可以为不同的网络环境和安全需求定义不同的区域和规则集。