尝试在 Ubuntu 18.04 服务器上打开端口 - 我遗漏了一些东西

尝试在 Ubuntu 18.04 服务器上打开端口 - 我遗漏了一些东西

我正在尝试在 Ubuntu 18.04 Server vm 上打开端口 30080,但看到了一些令人困惑的结果。

iptables 输出

ubuntu@k8-master:~$ sudo iptables -v -x -n -L
[sudo] ubuntu 的密码:
链输入(策略接受 289 个数据包,98798 字节)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
    3919 272820 KUBE-SERVICES 全部 -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 服务门户 */
    3919 272820 KUBE-EXTERNAL-SERVICES 全部 -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 外部可见服务门户 */
  846424 164692436 KUBE-FIREWALL 全部 -- * * 0.0.0.0/0 0.0.0.0/0

链 FORWARD(策略 DROP 0 个数据包,0 字节)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
       0 0 KUBE-FORWARD all -- * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes 转发规则 */
       0 0 KUBE-SERVICES 全部 -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 服务门户 */
       0 0 DOCKER-USER 全部 -- * * 0.0.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 接受全部 -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate 相关,已建立
       0 0 DOCKER 全部 -- * docker0 0.0.0.0/0 0.0.0.0/0
       0 0 接受全部 --docker0 !docker0 0.0.0.0/0 0.0.0.0/0
       0 0 接受全部 --docker0 docker0 0.0.0.0/0 0.0.0.0/0
       0 0 接受全部 -- * * 10.244.0.0/16 0.0.0.0/0
       0 0 接受全部 -- * * 0.0.0.0/0 10.244.0.0/16

链输出(策略接受 281 个数据包,145464 字节)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
    6870 412563 KUBE-SERVICES 全部 -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW /* kubernetes 服务门户 */
  846213 192244364 KUBE-FIREWALL 全部 -- * * 0.0.0.0/0 0.0.0.0/0

Chain DOCKER (1 引用)
    pkts 字节数 目标 协议 选择加入 退出 源 目标

链 DOCKER-ISOLATION-STAGE-1 (1 个引用)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
       0 0 DOCKER-ISOLATION-STAGE-2 全部 --docker0 !docker0 0.0.0.0/0 0.0.0.0/0
       0 0 返回全部 -- * * 0.0.0.0/0 0.0.0.0/0

链 DOCKER-ISOLATION-STAGE-2(1 个引用)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
       0 0 全部删除 -- * docker0 0.0.0.0/0 0.0.0.0/0
       0 0 返回全部 -- * * 0.0.0.0/0 0.0.0.0/0

Chain DOCKER-USER (1 个引用)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
       0 0 返回全部 -- * * 0.0.0.0/0 0.0.0.0/0

链 KUBE-EXTERNAL-SERVICES(1 个引用)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
       0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 /* robot-shop/web:8080 没有端点 */ ADDRTYPE 匹配 dst-type LOCAL tcp dpt:30080 拒绝 icmp-port-unreachable

链 KUBE-FIREWALL(2 个引用)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
       0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes 防火墙用于丢弃标记数据包 */ 标记匹配 0x8000/0x8000

链 KUBE-FORWARD (1 个引用)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
       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 /* kubernetes 转发规则 */ 标记匹配 0x4000/0x4000
       0 0 接受全部 -- * * 10.0.0.0/16 0.0.0.0/0 /* kubernetes 转发 conntrack pod 源规则 */ ctstate RELATED,ESTABLISHED
       0 0 接受全部 -- * * 0.0.0.0/0 10.0.0.0/16 /* kubernetes 转发 conntrack pod 目标规则 */ ctstate RELATED,ESTABLISHED

链 KUBE-SERVICES(3 个引用)
    pkts 字节数 目标 协议 选择加入 退出 源 目标
       0 0 拒绝 tcp -- * * 0.0.0.0/0 10.96.93.102 /* robot-shop/cart:8080 没有端点 */ tcp dpt:8080 拒绝 icmp 端口不可达
       0 0 拒绝 tcp -- * * 0.0.0.0/0 10.111.89.174 /* robot-shop/web:8080 没有端点 */ tcp dpt:8080 拒绝 icmp 端口不可达

此外,ufw 显示端口为打开:

sudo ufw status
Status: active

To               Action      From
--               ------      ----
30080            ALLOW       Anywhere
30080/tcp        ALLOW       Anywhere

Netstat 还显示处于“监听”模式的端口:

netstat -talpn | grep 30080
tcp6    0    0 :::30080      :::*           LISTEN      -

所以我不确定为什么 nmap 仍然显示端口已过滤:

nmap -Pn localhost -p 30080 
PORT      STATE    SERVICE
30080/tcp filtered unknown

如果我从远程机器尝试,nmap 显示为关闭:

PORT      STATE  SERVICE
30080/tcp closed unknown

不知道接下来要去哪里。

答案1

经过一番研究,我认为这是 kubernetes 的问题。似乎 kube-proxy 添加了以下行:

/* robot-shop/web:8080 没有端点 */ ADDRTYPE 匹配 dst-type LOCAL tcp dpt:30080 拒绝 icmp-port-unreachable

所以我想我会关闭这个主题并在 kubernetes 部分打开另一个主题。谢谢。

相关内容