文档章节

Troubleshooting(三):网络

诸葛孔明亮
 诸葛孔明亮
发布于 2016/10/27 18:16
字数 1883
阅读 16
收藏 0

前言

    在 Troubleshooting 过程中,检查完进程信息后,接下来就是排查网络情况的时候了,初略翻过《TCP/IP 详解卷一:协议》这本书,简直跟看《深入理解 Linux 内核》一毛一样,各种协议各种底层结构体,每个域代表不同的意思,许许多多的域组合在一起共同控制着网络和内核。

    Troubleshooting 系列仅仅整理工具和排查问题可能用到的命令,尽量不细述底层概念(功力有限我也写不出来)。

    curl netstat iptables network ifconfig ip地址配置 traceroute telnet ping lsof iftop(top系列)vpn tcpdump 等抓包,和各种网络攻击(后续单独整理)

 

网络状态

 

  • netstat

    显示网络相关信息(网络连接、路由表、接口状态等)

    常见的参数:

    -a    显示所有连接中的 socket

    -c    持续列出网络状态

    -n    尽量把别名转换成数字显示

    -o    显示计时器

    -p    显示正在使用 socket 的程序识别码和程序名称

    -i    显示网卡列表

    -s    显示网络统计信息

    -v    显示指令执行过程,与 -p 不可同用

    -t/u    tcp/udp 连接状况

 

    netstat 的输出结果可分为两个部分:

    1、Active Internet connections:有源 TCP 连接,列中 Recv-Q 和 Send-Q 为接受队列和发送队列,如果没有堆积一般都为 0。

    2、Active UNIX domain sockets:有源 Unix 域套接口(只能用于本机通信,性能较高),RefCnt 表示连接到套接口的进程号。

    套接口的类型:TCP、UDP、RAW、UNIX 域 等

    状态:

    LISTEN:处于监听状态
    ESTABLISHED:表示打开的一个连接
    SYN-SENT:发送连接请求后等待匹配的状态
    SYN-RECEIVED:收到和发送一个连接请求后等待对方确认连接请求
    FIN-WAIT-1:等待远程 TCP 连接中断请求,或之前的连接中断请求确认
    FIN-WAIT-2:从远程 TCP 等待连接中断请求
    CLOSE-WAIT:等待从本地用户发来的连接中断请求
    CLOSING:等待远程 TCP 对连接中断的确认
    LAST-ACK:等待原来的发向远程 TCP 的连接中断请求的确认
    TIME-WAIT:等待足够的时间以确保远程 TCP 接收到连接中断请求的确认
    CLOSED:没有任何连接状态

 

    通过 netstat 可以查看连接本机的ip,通过 uniq 可以统计出连接 ip 的数量。

        

  • curl

    curl 是一款用于上传下载的传输工具,支持 http/https/ftp/imap/pop3 等协议,同时也支持断点续传,功能十分强大。

    PS:本人用的最多的是在无图形界面的 linux 上测试网页状态,将网页输出到界面上:

    curl http://www.baidu.com

    -o:保存网页至指定文件
    -O:保存服务器上指定文件,url 需要明确指定文件名
    -C/--continue-at:断点续传,可指定位置获取数据,假设文件大小为1000字节,-C 100 代表获取 100-999 的数据
    -r:分块下载,类似于 -C,可以使用区间,-r 0-1024 代表获取 0-1024 的数据,cat part* > all 即可以合并
    -T/--upload-file:上传,-T "file[1-100].txt" ftp://myserver.com/upload/、-T "{file1.txt, file2.txt}" http://myserver.com
    -d/--data:post 请求,-d "id=1&name=test" http://myserver.com/example.php
    -F/--form:上传,-F "password=@/etc/passwd" www.mypasswords.com
     -e/--referer:伪造 referer(盗链),服务器一般会检查 http 请求的 referer,用于控制访问,也就是告诉服务器你是从哪个页面跳转过来的,-e "www.baidu.com" http://www.baidu.com 告诉服务器你是从 www.baidu.com 跳转过来的
    -A/--user-agent:定义 user agent,伪装成一个指定的浏览器,-A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)http://www.baidu.com
    -b/--cookie:有的网站会查看 cookie 信息来判断是否按规定浏览,-b /cookie.txt http://www.baidu.com 使用本地 cookie.txt 里的 cookie 信息来访问,也可以输入参数和值:-b "name=wade" http://www.baidu.com
    -c/--cookie-jar:保存操作时生成的 cookie 文件,-c ./cookie.txt http://www.baidu.com
    -w/--write-out:自定义输出内容,-w %{http_code} -w "time=%{time_total}\n" http://www.baidu.com 打印返回的 http 码和响应时间,还有很多参数可以打印。
    -u/--user: <user[:password]> 用户名和密码,curl -O -u username:passwd ftp://www.linux.com/file.txt 从 ftp 服务器下载文件(也可以 curl -O ftp://username:passwd@www.linux.com/file.txt)
     -x/--porxy:上网很多时候需要用到代理服务器,-x 192.168.1.1:8080 http://www.baidu.com 使用代理服务以及端口访问
    -s/--silent:静音模式

 

    当然,curl 还有很多别的功能,只是列了几个常用的选项,附上一个写的不错的博客:http://www.ruanyifeng.com/blog/2011/09/curl.html,可参考。

 

  • iptables

    可参考《2小时玩转 iptables》pdf

    ipset 是 iptables 的扩展,允许创建一个匹配整个地址的地址集合,而 iptables 仅仅支持线性存储和过滤,地址集合可提高查找的速率。

    #iptables + ipset:centos 默认没有安装 iptables 和 ipset
    yum install iptables-services ipset
    #创建一个新的 ipset,ipset 默认可存储 65536 个 element,可通过选项 maxelem 修改数量
    ipset create my_ipset hash:nat (maxelem 65536)
    #查看以创建的 ipset 
    ipset list
    #添加一个ip 到 ipset 中
    ipset add my_ipset 192.168.1.1
    #从 ipset 中去除一个 ip
    ipset del my_ipset 192.168.0.1
    #在创建 iptables 规则链时使用 ipset
    iptables -I INPUT -m set --match-set my_ipset src -p tcp --destination-port 22 -j DROP
    #删除 ipset
    ipset destroy my_ipset
    #将 ipset 规则保存到文件
    ipset save my_ipset -f my_ipset.txt
    #从文件中导入 ipset 规则
    ipset restore -f my_ipset.txt

    ipset 支持动态修改地址集合,哪怕 iptables 正在使用这个集合,这样在生产环境上面就可以很好的管理黑名单列表,而不用重启 iptables 了。

 

  • telnet

    telnet 是一款基于 telnet 协议的远程工具,Telnet 协议是 TCP/IP 协议家族中的一员,是一个远程登录服务的标准协议,但是由于 telnet 采用明文传送报文,没有使用公钥私钥加密,所有大都服务器都没有开放 telnet 服务,而使用加密的ssh 方式。

    一般使用 telnet 大都是检查远程服务器的某个端口是否能访问。

    telnet 192.168.0.1 22

    Telnet 实例还可以将键盘连接到某个目标 TCP 端口,并将此 TCP 端口输出回送到显示屏上,它几乎可以连接所有的 TCP 服务器,包括 HTTP 服务器。

    通过 Telnet 程序直接与 Web 服务器进行对话,通过 Telnet 可以打开一条到某台机器上某个端口的 TCP 连接,然后直接向那个端口输入一些字符,Web 服务器会将 Telnet 程序做为一个 Web 客户端来处理,所有回送给 TCP 连接的数据都会显示在屏幕上。

    步骤:

    1、首先,向 DNS 服务器查找 www.joes-hardware.com 的 IP 地址,打开一条到目标服务器端口 80 的 TCP 连接,当然 Telnet 会为我们完成这些。
    2、在完成打开一条 TCP 连接后,Telnet 会输出三行内容,告诉我们已经建立了连接。
    3、接下来就要输入 HTTP 请求了
    4、请求结束后(由一行空行表示),服务器会在一条 HTTP 响应中将内容返回并关闭连接。

    输出:

    Telnet 虽然可以很好的模拟 HTTP 客户端,但是并不能作为服务器使用,而且 Telnet 做自动化很繁琐,可以使用 nc(netcat)方便的操纵基于 TCP 和 UDP 的流量(包括 HTTP)

 

 

 

 

 

 

 

 

    

        

 

 

 

 

 

    

    

    

 

 

 

 

 

 

 

 

    

