我正在尝试在 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 部分打开另一个主题。谢谢。