关于ipvsadm停止服务,/etc/sysconfig/ipvsadm文件被清空

文章描述了一个关于Selinux在系统服务ipvsadm中的影响。在停止ipvsadm服务时,配置文件/etc/sysconfig/ipvsadm应保存当前规则,但实际被清空。通过调整文件权限和关闭Selinux后,发现是Selinux的强制执行模式阻止了文件的写入,改为宽容模式后问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说结论

Selinux的问题。。。。

发现过程:

首先查看这个ipvsadm这个服务start或者stop会运行的命令

[root@lvs ~]# cat /usr/lib/systemd/system/ipvsadm.service
---省略部分----
[Service]
Type=oneshot
ExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm"
ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm"
ExecStop=/sbin/ipvsadm -C
RemainAfterExit=yes
---省略部分----

通过这个服务文件我们可以发现,start这个服务时,会把/etc/sysconfig/ipvsadm配置文件中的规则应用回来,stop这个服务时,会把当前规则导出到/etc/sysconfig/ipvsadm这个文件,然后清空规则。

 上图是stop服务时,对文件监控的日志

测试时发现,stop服务时,这个规则并不能保存下来,规则配置文件是会被清空的。

[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.200.200:80 -s rr
-a -t 172.25.200.200:80 -r 192.168.10.70:80 -m -w 1
-a -t 172.25.200.200:80 -r 192.168.10.100:80 -m -w 1
[root@lvs ~]# systemctl stop ipvsadm.service 
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
[root@lvs ~]# 

然后我们手动配置这个规则文件,start服务,这个规则又会自动应用上,说明/usr/lib/systemd/system/ipvsadm.service这个服务文件的Start效果是正常的,辨证如下:

[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.200.200:80 -s rr
-a -t 172.25.200.200:80 -r 192.168.10.70:80 -m -w 1
-a -t 172.25.200.200:80 -r 192.168.10.100:80 -m -w 1
[root@lvs ~]# systemctl start ipvsadm.service 
[root@lvs ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  lvs:http rr
  -> 192.168.10.70:http           Masq    1      0          0         
  -> 192.168.10.100:http          Masq    1      0          0   

由此我怀疑是不是这个服务对于/etc/sysconfig/ipvsadm这个文件只有读取(start)没有写入(stop)的权限,然后我对文件的权限进行了修改

[root@lvs ~]# ll /etc/sysconfig/ipvsadm
-rwxrwxrwx. 1 root root 0 3月  14 19:43 /etc/sysconfig/ipvsadm

然后进行stop和start,发现这个文件依旧会被清空

然后突然想到还有selinux这一个东西,把selinux关闭测试一下

[root@lvs ~]# getenforce 
Enforcing
[root@lvs ~]# setenforce 0
[root@lvs ~]# getenforce 
Permissive

[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.200.200:80 -s rr
-a -t 172.25.200.200:80 -r 192.168.10.70:80 -m -w 1
-a -t 172.25.200.200:80 -r 192.168.10.100:80 -m -w 1
[root@lvs ~]# systemctl start ipvsadm.service 
[root@lvs ~]# ipvsadm -Ln   #检查配置文件被应用
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.200.200:80 rr
  -> 192.168.10.70:80             Masq    1      0          0         
  -> 192.168.10.100:80            Masq    1      0          0     
[root@lvs ~]# systemctl stop ipvsadm.service 
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.200.200:80 -s rr
-a -t 172.25.200.200:80 -r 192.168.10.70:80 -m -w 1
-a -t 172.25.200.200:80 -r 192.168.10.100:80 -m -w 1

Perfect!解决成功,就是简单的SELINUX影响了服务的文件写入。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值