© 著作权归作者所有

共有 人打赏支持
诸葛孔明亮
粉丝 2
博文 64
码字总数 53931
作品 0
浦东
运维
Tails 2.10 正式版发布,内建因特网匿名访问的 Linux 发行版

Tails 2.10 正式版发布,Tails 是基于Debian的自启动光盘或USB发行,其目标是为用户提供完整的因特网匿名功能。该发行装备了一些因特网应用程序,包括网页浏览 器、IRC客户端、邮件mail客户端...

红薯
2017/01/25
644
7
基于VMware vSphere 5 企业虚拟化部署之四:安装ESXi 5

基于VMware vSphere 5 企业虚拟化部署之四:安装ESXi 5 作者:杨坚 一、VMware Esxi 5.0不需要宿主机,直接在服务器上安装。对硬件有一些要求,CPU 必须支持64还需要支持Intel的VT技术或者A...

yaabb163
06/26
0
0
Mozilla SeaMonkey 2.1 Alpha 1

SeaMonkey(大陆有时译作“海底猿人”,台湾有时译作“海猴子”,但SeaMonkey仍是中文通用名称)是一个自由的开放源代码以及跨平 台的网络包,并且由Mozilla基金会建构,之后转由旗下的SeaMo...

红薯
2010/05/19
113
0
Spark 学习资源收集

(一)spark 相关安装部署、开发环境 1、Spark 伪分布式 & 全分布式 安装指南 http://my.oschina.net/leejun2005/blog/394928 2、Apache Spark探秘:三种分布式部署方式比较 http://dongxic...

openthings
2016/05/29
164
0
CentOS 7.0系统安装配置图解教程

原文出处:http://www.osyunwei.com/archives/7829.html 来源:系统运维 CentOS 7.0系统安装配置图解教程 服务器相关设置如下: 操作系统:CentOS 7.0 64位 IP地址:192.168.21.128 网关:1...

Kernalzcy
2014/07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kali Linux Docker 練習

docker pull kalilinux/kali-linux-docker docker run -t -i kalilinux/kali-linux-docker /bin/bash apt-get update apt-get install htop apt-get install nmap apt-get install wpscan ap......

BaiyuanLab
15分钟前
0
0
通俗大白话来理解TCP协议的三次握手和四次分手

最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就...

onedotdot
20分钟前
1
0
TiDB 在爱奇艺的应用及实践

爱奇艺,中国高品质视频娱乐服务提供者,2010 年 4 月 22 日正式上线,推崇品质、青春、时尚的品牌内涵如今已深入人心,网罗了全球广大的年轻用户群体,积极推动产品、技术、内容、营销等全方...

TiDB
24分钟前
0
0
Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
3
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部