无法从非本地服务器使用端口 3000 访问 Grafana(Docker 图像)
Cannot access Grafana (Docker image) using port 3000 from non-local server
我正在使用 Docker 在 Ubuntu 服务器上工作,其中我使用以下命令 运行 Grafana Docker 图像(基于文档:https://grafana.com/docs/grafana/latest/installation/docker):
docker volume create grafana-storage
docker run -d -p 3000:3000 --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana-oss
我可以使用 localhost:3000 成功访问我的 Grafana 实例,但问题是我无法从任何外部服务器访问 x.x.x.x:3000
。除非我使用 localhost
.
,否则甚至不能在本地使用
尽管如此,我可以从外部服务器从外部设备访问x.x.x.x
(端口80,正在被另一个进程使用)。
我继续检查端口配置详细信息:
netstat -an | grep "3000"
tcp 0 0 yy.yy.yy.yy:53596 yy.yy.yy.yy:3000 ESTABLISHED
tcp 0 0 yy.yy.yy.yy:53716 yy.yy.yy.yy:3000 ESTABLISHED
tcp 0 0 yy.yy.yy.yy:53700 yy.yy.yy.yy:3000 ESTABLISHED
tcp6 0 0 :::3000 :::* LISTEN
tcp6 0 0 ::1:3000 ::1:50602 ESTABLISHED
tcp6 0 0 ::1:50706 ::1:3000 ESTABLISHED
tcp6 0 0 ::1:3000 ::1:50706 ESTABLISHED
tcp6 0 0 ::1:50602 ::1:3000 ESTABLISHED
iptables -S | grep "3000"
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 3000 -j ACCEPT
-A DOCKER -d yy.yy.yy.yy/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 3000 -j ACCEPT
iptables -L INPUT -nvx
Chain INPUT (policy ACCEPT 659 packets, 98721 bytes)
pkts bytes target prot opt in out source destination
136 8160 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3000
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3000
并注意到防火墙处于非活动状态,然后我启用它并设置规则:
sudo ufw enable
sudo ufw allow 3000/tcp comment 'grafana-port'
sudo ufw reload
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 3000/tcp ALLOW IN Anywhere # grafana-port
[ 2] 3000/tcp (v6) ALLOW IN Anywhere (v6) # grafana-port
应用此更改并没有使 x.x.x.x:3000
起作用。但是,正如我所说,80 端口仍然正常工作。也许我错过了其他东西。
更多信息:我尝试在 grafana.ini
、defaults.ini
和 custom.ini
文件中使用 domain = x.x.x.x
和 serve_from_subpath = true
。没用。
您对解决这个问题有什么建议或贡献吗?提前致谢!
您尝试过以下方法吗?
docker run -p x.x.x.x:3000:3000 ...
问题已解决,让防火墙处于非活动状态,并连接到位于 tplinkwifi.net 的服务器路由器。我把这个路由器配置放在 advanced > NAT forwarding > Port forwarding
:
Device IP Address: 192.168.x.x
External Port: 3000
Internal Port: 3000
Protocol: TCP
然后重新启动 docker 容器并从 non-local 服务器获得访问权限。
谢谢你的建议。
我正在使用 Docker 在 Ubuntu 服务器上工作,其中我使用以下命令 运行 Grafana Docker 图像(基于文档:https://grafana.com/docs/grafana/latest/installation/docker):
docker volume create grafana-storage
docker run -d -p 3000:3000 --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana-oss
我可以使用 localhost:3000 成功访问我的 Grafana 实例,但问题是我无法从任何外部服务器访问 x.x.x.x:3000
。除非我使用 localhost
.
尽管如此,我可以从外部服务器从外部设备访问x.x.x.x
(端口80,正在被另一个进程使用)。
我继续检查端口配置详细信息:
netstat -an | grep "3000"
tcp 0 0 yy.yy.yy.yy:53596 yy.yy.yy.yy:3000 ESTABLISHED
tcp 0 0 yy.yy.yy.yy:53716 yy.yy.yy.yy:3000 ESTABLISHED
tcp 0 0 yy.yy.yy.yy:53700 yy.yy.yy.yy:3000 ESTABLISHED
tcp6 0 0 :::3000 :::* LISTEN
tcp6 0 0 ::1:3000 ::1:50602 ESTABLISHED
tcp6 0 0 ::1:50706 ::1:3000 ESTABLISHED
tcp6 0 0 ::1:3000 ::1:50706 ESTABLISHED
tcp6 0 0 ::1:50602 ::1:3000 ESTABLISHED
iptables -S | grep "3000"
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 3000 -j ACCEPT
-A DOCKER -d yy.yy.yy.yy/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 3000 -j ACCEPT
iptables -L INPUT -nvx
Chain INPUT (policy ACCEPT 659 packets, 98721 bytes)
pkts bytes target prot opt in out source destination
136 8160 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3000
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3000
并注意到防火墙处于非活动状态,然后我启用它并设置规则:
sudo ufw enable
sudo ufw allow 3000/tcp comment 'grafana-port'
sudo ufw reload
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 3000/tcp ALLOW IN Anywhere # grafana-port
[ 2] 3000/tcp (v6) ALLOW IN Anywhere (v6) # grafana-port
应用此更改并没有使 x.x.x.x:3000
起作用。但是,正如我所说,80 端口仍然正常工作。也许我错过了其他东西。
更多信息:我尝试在 grafana.ini
、defaults.ini
和 custom.ini
文件中使用 domain = x.x.x.x
和 serve_from_subpath = true
。没用。
您对解决这个问题有什么建议或贡献吗?提前致谢!
您尝试过以下方法吗?
docker run -p x.x.x.x:3000:3000 ...
问题已解决,让防火墙处于非活动状态,并连接到位于 tplinkwifi.net 的服务器路由器。我把这个路由器配置放在 advanced > NAT forwarding > Port forwarding
:
Device IP Address: 192.168.x.x
External Port: 3000
Internal Port: 3000
Protocol: TCP
然后重新启动 docker 容器并从 non-local 服务器获得访问权限。 谢谢你的建议。