如果被监控的vps (Debian 12) 在同一个网卡上面配置了两个IPv4地址,能否指定哪吒的agent通过特定的IP出站?以下为解决过程,主要是用了iptables owner模块针对nezha-agent进程指定了出站IP,其他人遇到类似的问题可以参考,感谢大佬 @satorik

更新一下:下面的方法貌似对于哪吒的icmp ping网络监控无效,我主要是用tcp ping,iptables也不懂,不影响使用,所以没有再深究了。

root登录

如果原来存在nezha-agent服务,用下面的命令删除

systemctl stop nezha-agent
systemctl disable nezha-agent
rm -f /etc/systemd/system/nezha-agent.service
rm -rf /opt/nezha
rm -rf /var/log/nezha
systemctl daemon-reload

新建用户 nezhauser

sudo useradd -m -s /bin/bash nezhauser

运行哪吒agent脚本 这里是v0版的脚本

curl -L https://raw.githubusercontent.com/nezhahq/scripts/v0/install.sh -o nezha.sh && chmod +x nezha.sh && ./nezha.sh install_agent xx.xx.xx 5555 xxxxxxxxxxxxxxxxxxxxxxxx

先停止服务

systemctl stop nezha-agent

编辑/etc/systemd/system/nezha-agent.service
[service]字段下面增加

User=nezhauser

更改WorkingDirectory字段为

WorkingDirectory=/home/nezhauser

返回ssh主窗口,增加用户运行权限

chown -R nezhauser /opt/nezha/

运行

systemctl daemon-reload
systemctl restart nezha-agent

这个时候去查看进程,可以看到nezhe-agent进程的用户为:nezhauser

运行iptables命令,把nezhauser用户的process都用指定IP 出站

iptables -t nat -A POSTROUTING -m owner --uid-owner nezhauser -j SNAT --to-source [指定IP]

哪吒dashboard里面显示的此vps的IP就是为指定的IP了,网络监控也是使用指定IP了,如果不是的话,再运行一次

systemctl restart nezha-agent

刷新哪吒dashboard即可

如果要持久化iptables规则,即重启还有效,还需要运行

apt install iptables-persistent

iptables-save > /etc/iptables/rules.v4