【服务端口】nacos启动成功,控制台访问不到

在本地运行Nacos的Docker容器时,由于防火墙配置问题导致无法从本地访问。通过检查端口、放开8848/tcp端口、重载防火墙配置、关闭防火墙以及重启Docker服务,最终解决了Nacos容器的外部连接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用nacos的过程中,在本地虚拟中通过docker容器运行成功,但是本地却访问不了,最后发现是对应的服务端口没有放开,导致连接建立不起来。

 

下面记录一下命令:

1. 查看端口是否方法

[root@localhost ~]# firewall-cmd --query-port=8848/tcp
no

2. 放开端口

[root@localhost ~]# firewall-cmd --add-port=8848/tcp --permanent
success

# 如需移除放开的端口
firewall-cmd --permanent --remove-port=8848/tcp

3. 重新载入添加的端口

[root@localhost ~]# firewall-cmd --reload
success

4. 确认配置是否生效

[root@localhost ~]# firewall-cmd --query-port=8848/tcp
yes

如此设置之后还是访问不了,遂直接使用以下命令关闭防火墙,还是不行;

防火墙状态相关命令:

# 查看防火墙运行状态
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2022-11-06 21:11:48 CST; 3 months 7 days ago
     Docs: man:firewalld(1)
 Main PID: 1076 (firewalld)
    Tasks: 2
   Memory: 8.9M
   CGroup: /system.slice/firewalld.service
           └─1076 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid


# 关闭防火墙
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# systemctl stop firewalld

最后想到重启nacos容器,但是删除之后重新运行时候遇到以下iptables错误(iptables: No chain/target/match by that name.):

[root@localhost ~]# docker run -itd -p 8848:8848 \
> --name nacos \
> --network mysql-network \
> --ip 172.0.0.28 \
> --env MODE=standalone \
> --env SPRING_DATASOURCE_PLATFORM=mysql \
> --env MYSQL_SERVICE_HOST=172.0.0.5 \
> --env MYSQL_SERVICE_PORT=3306 \
> --env MYSQL_SERVICE_DB_NAME=nacos \
> --env MYSQL_SERVICE_USER=nacos \
> --env MYSQL_SERVICE_PASSWORD=nacos \
> nacos/nacos-server:latest
cf2a10f1fdff2fdd937c90da936411eebf91e4a6290edfbac6075b5e9815fcf5
docker: Error response from daemon: driver failed programming external connectivity on endpoint nacos (16d40001093cf27162dcc2440391a243989d532b356ddfc6b1e1e8aee66d0195):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8848 -j DNAT --to-destination 172.0.0.28:8848 ! -i br-c9eca8333ecc: iptables: No chain/target/match by that name.
 (exit status 1)).

最后通过重启docker,重新运行nacos访问成功。

[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker rm -f nacos
nacos
[root@localhost ~]# docker run -itd -p 8848:8848 \
> --name nacos \
> --network mysql-network \
> --ip 172.0.0.28 \
> --env MODE=standalone \
> --env SPRING_DATASOURCE_PLATFORM=mysql \
> --env MYSQL_SERVICE_HOST=172.0.0.5 \
> --env MYSQL_SERVICE_PORT=3306 \
> --env MYSQL_SERVICE_DB_NAME=nacos \
> --env MYSQL_SERVICE_USER=nacos \
> --env MYSQL_SERVICE_PASSWORD=nacos \
> nacos/nacos-server:latest
effdf773e7de12d868d8518c4f347728f723f49c1136f781ba9c6488d97533c7

### Nacos 部署不可访问解决方案 当遇到云服务器上的 Nacos 实例无法访问的情况时,可以从以下几个方面排查并解决问题: #### 服务状态确认 确保 Nacos 服务已经成功启动并且处于运行状态。可以通过命令行工具查看进程是否存在以及监听端口是否打开。 对于 Linux 系统可以使用如下命令来检查: ```bash ps aux | grep nacos netstat -tuln | grep 8848 ``` 如果发现 Nacos 进程未正常启动,则需进一步查阅日志文件了解具体原因[^1]。 #### 安全组配置审查 云平台通常会设置安全组规则控制入站流量,默认情况下可能阻止外部连接到指定端口(如 Nacos 默认使用的 8848)。因此要核实当前实例的安全策略允许 HTTP/HTTPS 请求通过该端口号到达目标机器内部网络接口。 #### 主机防火墙验证 除了云端层面的安全措施外,还需注意操作系统的本地防火墙设定是否会拦截请求。例如,在 CentOS/RHEL 发行版中可通过 `firewalld` 或者旧版本中的 `iptables` 来管理进出的数据包过滤规则;而在 Ubuntu 上则是利用 UFW (Uncomplicated Firewall) 工具完成相同功能。适当调整这些软件定义的防护机制以便让必要的通信得以顺利进行。 #### DNS 解析与主机名映射 假如是以域名形式尝试访问 Nacos 控制台失败的话,那么可能是由于DNS解析错误或者是 `/etc/hosts` 文件内的条目不正确所引起的。此时应该先测试能否直接用 IP 地址代替 FQDN 访问应用界面,以此判断问题根源所在。 #### 日志分析定位故障点 最后但同样重要的是深入研究应用程序产生的日志记录。Nacos 的日志路径一般位于安装目录下的 logs 子文件夹内。这里保存着关于系统初始化过程、API 调用响应情况以及其他潜在异常事件的信息片段,有助于快速锁定引发连通性障碍的确切位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值