Search Posts

标签: system

docker端口绑定到ipv6导致ipv4请求无法转发的问题和解决

本文是对docker 端口绑定到ipv6 导致ipv4请求无法转发的问题的一些记录和解决过程。

问题症状

vmware虚拟机的 centos 7 里面运行了docker 的mysql服务,端口转发3306:3306,结果发现虚拟机外的系统无法访问到虚拟机的3306的数据库服务。

核心的原因

docker 对与ipv6默认是没有打开forwarding 设置的

首先官方的介绍:
在默认的配置中,流量的端口转发分为两种:内部流量转发(本机),外部流量转发(跨机器)

举个例子:

#docker run -d -p 80:80 nginx

这个操作会在iptables中增加如下策略(是的,docker所有的端口转发都是靠iptables实现的)

#iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    0     0 DOCKER     all  --  any    any     anywhere             anywhere             ADDRTYPE match dst-type LOCAL
 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
 
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination
    1    60 DOCKER     all  --  any    any     anywhere            !loopback/8          
查看余下内容

/etc/pam.d/system-auth-ac 写法错误导致root用户无法执行passwd命令的问题解决记录

问题产生过程

某用户 希望设置linux 在任何用户输入密码错误次数超过6次的情况下能触发 用户账号锁定40秒的防护功能(锁后root用户无法登录)。等40秒后,登录界面输入 root用户的正确密码,看能否登陆。但用户自行修改系统配置文件后,系统出现故障:root用户无法执行passwd命令。passwd命令执行后出现如下图的报错:

故障线索分析

注意 其中的一个关键错误:

passwd: module is unknown

illegal module type : root_unlock_time

看起来跟识别模块异常有关。以 module is unkonw 和 illegal module type : root_unlock_time 作为关键词,搜索查到跟 /etc/pam.d/system-auth-ac 相关。



根据/etc/pam.d/system-auth-ac 这个信息,打开文件查看内容。

初步解决验证尝试

给文件的 /etc/pam.d/system-auth-ac 的passwd相关的2行加了注释。
注释后这个文件的第3-4行内容是:

#auth required pam_tally2.so  onerr=fail  deny=6  unlock_time=40 even_deny_root   
#root_unlock_time=30 

注释后就不存在passwd执行后提示passwd: module is unknown的问题了。

但这些语句在 /etc/pam.d/system-auth-ac 文件中本来就有的,为什么突然会报错呢?

经过跟 纯净安装的 /etc/pam.d/system-auth-ac 文件原始内容比对,发现了原因: root_unlock_time=30 并不是单独成行的,用户不小心手动将 它换行,就不符合该文件的语法要求。这个system-auth-ac 文件因为语法错误就无法正常被解析,是本文错误的根源。

最终解决过程记录

请在 linux系统的单用户模式下,使用nano编辑器修正 system-auth-ac 文件内容:

nano   /etc/pam.d/system-auth-ac

以修改 /etc/pam.d/system-auth-ac 文件。
把原来的第3-4行改成:
auth required pam_tally2.so onerr=fail deny=6 unlock_time=40 even_deny_root root_unlock_time=30
(修改后就只剩一行,也就是把原来3-4行合并到一起) 注意even_deny_root root_unlock_time=30这是两个参数,它们之间至少要有用一个空格。

这样就启用了 rhel 5系统的 PAM方式防密码破解防护功能

如何验证是否生效

reboot命令,正常重启系统,如果能进入图形桌面,登录。就说明修改生效。

验证/etc/pam.d/system-auth-ac 修改后是否达到了账号密码错误超过6次后自动锁定的防护效果

root用户,桌面登录之前,输入密码错误次数超过6次,则触发 锁用户的防护(锁后root用户无法登录)。等40秒后,登录界面输入 root用户的正确密码,看能否登陆。

参考文档

根据 man pam_tally2帮助说明文档 ,上述

auth required pam_tally2.so
查看余下内容
加好友请备注:chinaoss
您可以在微信公众号联系我们
我们将24小时内回复。
取消