我刚刚在 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。