我不是系统工程师(我是软件开发人员),我遇到了以下问题。我有这个 LinuxCentOS 7服务器。一位同事告诉我,他无法从属于此子网的某台特定机器 ping 此服务器10.10.10.0/24。他让我检查一下这个子网是否存在一些限制。
情况是,从其他机器可以 ping 该服务器,但从服务器内部则无法 ping 通10.10.10.0/24。
那我该怎么办?我想检查一下 Linux 防火墙上是否激活了一些特定规则。
所以防火墙似乎在我的 CentOS 7 机器上处于活动状态:
[centos@prod-zabbix ~]$ sudo -s
[root@prod-zabbix centos]# firewall-cmd --state
running
[root@prod-zabbix centos]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-03-04 08:22:09 UTC; 1 weeks 5 days ago
Docs: man:firewalld(1)
Main PID: 3125 (firewalld)
CGroup: /system.slice/firewalld.service
└─3125 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
然后我尝试执行防火墙命令——list-all命令以显示一些进一步的信息(据我所知,它显示特定区域的信息...但我不清楚“区域”的含义),无论如何这是输出:
[root@prod-zabbix centos]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 10050/tcp 10051/tcp 80/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
我唯一能看到的可能与 ping 相关的是这一行icmp 块反转:否
那么基本上我如何检查防火墙是否阻止了属于这个特定子网的机器的 ping 操作?
答案1
iptables -vnL
将列出防火墙规则以及数据包和字节计数器 - 您可以查看在 ping 时匹配和更改的规则。
一种快速检查的方法是在防火墙顶部插入一条规则,看看它是否允许流量 -
iptables -I INPUT -s 10.0.10.0/24 -j ACCEPT
应该暂时(即直到重新启动/重新加载防火墙)允许来自该范围的流量进入您的服务器,假设不涉及 NAT,并且数据包发往服务器,而不仅仅是通过它路由。
您可能还想添加一条输出规则,以防您的服务器接收到数据包但丢弃响应。
iptables -I OUTPUT -d 10.0.10.0/24 -j ACCEPT
你也可以使用 tcpdump 来查看你是否正在接收和发送数据包 - 比如
tcpdump -I any src or dst 10.0.10.0/24
+vtcpdump 命令比较粗糙,我不在电脑旁测试。您还需要确保软件包已安装,并且发送方在您运行它时尝试与您通信。