【发布时间】:2023-03-12 06:40:01
【问题描述】:
我在 ubuntu 服务器 20.04 系统上的 apache2 网络服务器有一个奇怪的问题。似乎 HTTP 请求永远不会到达服务器,因为访问日志是空的。在一些尝试和错误之前和之后我遇到过这个问题,我通过从系统中删除 K3S 解决了它(有点意外)。这工作了一段时间,直到托管我的虚拟服务器的主机执行了一些维护任务,我假设重新启动虚拟机。现在,当我尝试通过 HTTP 访问我的服务器时,我得到了超时,正如我已经写过的,看起来请求永远不会到达网络服务器。我什至无法使用 telnet 或 curl 访问 localhost 上的端口 80 或 443。以下是有关我的网络设置的一些信息:
nmap 本地主机:
港口国服务 22/tcp 打开 ssh 80/tcp 过滤的 http 443/tcp 过滤 https 3306/tcp 打开 mysql 8080/tcp 打开 http-proxy 8081/tcp 打开 blackice-icecap 8200/tcp 打开 trivnet1 8443/tcp 打开 https-alt 10000/tcp 打开 snet-sensor-mgmt 50000/tcp 打开 ibm-db2netstat -tulpn:
Proto Recv-Q Send-Q 本地地址 外部地址 状态 PID/程序名称 tcp 0 0 0.0.0.0:8080 0.0.0.0:* 听 609/java tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 1412/perl tcp 0 0 0.0.0.0:80 0.0.0.0:* 听 619/apache2 tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 420/systemd-resolve tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 560/sshd:/usr/sbin tcp 0 0 0.0.0.0:8761 0.0.0.0:* 听 440/java tcp 0 0 0.0.0.0:8762 0.0.0.0:* 听 452/java tcp 0 0 0.0.0.0:8443 0.0.0.0:* 听 609/java tcp 0 0 0.0.0.0:443 0.0.0.0:* 听 619/apache2 tcp 0 0 127.0.0.1:37025 0.0.0.0:* LISTEN 487/containerd tcp 0 0 127.0.0.1:9990 0.0.0.0:* 听 609/java tcp 0 0 0.0.0.0:8200 0.0.0.0:* LISTEN 2251/vault tcp 0 0 127.0.0.1:27017 0.0.0.0:* 听 476/mongod tcp 0 0 127.0.0.1:3306 0.0.0.0:* 听 863/mysqld tcp6 0 0 :::50000 :::* LISTEN 1055/docker-proxy tcp6 0 0 :::8081 :::* LISTEN 1010/docker-proxy tcp6 0 0 :::22 :::* LISTEN 560/sshd: /usr/sbin tcp6 0 0 :::33060 :::* 听 863/mysqld tcp6 0 0 :::2375 :::* LISTEN 1082/docker-proxy tcp6 0 0 :::2376 :::* LISTEN 1068/docker-proxy UDP 0 0 0.0.0.0:10000 0.0.0.0:* 1412/perl UDP 0 0 127.0.0.53:53 0.0.0.0:* 420/systemd-resolveiptables -L -n:
链输入(策略接受) 目标 prot opt 源目标 KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 外部可见的服务门户 */ KUBE-防火墙全部 -- 0.0.0.0/0 0.0.0.0/0 ufw-before-logging-input all -- 0.0.0.0/0 0.0.0.0/0 ufw-before-input all -- 0.0.0.0/0 0.0.0.0/0 ufw-after-input all -- 0.0.0.0/0 0.0.0.0/0 ufw-after-logging-input all -- 0.0.0.0/0 0.0.0.0/0 ufw-reject-input all -- 0.0.0.0/0 0.0.0.0/0 ufw-track-input all -- 0.0.0.0/0 0.0.0.0/0 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ctstate NEW,ESTABLISHED 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ctstate NEW,ESTABLISHED 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 多端口 dports 80,443 ctstate NEW,ESTABLISHED Chain FORWARD(政策接受) 目标 prot opt 源目标 码头用户所有——0.0.0.0/0 0.0.0.0/0 Docker-ISOLATION-STAGE-1 全部 -- 0.0.0.0/0 0.0.0.0/0 全部接受 -- 0.0.0.0/0 0.0.0.0/0 ctstate 相关,已建立 码头工人全部——0.0.0.0/0 0.0.0.0/0 全部接受 -- 0.0.0.0/0 0.0.0.0/0 全部接受 -- 0.0.0.0/0 0.0.0.0/0 KUBE-FORWARD all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes 转发规则 */ KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 服务门户 */ KUBE-EXTERNAL-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 外部可见的服务门户 */ 全部接受 -- 0.0.0.0/0 0.0.0.0/0 ctstate 相关,已建立 码头工人全部——0.0.0.0/0 0.0.0.0/0 全部接受 -- 0.0.0.0/0 0.0.0.0/0 全部接受 -- 0.0.0.0/0 0.0.0.0/0 全部接受 -- 10.42.0.0/16 0.0.0.0/0 全部接受 -- 0.0.0.0/0 10.42.0.0/16 ufw-before-logging-forward all -- 0.0.0.0/0 0.0.0.0/0 ufw-before-forward all -- 0.0.0.0/0 0.0.0.0/0 ufw-after-forward all -- 0.0.0.0/0 0.0.0.0/0 ufw-after-logging-forward all -- 0.0.0.0/0 0.0.0.0/0 ufw-reject-forward all -- 0.0.0.0/0 0.0.0.0/0 ufw-track-forward all -- 0.0.0.0/0 0.0.0.0/0 链输出(策略接受) 目标 prot opt 源目标 KUBE-SERVICES all -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 服务门户 */ KUBE-防火墙全部 -- 0.0.0.0/0 0.0.0.0/0 ufw-before-logging-output all -- 0.0.0.0/0 0.0.0.0/0 ufw-before-output all -- 0.0.0.0/0 0.0.0.0/0 ufw-after-output all -- 0.0.0.0/0 0.0.0.0/0 ufw-after-logging-output all -- 0.0.0.0/0 0.0.0.0/0 ufw-reject-output all -- 0.0.0.0/0 0.0.0.0/0 ufw-track-output all -- 0.0.0.0/0 0.0.0.0/0 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80 ctstate 已建立 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80 ctstate 已建立 接受 tcp -- 0.0.0.0/0 0.0.0.0/0 多端口 dports 80,443 ctstate 已建立 链码头(2 参考) 目标 prot opt 源目标 接受 tcp -- 0.0.0.0/0 172.18.0.3 tcp dpt:8080 接受 tcp -- 0.0.0.0/0 172.18.0.3 tcp dpt:5000 接受 tcp -- 0.0.0.0/0 172.18.0.2 tcp dpt:2376 接受 tcp -- 0.0.0.0/0 172.18.0.2 tcp dpt:2375 链 DOCKER-ISOLATION-STAGE-1(1 个参考) 目标 prot opt 源目标 Docker-ISOLATION-STAGE-2 全部 -- 0.0.0.0/0 0.0.0.0/0 Docker-ISOLATION-STAGE-2 全部 -- 0.0.0.0/0 0.0.0.0/0 全部返回 -- 0.0.0.0/0 0.0.0.0/0 链 DOCKER-ISOLATION-STAGE-2(2 个参考) 目标 prot opt 源目标 全部删除 -- 0.0.0.0/0 0.0.0.0/0 全部删除 -- 0.0.0.0/0 0.0.0.0/0 全部返回 -- 0.0.0.0/0 0.0.0.0/0 链 DOCKER-USER (1 参考) 目标 prot opt 源目标 全部返回 -- 0.0.0.0/0 0.0.0.0/0 Chain KUBE-EXTERNAL-SERVICES (2 参考) 目标 prot opt 源目标 Chain KUBE-FIREWALL (2 参考) 目标 prot opt 源目标 DROP all -- 0.0.0.0/0 0.0.0.0/0 /* 用于丢弃标记数据包的 kubernetes 防火墙 */ mark match 0x8000/0x8000 DROP all -- !127.0.0.0/8 127.0.0.0/8 /* 阻止传入的本地网络连接 */ ! ctstate 相关、已建立、DNAT 链 KUBE-FORWARD (1 参考) 目标 prot opt 源目标 全部删除 -- 0.0.0.0/0 0.0.0.0/0 ctstate 无效 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* Kubernetes 转发规则 */ 标记匹配 0x4000/0x4000 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes 转发 conntrack pod 源规则 */ ctstate RELATED,ESTABLISHED ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 /* kubernetes 转发 conntrack pod 目标规则 */ ctstate RELATED,ESTABLISHED 链 KUBE-KUBELET-CANARY (0 引用) 目标 prot opt 源目标 链 KUBE-PROXY-CANARY (0 引用) 目标 prot opt 源目标 链 KUBE-SERVICES(2 个参考) 目标 prot opt 源目标 REJECT tcp -- 0.0.0.0/0 10.43.54.73 /* kube-system/metrics-server 没有端点 */ tcp dpt:443 reject-with icmp-port-unreachable REJECT tcp -- 0.0.0.0/0 10.43.0.10 /* kube-system/kube-dns:metrics 没有端点 */ tcp dpt:9153 reject-with icmp-port-unreachable REJECT udp -- 0.0.0.0/0 10.43.0.10 /* kube-system/kube-dns:dns 没有端点 */ udp dpt:53 reject-with icmp-port-unreachable REJECT tcp -- 0.0.0.0/0 10.43.0.10 /* kube-system/kube-dns:dns-tcp 没有端点 */ tcp dpt:53 reject-with icmp-port-unreachable 链 ufw-after-forward (1 参考) 目标 prot opt 源目标 输入后链 ufw(1 个参考) 目标 prot opt 源目标 链 ufw-after-logging-forward (1 参考) 目标 prot opt 源目标 链 ufw-after-logging-input (1 参考) 目标 prot opt 源目标 链 ufw-after-logging-output (1 参考) 目标 prot opt 源目标 输出后链 ufw(1 参考) 目标 prot opt 源目标 链 ufw-before-forward (1 参考) 目标 prot opt 源目标 链 ufw-before-input (1 参考) 目标 prot opt 源目标 链 ufw-before-logging-forward (1 参考) 目标 prot opt 源目标 链 ufw-before-logging-input (1 参考) 目标 prot opt 源目标 链 ufw-before-logging-output (1 参考) 目标 prot opt 源目标 链 ufw-before-output (1 参考) 目标 prot opt 源目标 链 ufw-reject-forward (1 参考) 目标 prot opt 源目标 链 ufw-reject-input (1 参考) 目标 prot opt 源目标 链 ufw-reject-output (1 参考) 目标 prot opt 源目标 链 ufw-track-forward (1 参考) 目标 prot opt 源目标 链 ufw-track-input (1 参考) 目标 prot opt 源目标 链 ufw-track-output (1 参考) 目标 prot opt 源目标我对网络方面的知识真的不是很了解,但我想 K3S 仍然有一些剩余的配置,因为我可能未能从我的系统中删除 kubernetes 发行版。如您所见,列出 iptables 规则时,还剩下一些可疑的 KUBE- 过滤器。
有人知道如何解决这个问题吗?
>>更新
似乎只有 apache2 正在监听端口 80 和 443,因为 sudo ss -ltnp 给了我这个结果:
也许某些防火墙阻止了访问?我已经禁用了 ufw,并且端口也通过 iptables 打开。
我也注意到了,在执行 nmap localhost 时得到以下信息:
2021-11-20 19:55 CET 开始 Nmap 7.80 ( https://nmap.org ) send_ip_packet_sd 中的 sendto: sendto(4, packet, 44, 0, 127.0.0.1, 16) => 无效参数 违规数据包:TCP 127.0.0.1:54146 > 127.0.0.1:443 S ttl=56 id=15766 iplen=44 seq=1065797325 win=1024 send_ip_packet_sd 中的 sendto: sendto(4, packet, 44, 0, 127.0.0.1, 16) => 无效参数 违规数据包:TCP 127.0.0.1:54146 > 127.0.0.1:80 S ttl=55 id=5390 iplen=44 seq=1065797325 win=1024 send_ip_packet_sd 中的 sendto: sendto(4, packet, 44, 0, 127.0.0.1, 16) => 无效参数 违规数据包:TCP 127.0.0.1:54147 > 127.0.0.1:80 S ttl=54 id=43682 iplen=44 seq=1065862860 win=1024 send_ip_packet_sd 中的 sendto: sendto(4, packet, 44, 0, 127.0.0.1, 16) => 无效参数 违规数据包:TCP 127.0.0.1:54147 > 127.0.0.1:443 S ttl=41 id=63761 iplen=44 seq=1065862860 win=1024【问题讨论】: