AlmaLinux 8.8下Memcached无法监听11211以外端口的问题求助
嗨,我来帮你搞定这个困扰!你遇到的问题其实是SELinux访问控制限制导致的,这在RHEL系发行版(包括AlmaLinux)里是很常见的安全机制限制。
问题回顾
你已经成功在AlmaLinux 8.8(RHEL 8.8克隆版)上安装了Memcached,但修改/etc/sysconfig/memcached配置文件里的端口为11212、11213等非默认值后,重启服务时收到了failed to listen on TCP port 11212: Permission denied的错误提示;后续通过Cockpit查看,明确看到SELinux的报错信息:
SELinux is preventing /usr/bin/memcached from name_bind access on the tcp_socket port 11213.
解决方案
根据SELinux给出的提示,我们需要把自定义端口添加到Memcached允许绑定的端口类型中,具体操作如下:
执行端口权限配置命令
把你想要使用的端口(比如11213)添加到SELinux允许Memcached绑定的端口列表里,执行以下命令:semanage port -a -t memcache_port_t -p tcp 11213如果你需要使用多个自定义端口(比如11212、11214),只需要重复执行该命令,替换对应的端口号即可。
重启Memcached服务验证
配置完成后,重启Memcached服务使设置生效:systemctl restart memcached你可以通过以下命令确认服务状态和端口监听情况:
# 查看服务运行状态 systemctl status memcached # 检查端口是否正常监听 netstat -tulpn | grep memcached
补充说明
SELinux在RHEL系系统中默认会严格限制每个服务的端口访问范围,Memcached默认仅被允许绑定到memcache_port_t类型对应的端口(默认就是11211),任何未被标记为该类型的端口都会被SELinux拒绝绑定,所以必须通过semanage命令手动将自定义端口加入允许列表。
备注:内容来源于stack exchange,提问作者aldemarcalazans

