首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RedHat 8中,来自坞站容器的暴露端口无法通过IP地址访问主机服务器

问在RedHat 8中,来自坞站容器的暴露端口无法通过IP地址访问主机服务器
EN

Stack Overflow用户
提问于 2021-06-07 10:59:42
回答 2查看 405关注 0票数 1

我在RedHat 8中运行docker容器。在我的docker容器中,我公开了8080端口,以便从外部访问。我可以从其他服务器远程登录8080,但无法通过IP地址从主机服务器远程登录8080。

代码语言:javascript
复制
[root@redhat1 biz]# cat docker-compose.yml 
version: '3'  
services:
  web:
    image: nginx:latest
    ports:
     - "8080:80"
    links:
     - php
  php:
    image: php:7-fpm

​

​

无法使用IP地址从主机服务器访问暴露的端口8080。它可以通过本地主机或127.0.0.1远程登录8080。

​

​

可以通过IP地址从其他服务器Telnet 8080。

​

​

EN

回答 2

Stack Overflow用户

发布于 2021-06-07 19:47:28

检查主机服务器在firewalld上的防火墙设置,了解端口8080的传入。

您可能需要修改主机上的iptables规则,以允许来自Docker容器的连接。下面这样的代码将会起到作用:

iptables -A INPUT -i docker0 -j ACCEPT这将允许从Docker容器访问主机上的任何端口。

iptables规则是有序的,此规则可能会执行,也可能不会执行,这取决于之前出现的其他规则。

您将只能访问正在侦听INADDR_ANY (例如0.0.0.0 )或显式侦听docker0接口的主机服务。

票数 0
EN

Stack Overflow用户

发布于 2021-10-25 15:17:45

本地生成的数据包不会通过NAT PREROUTING,这是大多数“转发端口”(DNAT)实现添加规则的地方。这解释了您尝试使用来自不同服务器的公共IP地址的原因。

通过使用NAT输出链,可以使本地主机情况正常工作。我希望docker也会为这种情况添加一个规则。

例如,docker可能有这样的规则:

代码语言:javascript
复制
# iptables -t nat -A OUTPUT -p tcp --dst 127.0.0.1 --dport 8080 -j REDIRECT --to-ports 80

可能缺少的是一个与您的公共IP地址相匹配的类似规则。这是有问题的,因为规则需要知道您的公网IP。这可能解释了为什么docker不生成这个规则。

代码语言:javascript
复制
# iptables -t nat -A OUTPUT -p tcp --dst a.b.c.d --dport 8080 -j DNAT --to-destination 127.0.0.1:80

默认情况下,Firewalld不会阻止输出数据包。除非你自己做了改变,否则我认为这不太可能是原因。暂时禁用它将是验证这一点的一种快速方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67865445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档