无法访问 Jenkins(Centos 7)

无法访问 Jenkins(Centos 7)

我刚刚在 Centos 7 物理机上安装了 Jenkins 及其默认配置。

防火墙上8080端口是开放的:

sudo iptables -L -n
[...]
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
[...]

看起来 Jenkins 实际上正在监听所有接口:

sudo netstat -an | grep "LISTEN "
[...]
tcp6       0      0 :::8080                 :::*                    LISTEN
[...]

我可以curl localhost:8080在本地(从 Centos 盒子)毫无问题地使用,但从网络中的任何其他地方我都会得到一个Connection refused

我是否遗漏了什么?

答案1

上面看起来 Jenkins 仅默认使用 ipv6。

请尝试以下操作,这可能会解决您的问题:

跑步: $ /sbin/sysctl net.ipv6.bindv6only

您可能会获得具有价值的输出net.ipv6.bindv6only = 1

如果是这种情况,您将需要禁用该设置:

sudo /sbin/sysctl net.ipv6.bindv6only=0

执行上述命令后,你会得到类似这样的答案net.ipv6.bindv6only = 0,重启 Jenkins:sudo systemctl restart jenkins然后尝试再次连接到 Jenkins。

如果这对你有用,你应该把它放在 sysctl 配置文件中。因为这不是一个持久的修复。重启后,你刚刚修改的设置将默认为1再次。

检查/etc/sysctl.conf/etc/sysctl.d/*添加net.ipv6.bindv6only = 0以使此设置永久生效,并sudo sysctl -p在更改后运行或重新启动。

答案2

@panos :在 /etc/sysconfig/jenkins 中设置 JENKINS_JAVA_OPTIONS="$JENKINS_JAVA_OPTIONS -Djava.net.preferIPv4Stack=true" 后,然后 sudo systemctl restart jenkins 后,它可以工作。我还删除了 /etc/hosts 中的 ipv6 条目,不确定是否需要编辑该文件,后来我检查了“netstat -tulpen”,可以看到 java 正在监听 tcp。

相关内容