我也只是追踪了这个问题。我的症状与您的症状完全相同,甚至尝试了您尝试过的确切方法。总而言之,我的问题仅出现是因为我在SELinux上的centos上使用了tomcat。
有些人使用以下命令帮助我诊断,以查看安全事件以及不允许执行某些操作的原因:
sudo ausearch -m avcsudo grep "tcp_socket" /var/log/audit/audit.log | audit2why // translates log into some human readable reasons why the audit record was generated
我看到像这样的条目:
类型= AVC消息=审核(1507861264.561:64750):AVC:拒绝{name_connect} for pid = 1326 comm
=“ java” dest = 3306 scontext = system_u:system_r:tomcat_t:s0 tcontext =
system_u:object_r:mysqld_port_t:s0 tclass = tcp_socket原因:缺少类型强制(TE)允许规则。
您可以使用audit2allow生成可加载模块以允许此访问。
然后找到有关tomcat和SELinux的文章https://noobient.com/post/165972214381/selinux-woes-
with-tomcat-on-centos-74
您可以运行以下命令以查看tomcat是否在tomcat_t安全上下文中运行。
$ps auxZ | grep tomcat
为了真正确定我的错误是否是SELinux,我禁用了SELinux
$ sestatus // shows: SELinux status: enabled$ sudo vim /etc/selinux/config // set "SELINUX=disabled"$ sudo shutdown -r now$ sestatus // shows: SELinux status: disabled
重新启动我的机器,发现tomcat现在正在建立出站连接。
太好了,现在我至少知道为什么会这样。当然,如果您需要SELinux,则禁用它不是解决方案。另一个可能不是解决方案的解决方法是不通过yum安装tomcat。Yum将使用安全上下文安装tomcat。
我认为现在的行动方针是修改安全性上下文或用于管理tomcat的规则集,以使其建立传出连接。



