大家好,小宜来为大家讲解下。wireshark,中文版,wireshark中文版抓包这个很多人还不知道,现在让我们一起来看看吧!
【一天一个Linux运维知识点】 -- 关注我,持续学习Linux运维技能!
wireshark工具
也许你在Windows下使用过wireshark这个抓包工具,它的功能非常强大。在Linux平台我们同样也可以使用它,只不过是以命令行的形式。wireshark的具体选项阿铭不再详细介绍,在日常工作中,tcpdump其实就已经够我们使用了。下面的用法是阿铭在工作中使用比较多的,希望你能掌握这些用法。
# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
我们要执行的命令是tshark,你的CentOS默认是没有这个命令的,请使用如下命令安装:
# yum install -y wireshark
然后再看看上面的抓包命令tshark,这条命令用于Web服务器,可以显示如下信息:
Jun 26, 2022 09:11:44.017592529 CST" 116.179.32.105 ask.apelearn.com
GET /question/96924473532
这类似于Web访问日志。若服务器没有配置访问日志,可以临时使用该命令查看一下当前服务器上的Web请求。在这里要注意的是,如果你的机器上没有开启Web服务,是不会显示任何内容的。
# tshark -n -i eth1 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"
上面的命令会抓取eth1网卡mysql的查询都有哪些,不过这种方法仅仅适用于mysql的端口为3306的情况,如果不是3306,请使用下面的方法:
# tshark -i eth1 port 3307 -d tcp.port==3307,mysql -z "proto,colinfo,mysql.query,mysql.query" // 这是一行命令,并非换行
坑货,照着官方文档研究 trino 的多用户认证,竟是费了一番周折。
我们是在做数据仓相关的产品,想通过 trino 做实时交互式分析查询,于是调研了一下trino的多用户、多权限的支持。
trino的前身是presto,大概去年年底吧,从presto分离出来的,各种恩怨,大家自己去查吧。
从官网看,trino要支持多用户的一个前提是先要支持https,而trino支持https有两种方式:
1. trino server本身支持https;
2. trino server的前面挂一个https proxy(参考自官网资料);
我们的环境是kubernetes环境,里面有nginx 提供https 代理,自然而然就选择了第二种方式。结果就入到坑里去了,死活不通:提示403错误。
想在client端使用wireshark抓包分析吧,因为是https,也没有证书,根本看不到通信细节。
在trino pod里抓包吧,很不巧,这个pod不支持kubectl sniff抓包,太难了!!!
后来只能分析加猜测,我发现trino cli 报403错误的时候,trino server居然没有日志输出,这很不正常:稍微成熟一点的程序猿都不会犯这样的错误,一定是有别的原因,,,那就是403不是trino返回的,而是,,,外层的https代理返回的???
这样解释就说得通了。
虽然官网宣称可以通过https proxy支持https,但这是针对trino cli的,对于trino server,其实还是http(https 转为http),所以本质上trino server还是不支持https。
所以,解决的办法也很明显了,就是让trino server本身支持https!
找到了问题的原因,解决就很简单了,自签https证书,然后配置到trino server和trino cli, 测试通过!
奶奶的,解气。
谈谈Kubernetes的Service注册发现以及Service访问全过程,分为三个部分:
1. Service注册
Pod发布的时候,kubelet负责创建Pod并把Pod的IP地址注册到Apiserver(最终会保存到Etcd,详情请参专栏“2.1 Kubernetes list-watch原理和wireshark抓包验证”一节);
Service发布的时候,Kubernetes会为Service分配ClusterIP,并把ServiceName和ClusterIP的对应关系记录到Etcd里,同时也会记录ClusterIP和PodIP的对应关系
2. 服务发现和负载均衡
每个Kuberntes节点上都运行Kube-Proxy组件,Kube-Proxy组件会监听Apiserver,并得到Service的ClusterIP和PodIP的映射列表。得到ClusterIP和PodIP的映射列表之后,通过负载均衡算法就可以得到某一个PodIP。
3. 访问Service
通过2这一步骤,在Kuberntes内部访问某个Service的过程,最后就变成了访问某一个PodIP的过程,而Kubernetes里任何Pod之间都是可以通信的(请参考专栏“6.3.4 K8S Flannel实现不同Node的Pod和Pod之间通信的细节”一节)。考虑到Kubernetes集群里复杂的网络环境,Pod和Pod之间的通信还使用到了Linux iptables的机制,请参考“6.4.2 为什么访问任何一个node的port都可以访问到k8d的相应的service?”一节。
通过以上三步的分析,最终我们就可以访问到某个Service的服务了。
五一特价,【最后一天】。小简感谢大家的一贯支持:凡【4.23~5.1】期间订阅本专栏,前【30】名用户可享79元特价。
5月1号之后恢复原价99元。
#程序员# #Kubernetes# #运维# #IT# #Docker# #我要上头条#
本文wireshark,中文版,wireshark中文版抓包到此分享完毕,希望对大家有所帮助。