如何在Firewalld中为特定IP地址开放端口

如何在私有网络中允许来自特定IP地址的流量或者允许来自特定私有网络的流量通过firewalld到达CentOS服务器上特定端口或者服务。

我们将在这里学习如何在运行了firewalld防火墙的RHEL或CentOS服务器中为一个特定IP地址或者网络范围开放端口。

解决这个问题的最合适方式是通过使用firewalld zone。因而,你需要创建一个新zone,它将具有新的配置(或者你可以使用任何可用的安全默认zones)。

在Firewalld中为特定IP地址开放端口

首先创建一个合适的zone名称(在这里,我们使用mysql-access来允许访问MySQL数据库服务器)。

[root@AlmaLinux blctrl]# firewall-cmd --new-zone=mysql-access --permanent
success

接着,重载firewalld设置来应用这个变化。如果你跳过这个步骤,当你尝试使用这个新zone名称时,你会遇到错误。此时,新的zone会出现在zones列表中。

[root@AlmaLinux blctrl]# firewall-cmd --reload
success
[root@AlmaLinux blctrl]# firewall-cmd --get-zones
block dmz drop external home internal libvirt mysql-access nm-shared public trus                                                                   ted work
[root@AlmaLinux blctrl]# firewall-cmd --get-zones
block dmz drop external home internal libvirt mysql-access nm-shared public trusted work

接着,添加源地址(192.168.50.180/24)和你想要在本地机器上开放的端口(3306)。接着重载这个firewalld设置来使用新的更改。

[root@AlmaLinux blctrl]# firewall-cmd --zone=mysql-access --add-source=192.168.50.180 --permanent
success
[root@AlmaLinux blctrl]# firewall-cmd --zone=mysql-access --add-port=3306/tcp --permanent
success
[root@AlmaLinux blctrl]# firewall-cmd --reload
success

另外,你能够允许来自整个网络的流量到达一个服务或端口。

[root@AlmaLinux blctrl]# firewall-cmd --zone=mysql-access --add-source=192.168.50.0/24 --permanent
success
[root@AlmaLinux blctrl]# firewall-cmd --zone=mysql-access --add-port=3306/tcp --permanent
success
[root@AlmaLinux blctrl]# firewall-cmd --reload
success

要确认新的zone有了以上添加的所需设置,用以下命令检测其详情情况。

[root@AlmaLinux blctrl]# firewall-cmd --zone=mysql-access --list-all
mysql-access (active)
  target: default
  icmp-block-inversion: no
  interfaces:
  sources: 192.168.50.180
  services: ssh
  ports: 3306/tcp
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

从Firewalld移除端口和Zone

你可以按如下显示移除源IP地址或网络。

[root@AlmaLinux blctrl]# firewall-cmd --zone=mysql-access --remove-source=192.168.50.180 --permanent
success
[root@AlmaLinux blctrl]# firewall-cmd --reload
success

要从一个区域移除端口,发出以下命令,并且重载firewall的设置:

[root@AlmaLinux blctrl]# firewall-cmd --zone=mysql-access --remove-port=3306/tcp --permanent
success
[root@AlmaLinux blctrl]# firewall-cmd --reload
success

确定新的设置是否生效:

[root@AlmaLinux blctrl]# firewall-cmd --zone=mysql-access --list-all
mysql-access
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh
  ports:
  protocols:
  forward: no
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

要移除区域,运行以下命令,并且重载firewalld设置:

[root@AlmaLinux blctrl]# firewall-cmd --permanent --delete-zone=mysql-access
success
[root@AlmaLinux blctrl]# firewall-cmd --reload
success

最后,你也能够使用firewalld rich规则。这是一个示例:

[root@AlmaLinux blctrl]# firewall-cmd --permanent --zone=mysql-access --add-rich-rule='rule family="ipv4" source address="192.168.50.180" port protocol="tcp" port="3306" accept'
success
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值