Linux

防火牆在 kickstart 中沒有按預期工作

  • April 23, 2019

我在防火牆的 kickstart 中有以下行

firewall --enabled --service=ssh,glusterfs,tftp,ntp

我期望 tftp 伺服器應該可以從其他系統訪問,但它只能從本地伺服器訪問。

firewall-cmd  --list-services
ssh dhcpv6-client

我做了以下步驟,它開始工作

firewall-cmd --permanent --zone=public --add-service=tftp
firewall-cmd --reload

為什麼kickstart防火牆命令不起作用既不拋出任何錯誤

更新1 : @Gracefulrestart 回復後,我嘗試了以下選項,但仍然沒有成功

firewall --enabled --service=ssh --service=glusterfs --service=tftp --service=ntp
firewall --enabled --service={ssh,glusterfs,tftp,ntp}

列表服務的輸出是

firewall-cmd  --list-services
ssh dhcpv6-client

手動添加後

firewall-cmd --permanent --zone=public --add-service=tftp

firewall-cmd  --list-services
ssh dhcpv6-client tftp

以下是日誌摘錄自 /var/log/anaconda/journal.log

Apr 23 10:48:10 localhost program[6875]: Running... /usr/bin/firewall-offline-cmd --enabled --port=30083:tcp --port=9090:tcp --port=8080:tcp --service=tftp --service=ssh --service=glusterfs --service=ntp
Apr 23 10:48:10 localhost systemd[1]: Started Locale Service.
Apr 23 10:48:10 localhost program[6875]: INVALID_SERVICE: 'glusterfs' not among existing services
Apr 23 10:48:10 localhost program[6875]: Adding service 'tftp' to default zone.
Apr 23 10:48:10 localhost program[6875]: Adding service 'ssh' to default zone.
Apr 23 10:48:10 localhost program[6875]: ALREADY_ENABLED: ssh
Apr 23 10:48:10 localhost program[6875]: Adding service 'glusterfs' to default zone.
Apr 23 10:48:10 localhost program[6875]: Adding service 'ntp' to default zone.
Apr 23 10:48:10 localhost program[6875]: Adding port '30083/tcp' to default zone.
Apr 23 10:48:10 localhost program[6875]: Adding port '9090/tcp' to default zone.
Apr 23 10:48:10 localhost program[6875]: Adding port '8080/tcp' to default zone.
Apr 23 10:48:10 localhost program[6875]: Return code: 2

請在下面找到解決此問題的詳細資訊,根據官方文件

A minimal installation's %packages section which will also configure the firewall 
will look similar to the following:

%packages
@Core
authconfig
system-config-firewall-base

在我的情況下authconfig失踪了。

其次也遵循@GracefulRestart 的建議以獲得正確的語法

我相信您必須為要添加到防火牆的每個服務傳遞一次服務選項:

firewall --enabled --service=ssh --service=glusterfs --service=tftp --service=ntp

我不記得您是否可以在 kickstart 中使用 bash 大括號擴展,但它看起來與您最初擁有的很接近:

firewall --enabled --service={ssh,glusterfs,tftp,ntp}

引用自:https://unix.stackexchange.com/questions/513228