这是我第一次使用zabbix。
我在 Linux 上安装了 zabbix 服务器。装有 zabbix 服务器的工作站被带有 iptables 的防火墙隐藏。
这是我的设置
互联网 -> 防火墙 -> LAN(zabbix 服务器)
防火墙有两个网络接口:
- eth0 192.168.1.2(连接到互联网)
- eth1 192.168.0.1(连接到 LAN)
Zabbix 服务器的 IP 为 192.168.0.80
在防火墙上我已经配置了这样的iptables(转发已启用):
# Default policy to drop all incoming packets.
iptables -P INPUT DROP
iptables -P FORWARD DROP
# Accept incoming packets from localhost and the LAN interface.
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
# Accept incoming packets from the WAN if the router initiated the connection.
iptables -A INPUT -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Forward LAN packets to the WAN.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
# Forward WAN packets to the LAN if the LAN initiated the connection.
iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Zabbix
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 10050 -j DNAT --to-destination 192.168.0.80
iptables -A FORWARD -s 161.97.136.20/32 -p tcp -d 192.168.0.80 --dport 10050 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 10051 -j DNAT --to-destination 192.168.0.80
iptables -A FORWARD -s 161.97.136.20/32 -p tcp -d 192.168.0.80 --dport 10051 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
现在,在 Zabbix 服务器(192.168.0.80)中我运行命令来监控端口 10051 上的调用:
sudo tcpdump -i any port 10051
我在 IP 为 161.97.136.20 的服务器上安装了一个 zabbix 代理。如果我尝试执行该命令
zabbix_sender -z <hostname server> -s "<source>" -p 10051 -vv -k <key> -o <value>
我希望从 tcpdump 中看到一些东西,但是我什么也没看到。
如果我从 LAN 内的另一台服务器(例如 IP 为 192.168.0.2)执行相同的命令,我会看到 tcpdump 捕获流量。
因此,看起来问题出在防火墙的 iptables 命令上。
我希望我已经表达清楚了。
你能帮助我吗?
答案1
我发现这个 FORWARD iptables 规则存在问题:
iptables -A FORWARD -s 161.97.136.20/32 -p tcp -d 192.168.0.80 --dport 10051 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
由于您设置的性质,具有 IP 的主机161.97.136.20
不会通过私有 IP 来寻址您的 zabbix 服务器192.168.0.80
,而是使用防火墙 eth0 的公共 IP。
我不是 iptables 专家,但这应该可行:
iptables -A FORWARD -s 161.97.136.20/32 -p tcp --dport 10051 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
此外,如果您想要使用主动 zabbix 代理架构,那么您只需要10051
在 zabbix 服务器/zabbix 代理上打开端口。