pam_access.so模块会把ipv4的地址转换为IPV6

【标题描述】在vsftpd中使用pam_access.so模块会把ipv4的地址转换为ipv6,导致无法成功登录
【环境信息】
硬件信息:
1) 裸机场景提供出问题的硬件信息:None
2) 虚机场景提供虚机XML文件或者配置信息:需要再提供
软件信息:
1) openEuler release 22.03 (LTS-SP3)
2) Linux localhost.localdomain 5.10.0-182.0.0.95.oe2203sp3.x86_64 #1 SMP Sat Dec 30 13:10:36 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
3) vsftpd: version 3.0.3和pam_access模块
如果有特殊组网,请提供网络拓扑图
【问题复现步骤】
具体操作步骤
1、开启vsftpd的虚拟用户(具体怎么配置可以自行搜索)
2、创建真实用户test 命令:useradd -r -s /sbin/nologin test
3、修改/etc/pam.d/vsftpd加入pam_access模块,具体配置如下:
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_access.so accessfile=/etc/vsftpd/access.conf
account required pam_userdb.so db=/etc/vsftpd/user
4、创建access.conf文件
命令:touch /etc/vsftpd/access.conf
5、加入access规则
命令:
vi /etc/vsftpd/access.conf
加入内容:
+:test:192.168.1.1
-:ALL:ALL
6、重启vsftd
systemctl restart vsftd
然后在192.168.1.1登录ftp,发现无法登录
最后去查看登录日志
日志报告:
Jun 29 16:48:35 localhost vsftpd[1875]: pam_access(vsftpd:account): access denied for user ftpuser' from ::ffff:192.168.1.1’

这个证明pam_access把192.168.1.1识别成了::ffff:192.168.1.1,客户机上面已取消ipv6协议,实际上是没有ipv6地址的。
出现概率(必现)
【预期结果】
预期应该是通过验证
【实际结果】
pam_access(vsftpd:account): access denied for user ftpuser' from ::ffff:192.168.1.1’
【附件信息】
Jun 29 16:48:35 localhost vsftpd[1875]: pam_userdb(vsftpd:auth): user ‘ftpuser’ granted access
Jun 29 16:48:35 localhost vsftpd[1875]: pam_access(vsftpd:account): access denied for user ftpuser' from ::ffff:192.168.1.1’

在线等,有没有人有办法的?

和这个模块没关系,默认配置下vsftpd使用ipv6 socket监听,需修改为ipv4 socket监听方式,修改vsftpd.conf配置文件如下配置

listen=YES
listen_ipv6=NO

非常感谢,不过我临时把ipv6对应的掩码算出来 :rofl:,例如192.168.0.0/16等于::ffff:192.168.0.0/112